gpt4 book ai didi

asp.net - ASP.NET 使用 SHA256 还是 SHA1?

转载 作者:行者123 更新时间:2023-12-04 15:40:56 25 4
gpt4 key购买 nike

我正在使用 ASP.NET 4.5 MVC 和 Entity Framework 提供的默认标识内容。我可以使用密码创建用户,并且散列密码显示在数据库中。我试图弄清楚该哈希是使用不再受信任的 SHA1 算法还是 SHA2 算法(无论是 SHA256、SHA512 等)生成的。

似乎说它默认为 SHA256 的文章:

https://www.asp.net/whitepapers/aspnet4/breaking-changes#0.1__Toc256770148

http://kosmisch.net/Blog/DotNetEssential/Archive/2015/2/1/aspnet-membership-default-password-hash-algorithms-in-net-4x-and-previous-versions.html

似乎说它默认为 SHA1 的文章:

https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/consumer-apis/password-hashing

https://msdn.microsoft.com/en-us/library/system.security.cryptography.rfc2898derivebytes.aspx

当我沿着链向下时,我最终进入 PasswordHasher.cs 类 -> HashPassword() -> Crypto.HashPassword() 我可以看到它使用的是 Rfc2898DeriveBytes,然后有一堆关于 HMACSHA1 的东西。

那么我的密码是否被 SHA256 或 SHA1 散列?默认为 SHA256 的简单方法?

如果有帮助,这是从我的本地环境中获取的虚拟密码:
AIPfkvy5v59jmVZdPpU9QfUMoToCQ+Rp3dBT7m9RwMKZai5/61REkN/0InCtxKPUOQ==

最佳答案

所以看起来答案既不完全是:

来自 ASP.Net Identity Source Code 中的评论

Version 0: PBKDF2 with HMAC-SHA1, 128-bit salt, 256-bit subkey, 1000 iterations.

See also: SDL crypto guidelines v5.1, Part III)

Format: { 0x00, salt, subkey }



最终的散列算法是 SHA1,但它不是简单的密码 SHA1 散列,甚至不是 SHA1 + 盐散列。

值得指出的是,由于数学攻击,SHA1 被认为是数字签名的“破坏”,从而将产生碰撞的计算工作量减少到几乎可行的水平。

这不适用于散列密码。

进一步阅读的链接。

Is SHA-1 secure for password storage?

https://www.schneier.com/blog/archives/2005/02/sha1_broken.html

https://en.wikipedia.org/wiki/PBKDF2

https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet

Rfc2898DeriveBytesHMACSHA1

关于asp.net - ASP.NET 使用 SHA256 还是 SHA1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40624840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com