Saj*_*ani 25 .net c# authentication md5 sha1
在C#中我们如何自动使用SHA1?
SHA1是否优于MD5?(我们对用户名和密码使用散列并需要验证速度)
Kyl*_*ndo 35
不确定你的意思是自动,但你应该真的使用SHA256
和更高.也总是 在哈希中使用Salt(代码).一个侧面说明,经过一段时间后,使用硬化哈希比使用基于速度的简单哈希函数要好得多.即:散列几百次迭代,或者使用已经证实的散列函数,例如bcrypt
(我相信下面会提到).在.NET中使用SHA256哈希函数的代码示例如下:
byte[] data = new byte[DATA_SIZE];
byte[] result;
using(SHA256 shaM = new SHA256Managed()) {
result = shaM.ComputeHash(data);
}
Run Code Online (Sandbox Code Playgroud)
将使用SHA256为您做到这一点,并在MSDN上找到.
关于SHA1"破解"的旁注:透视SHA-1的破解
Dar*_*rov 29
SHA1比MD5强,所以如果您有选择,最好使用它.这是一个例子:
public static string CalculateSHA1(string text, Encoding enc)
{
byte[] buffer = enc.GetBytes(text);
SHA1CryptoServiceProvider cryptoTransformSHA1 = new SHA1CryptoServiceProvider();
return BitConverter.ToString(cryptoTransformSHA1.ComputeHash(buffer)).Replace("-", "");
}
Run Code Online (Sandbox Code Playgroud)
Dra*_*788 11
两者都太快而无法直接使用.使用Key Enhance来"减慢"密码散列程序.速度是不幸的密码安全的敌人.
慢到多慢?将密码哈希值从〜微秒减慢到几百毫秒不会对应用程序的感知性能产生负面影响......但是会使密码破解速度慢十万倍.
有关详细信息,请参阅此文章:http: //chargen.matasano.com/chargen/2007/9/7/enough-with-the-rainbow-tables-what-you-need-to-know-about-s.html
问题是MD5很快.它的现代竞争对手也是如此,例如SHA1和SHA256.速度是现代安全散列的设计目标,因为散列几乎是每个密码系统的构建块,并且通常在每个数据包或每个消息的基础上执行需求.
速度正是您在密码散列函数中不想要的.
......剪...
密码攻击游戏在破解密码X时得分.对于彩虹表,该时间取决于您的表需要多大以及搜索速度有多快.对于增量破解程序,时间取决于您运行密码哈希函数的速度.
也就是说,使用BCrypt.最近开发了SCrypt,但我怀疑是否存在任何稳定(或生产就绪)库.从理论上讲,SCrypt声称要改进BCrypt.不推荐使用"构建自己的",但是数千次迭代MD5/SHA1/SHA256应该可以解决问题(即:Key Enhance).
如果您不了解它们,请务必阅读Rainbow Tables.基本安全的东西.
Ahm*_*aid 10
来自MSDN
byte[] data = new byte[DATA_SIZE];
byte[] result;
SHA1 sha = new SHA1CryptoServiceProvider();
// This is one implementation of the abstract class SHA1.
result = sha.ComputeHash(data);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
61088 次 |
最近记录: |