Reputation: 2645
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
Reputation: 1988
You can generate a random token with this:
token = SecureRandom.urlsafe_base64(nil, false)
EDIT:
require 'digest/sha1'
Digest::SHA1.hexdigest deviceId
Upvotes: 2
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