damson
damson

Reputation: 2645

Generate unique token from specific variable

How would you generate a unique token from a specific variable like a device id (string) to secure a rails api ?

I am looking for something like:

SecureRandom.hash_algo(deviceId)

Upvotes: 1

Views: 1178

Answers (2)

You can generate a random token with this:

token = SecureRandom.urlsafe_base64(nil, false)

EDIT:

require 'digest/sha1'
Digest::SHA1.hexdigest deviceId

Upvotes: 2

Simone Carletti
Simone Carletti

Reputation: 176352

If the string must be a digest of an input, rather than a random string, you can use the Digest library to generate a hash. A few examples can be found in this answer

require 'digest/sha2'
Digest::SHA2.hexdigest(deviceId)

Otherwise, the SecureRandom library has a bunch of methods to generate random strings.

Hexadecimal string.

p SecureRandom.hex(10) #=> "52750b30ffbc7de3b362"
p SecureRandom.hex(10) #=> "92b15d6c8dc4beb5f559"
p SecureRandom.hex(13) #=> "39b290146bea6ce975c37cfc23"

Base64 string.

p SecureRandom.base64(10) #=> "EcmTPZwWRAozdA=="
p SecureRandom.base64(10) #=> "KO1nIU+p9DKxGg=="
p SecureRandom.base64(12) #=> "7kJSM/MzBJI+75j8"

Binary string.

p SecureRandom.random_bytes(10) #=> "\016\t{\370g\310pbr\301"
p SecureRandom.random_bytes(10) #=> "\323U\030TO\234\357\020\a\337"

Upvotes: 1

Related Questions