MembershipProvider(或 Membership 实例)上是否有任何方法可以用来获取散列密码本身?我不是要进行恢复,也不是要查找实际密码,我只需要散列字符串。
另外,当我使用它时,我能否获得用于创建该哈希的确切算法名称(如 SHA1 或 MD5)?
MembershipProvider(或 Membership 实例)上是否有任何方法可以用来获取散列密码本身?我不是要进行恢复,也不是要查找实际密码,我只需要散列字符串。
另外,当我使用它时,我能否获得用于创建该哈希的确切算法名称(如 SHA1 或 MD5)?
不,我找不到任何返回 HashedPassword 的方法。即使你得到了HashedPassword,你仍然需要salt。
默认哈希算法是 salted base64 SHA1
。
public string EncodePassword(string pass, string saltBase64)
{
byte[] bytes = Encoding.Unicode.GetBytes(pass);
byte[] src = Convert.FromBase64String(saltBase64);
byte[] dst = new byte[src.Length + bytes.Length];
Buffer.BlockCopy(src, 0, dst, 0, src.Length);
Buffer.BlockCopy(bytes, 0, dst, src.Length, bytes.Length);
HashAlgorithm algorithm = HashAlgorithm.Create("SHA1");
byte[] inArray = algorithm.ComputeHash(dst);
return Convert.ToBase64String(inArray);
}