2012-04-23 48 views
0

我在我的RoR中使用BCrypt,我得到的数字而不是我习惯的十六进制表示。这是刑法典。红宝石BCrypt返回号码

username = params[:username] 
password = params[:password] 

encrypted_password = BCrypt::Password.create(password) 
encrypted_password = encrypted_password.hash 

的encrypted_pa​​ssword可变出来像4245597694343378249.我用BCrypt Java和我期待像$ 2asfa $ asdfasfsafsad号码。我想知道是否有人知道我做错了什么。

任何帮助,非常感谢。

+0

刚一说明,称它是“加密”是不是真的正确,它被散列。 – 2012-04-23 17:40:48

+0

@AndrewMarshall感谢Andrew,我不太清楚其中的差别。我认为这种通俗的区别在于加密有两种方式,其目的是模糊信息,然后再将其转换回明文,而哈希仅仅是一种单向的,独特的功能。 – 2012-04-23 20:45:57

回答

3

作为数字序列出现的密码变量是因为您应用于加密密码的.hash。所以你要调用String#hash方法,它只是根据长度和内容给你一个散列。

如果你想看到你期待只是下面的bcrypt输出:

username = params[:username] 
password = params[:password] 

encrypted_password = BCrypt::Password.create(password) 
puts encrypted_password 

干杯, 肖恩

+0

谢谢肖恩,就是这样。出于某种原因,Ruby中的BCrypt实现似乎比我习惯的更具魔力。你介意告诉我一个会使用密码哈希的字符串的实例吗? – 2012-04-23 20:44:53

+0

我从来没有一个实际用途说实话。我唯一能够使用它的东西就是比较......将数千个字符串存储为它们的.hash,然后检查是否相等,看起来比字符串本身的工作要少。 – Sean 2012-04-23 23:13:22