加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET使用SHA256还是SHA1?

发布时间:2020-12-16 03:49:59 所属栏目:asp.Net 来源:网络整理
导读:我正在使用ASP.NET 4.5 MVC和Entity Framework提供的默认标识.我可以使用密码创建用户,并在数据库中显示散列密码.我试图弄清楚是否使用不再信任的SHA1算法或SHA2算法(无论是SHA256,SHA512等)生成哈希. 似乎说它的文章默认为SHA256: https://www.asp.net/whi
我正在使用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

Rfc2898DeriveBytes和HMACSHA1

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读