从特定变量生成唯一标记

时间:2014-11-05 22:29:20

标签: ruby-on-rails ruby

如何从特定变量(如设备ID(字符串))生成唯一标记以保护rails api?

我正在寻找类似的东西:

SecureRandom.hash_algo(deviceId)

2 个答案:

答案 0 :(得分:2)

您可以使用以下方法生成随机令牌:

token = SecureRandom.urlsafe_base64(nil, false)

编辑:

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

答案 1 :(得分:1)

如果字符串必须是输入的摘要,而不是随机字符串,则可以使用Digest库生成哈希。可以找到一些示例in this answer

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

否则,SecureRandom库有许多方法可以生成随机字符串。

十六进制字符串。

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

Base64字符串。

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

二进制字符串。

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