11

框架使用什么样的算法Asp.Net Identity来加密密码?我有一个场景,其中 android、iPhone、web 和桌面使用相同的数据库。这个密码应该是加密的,所以ASP.NET MVC我使用了身份框架来加密密码。现在我需要该算法适用于所有平台。

任何帮助将不胜感激。

提前致谢。

4

2 回答 2

20

ASP.NET Identity 使用由Rfc2898DeriveBytes. 它是一种哈希算法。

请注意,加密和散列是不同的

public static string HashPassword(string password)
{
    byte[] salt;
    byte[] bytes;
    if (password == null)
    {
        throw new ArgumentNullException("password");
    }
    using (Rfc2898DeriveBytes rfc2898DeriveByte = new Rfc2898DeriveBytes(password, 16, 1000))
    {
        salt = rfc2898DeriveByte.Salt;
        bytes = rfc2898DeriveByte.GetBytes(32);
    }
    byte[] numArray = new byte[49];
    Buffer.BlockCopy(salt, 0, numArray, 1, 16);
    Buffer.BlockCopy(bytes, 0, numArray, 17, 32);
    return Convert.ToBase64String(numArray);
}
于 2014-07-15T05:45:41.433 回答
1

这取决于所选的兼容模式。

实现细节可以在他们的Github repo中找到

目前他们支持:

第 2 版

  • 带有 HMAC-SHA1 的 PBKDF2,128 位盐,256 位子密钥,1000 次迭代
  • 格式:{ 0x00, salt, subkey }

第 3 版

  • 带有 HMAC-SHA256 的 PBKDF2,128 位盐,256 位子密钥,10000 次迭代。
  • 格式:{ 0x01, prf (UInt32), iter count (UInt32), salt length (UInt32), salt, subkey } (所有 UInt32 都是大端存储的。)
于 2021-05-11T10:31:45.873 回答