![]() |
1
0
|
![]() |
2
2
那天我做了一些研究,大家一致认为BCrypt是做单向散列的最好方法之一。 您可以在这里看到C实现: http://derekslager.com/blog/posts/2007/10/bcrypt-dotnet-strong-password-hashing-for-dotnet-and-mono.ashx 另外,BCrypt的优点是你可以决定你希望它通过多少轮。 例如,您可以使加密大约需要1秒。对于一个用户来说,这是一个可以接受的等待时间,但是对于一个试图用暴力攻击你的人来说,1秒是永恒的。
此外,阿特伍德在这方面给出了一些建议: http://www.codinghorror.com/blog/2007/09/youre-probably-storing-passwords-incorrectly.html 更新 : 自从回答了这个问题之后,NuGet使使用BCrypt变得更加容易: http://nuget.org/packages?q=bcrypt
|
![]() |
3
0
是的,SHA256没有问题,当然SHA256Managed对于大多数用例来说“足够快”(我相信你不会期望每秒验证1000个登录请求,即使你是,站点的其他部分仍然会使登录请求相形见绌……) 但是你考虑过 Membership 框架内置的东西?他们已经完成了安全存储凭据和实现所有支持功能(如密码重置等)方面的所有艰苦工作 |
![]() |
4
0
存储密码散列与盐它正确。然而,即使是这样的错误也很容易发生。当然,现在SHA256可以阻止坏人,但是再过几年。突然间,SHA256似乎不再那么安全了。你需要使用 BCrypt ,一个 散列算法。 |
![]() |
5
0
只做一次SHA256的问题是它太快了,一个有很好的硬件可以很容易地为很多盐生成彩虹表…为了解决这个问题,你需要执行键拉伸…kI不会给你一个关于键拉伸的课程,但是人们谈论的bcrypt实现执行键拉伸。如果您想要一个比bcrypt(在.NET中使用HMACSHA256或512)更现代的替代方案,我建议您使用以下API: |
![]() |
xchrisbradley · 使用Zig签名对功能选择器进行编码 1 年前 |
![]() |
Shirin Ebadi · 加载公钥字节作为DH密钥 1 年前 |
![]() |
YoavKlein · 为什么jwt.io会给我私钥部分来填充? 1 年前 |
![]() |
birb · RFC-6238 TOTP实现与示例不匹配 1 年前 |
|
Stefan N · 如何生成N个字符的所有字母数字组合[重复] 1 年前 |
|
xdivayze · 在线和离线客户端之间的打包密钥交换 1 年前 |