2012-04-23 44 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