我的問題是有點毛茸茸的,我可能會問錯了問題,所以請多多包涵......是否可以將40個字符的SHA1哈希轉換爲20個字符的SHA1哈希?
我有一個存儲用戶密碼&鹽爲會員制的傳統MySQL數據庫。這兩個值都被使用Ruby框架散列 - 大致是這樣的:
hashedsalt = 文摘:: SHA1.hexdigest(「 - #{Time.now.to_s} - #{登錄} - - 「)
hashedpassword = 文摘:: SHA1.hexdigest(」 #{hashedsalt}:#{密碼}「)
所以這兩個值被存儲爲40個字符的字符串(VARCHAR(40) )在MySQL中。
現在我需要將所有這些用戶導入到新成員網站的ASP.NET成員資格框架中,該網站使用SQL Server數據庫。我的理解是,我配置ASP.NET成員資格的方式,用戶密碼和salt也存儲在成員資格數據庫(在表aspnet_Membership中)作爲SHA1哈希值,然後進行Base64編碼(有關詳細信息,請參見here)並存儲作爲nvarchar(128)數據。
但是,從存儲的Base64編碼字符串的長度(28個字符)看來,ASP.NET成員資格生成的SHA1哈希長度只有20個字符,而不是40個。從其他閱讀中我一直在做我認爲這與每個字符/字符集/編碼或相關的位數有關。
那麼有什麼方法可以將40個字符的SHA1哈希值轉換爲20個字符的哈希值,然後我可以將其轉換爲新的ASP.NET成員資格數據表?我現在對ASP.NET成員非常熟悉,但我覺得我只是缺少這一塊。然而,也可能知道Ruby中的SHA1和.NET中的SHA1不兼容,所以我正在爲一場失敗的戰鬥而戰......
在此先感謝您的任何見解。
非常有趣,我將在明天嘗試這個。非常感謝。 – ewitch 2010-03-17 23:29:56