c# - Asp.net 身份哈希安全吗?

标签 c# asp.net encryption hash rijndael

我在以下网址中引用了以下网站的 Rijndael 和 Asp.net 哈希实现。

  1. Rijndael - How to generate Rijndael KEY and IV using a passphrase?
  2. Asp.net 哈希 - ASP.NET Identity default Password Hasher, how does it work and is it secure?

在这两个实现中, 以下用于获取密码的随机字节。 RijnDael

Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(password, SALT);

Asp.net 身份哈希

Rfc2898DeriveBytes bytes = new Rfc2898DeriveBytes(providedPassword, salt, HasingIterationsCount)

在上述代码之后,RijnDael 对返回的字节进行加密。 但是 asp.net 身份复制结果,因为它与盐字节数组一样,并返回散列键。

这里我有一个困惑。 RijnDael 和 Asp.net 身份哈希使用相同的 Rfc2898DeriveBytes

当 RijnDael 可以解密加密 key (这是在 Rfc2898DeriveBytes 的帮助下完成)时,为什么我们可以解密 Asp.net Identity 哈希 key ?

有可能这样做吗? Asp.net 身份安全吗?

最佳答案

是的,ASP.NET 的密码哈希方法是安全的。

在您提供的示例中,用户正在使用一种称为“高级加密标准”(AES,也称为 Rijndael)的加密技术。这就是 secret 可以被解密的原因。

用户仅使用 Rfc2898DeriveBytes 类即可获取 key和一个initialisation vector .

该类不用于散列 secret 消息。加密是隐藏消息的方法。

ASP.NET 使用 Rfc2898DeriveBytes 类对密码进行哈希处理。此过程无法逆转。

关于c# - Asp.net 身份哈希安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40012839/

相关文章:

android - IV 用于加密转换。预期 IV 长度为 16 但实际为 24

excel - 如何从 VBA 在 Excel 2010 中创建安全受密码保护的 .xls 文件

c# - 发送 RPC 添加 playerName

c# - 如何将异常标记为已记录(并且只记录一次)?

c# - 从 float 到 double 并返回到 float 的转换不会丢失精度

c# - 如何避免在每个 Controller 中重复一个参数?

c# - 如何在不迁移的情况下在 Visual Studio 中打开项目?

asp.net - 如何在 ASP.NET 的服务器端获取输入值(输入文本)?

asp.net - dd-MMM-yyyy 中的 JQgrid 日期格式

python - pyaes和Python 3中byte和str的关系?