我有一个使用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