我正在GoLang中使用我的授權模塊。在我們使用PHP5的crypt函數之前。散列生成像SHA-512:在Go中生成crypt()sha512哈希
$6$rounds=5000$usesomesillystri$D4IrlXatmP7rx3P3InaxBeoomnAihCKRVQP22JZ6EY47Wc6BkroIuUUBOov1i.S5KPgErtP/EN5mcO.ChWQW21
並存儲在數據庫中。但現在我需要在GoLang中使它工作。我在Google上搜索過並嘗試過不同的東西,例如:
t512 := sha512_crypt.Crypt("rasmuslerdorf", "$6$usesomesillystringforsalt$")
fmt.Printf("hash: %v\n", t512)
但是所有的東西都會生成不同的東西。誰可以進一步幫助我們?
我們想驗證並創建像PHP版本的哈希。
在此先感謝。
PHP版本的外觀如何?在這裏發佈的示例中,您將哈希看起來像是您之後生成的字符串的開頭。你應該(可能)對salt + password進行哈希處理,然後追加$ 6 $ rounds $ salt $。您還需要引入一個循環來實際使用輪迴號碼。 – JimL 2014-10-05 06:55:42
如果不需要與現有哈希兼容,請不要使用SHA-512,請使用Go的bcrypt庫(http://godoc.org/code.google.com/p/go.crypto/bcrypt)。 SHA-512作爲一種合適的密碼散列函數還有很長的路要走。 – elithrar 2014-10-06 03:04:55
目前我們堅持SHA-512哈希函數。在我們使用md5之前,我們將其更改爲SHA-512。每次用戶登錄系統時,系統都會檢查sha-512哈希是否存在。如果不是,請用md5散列驗證。如果md5散列正確,則使用SHA-512散列進行加密併除去md5散列。這樣我們也可以去更好的功能。 – 2014-10-06 04:38:26