我有一個使用ASP.NET 2.0構建的遺留Web應用程序。在此應用程序中實現了一個用戶註冊過程,用戶名和密碼存儲在SQL Server數據庫中。密碼按照預期進行散列處理。雖然我不是一個非常有經驗的.NET程序員,但我猜測System.Security.Cryptography程序集可以完成這項工作。哪種散列算法可以使用.NET,我可以使用java對這些散列執行密碼檢查
現在我們希望重用這個用戶數據庫用於其他服務(基本上SAML Identity Proider將是理想的)。我想使用Mule ESB和Java Code的組合來做到這一點,但是我是否有機會像使用.NET一樣在Java中散列密碼並在我的用戶數據庫中檢查這個散列?有沒有人做過這個?
編輯:我已經進一步調查了舊版應用程序。我使用密碼「stackoverflow」創建了一個'Testuser'。在數據庫中,我有兩個字段,一個名爲「Password」,一個名稱爲「EncryptionToken」。
對於上面 '計算器' 的憑據變得
密碼:F545C9A2670C9C261C657CC48AA8F91F284DD824B8142466DB7370FF4A30D741 SecurityToken:TN + nms4 =
以用於存留用戶密碼的代碼看起來是這樣的:
public void SetEncryptedPassword(Account user, string password)
{
user.SecurityToken = CryptoProviderBase.GenerateRandomSalt();
var hash = new SHA256HashBuilder { Text = password, Salt = user.SecurityToken };
user.Password = hash.CalculateHash();
}
所以哈希似乎是一個隨機鹽SHA256哈希是存儲在SecurityToken中。
不幸的是,我不能(不知道)如何在Java中重現這一點。你能給我一些提示嗎?
你需要找出.NET使用的加密算法。但是,在java中很難解密。 – Ved
請看這裏:http://stackoverflow.com/questions/1700702/asp-net-membership-saves-changed-password-as-plain-text-even-with-hashed-passwor – Alexander