2016-05-20 71 views
-1

給定一個密碼哈希一樣,如何檢查crypt(3)sha512的密碼?

$6$rounds=500000$RzOKKJIKZ18arhBR$E2JyKkCOZZXva89rAzvQOZxL1rZ.1wt9uC4yEVr0YkZkTbpi1bd7QBexgpbbc5qI4NvntJQAlrYSPg2bSvVr5/ 

而一個純文本的密碼,我怎麼能確認該密碼在Node.js的散列相匹配?

到目前爲止,我已經嘗試了三種不同的庫,並且它們都不支持$6$。官方的加密庫似乎支持sha512,但createHash方法不會像這樣的鹽。

我正在使用節點6.2。密碼是使用PHP的crypt函數創建的,我相信它只是C library function的一個包裝。

+0

來自[PHP doc](http://php.net/manual/en/function.crypt.php):* CRYPT_SHA512 - 帶有16字符鹽的SHA-512哈希,前綴爲** $ 6 $ **。如果salt字符串以'rounds = $'開頭,則N的數值用於指示應該執行散列循環的次數,非常類似Blowfish的成本參數。默認輪次數爲5000,最小值爲1000,最大值爲999,999,999。任何超出此範圍的N將被截斷到最接近的極限。* – zaph

+0

@zaph正確的...我讀過所有這些。我嘗試將哈希字符串拆分並通過各種加密函數運行它,但是我無法再現完全相同的哈希,因此我無法驗證我的密碼。我不確定PHP使用哪種加密方法...是pbkdf2,還是隻是重複哈希或其他? – mpen

+0

這是使用完全定義的算法的問題。最好拿到代碼並弄清楚。 – zaph

回答