2014-11-05 16 views

回答

2

您可以生成这种随机令牌:

token = SecureRandom.urlsafe_base64(nil, false) 

编辑:

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

这将是很好,如果我想生成一个基本的唯一令牌但对我来说我要**设备ID **参与散列 – damson 2014-11-05 22:40:47

+0

所以你不想生成一个唯一的令牌但一个哈希,所以使用像SHA1哈希方法,看看http://stackoverflow.com/questions/34490/how-do-i-create-a-sha1-hash-in-ruby。 – 2014-11-05 22:42:15

+0

实际上它更像是一个随机令牌,以设备ID作为盐散列 – damson 2014-11-05 22:50:15

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"