我們正在將我們的用戶驗證從提供的.NET實現遷移到我們自己的系統。重現SqlMembershipProvider密碼哈希
我們希望能夠支持aspNet_Membership表中存在的舊密碼。
Password和Salt駐留在該表中,因此理論上我們可以重新計算SqlMembershipProivder正在使用的散列。
但是,我似乎無法找到任何描述正在使用的算法。接受會員提供商告訴我它正在使用HMACSHA256來計算哈希值。
但是,存儲的密碼散列長度爲20個字節,告訴我他們必須做的不僅僅是計算密碼和salt的sha256散列。
會員供應商能說謊嗎?它是在封面下使用SHA1還是RIPEMD?或者,如果我只能訪問他們正在使用的加密提供程序,那麼我只需將舊密碼和鹽傳遞給它即可......我不一定需要重新發明輪子。
謝謝你注意到的哈希長度!我一直在努力重現哈希整天。 SHA1哈希值是20個字節。你的觀察導致我只是嘗試使用SHA1來進行手動散列。果然,它匹配我的MembershipProvider,它聲稱它使用HMACSHA256('Membership.HashAlgorithmType' =「HMACSHA256」),生成!進展。現在唯一的問題是,「WTF?」 – xr280xr