.NET框架附带了6种不同的散列算法:
每个功能都有不同的表现; MD5是最快的,RIPEMD是最慢的.
MD5的优势在于它适用于内置的Guid类型; 它是3型UUID的基础.SHA-1哈希是类型5 UUID的基础.这使得它们非常易于识别.
然而,MD5易受碰撞攻击,SHA-1也容易受到攻击,但程度较轻.
我真的很想回答的具体问题是:
MD5不值得信任吗?在正常情况下,当您使用没有恶意意图的MD5算法且没有任何第三方有任何恶意意图时,您会期望任何冲突(意味着两个任意byte []产生相同的哈希)
RIPEMD比SHA1好多少?(如果它更好)它的计算速度要慢5倍,但散列大小与SHA1相同.
散列文件名(或其他短字符串)时获得非恶意冲突的几率是多少?(例如,2个具有相同MD5哈希值的随机文件名)(使用MD5/SHA1/SHA2xx)一般来说,非恶意冲突的几率是多少?
这是我使用的基准:
static void TimeAction(string description, int iterations, Action func) {
var watch = new Stopwatch();
watch.Start();
for (int i = 0; i < iterations; i++) {
func();
}
watch.Stop();
Console.Write(description);
Console.WriteLine(" Time Elapsed {0} ms", watch.ElapsedMilliseconds);
}
static byte[] GetRandomBytes(int count) {
var bytes = new byte[count];
(new Random()).NextBytes(bytes);
return bytes;
}
static void …Run Code Online (Sandbox Code Playgroud) 有谁知道bcrypt的一个很好的实现,我知道这个问题之前已被问过,但它得到的答案很少.我有点不确定只是选择在谷歌中出现的实现,并且我认为我最好在System.Security.Cryptography命名空间中使用sha256,至少我知道它是支持的!你有什么想法?
我继承了一个Web应用程序,我刚刚在SQL Server数据库中以纯文本形式存储了超过300,000个用户名/密码.我意识到这是一件非常糟糕的事情.
知道我必须更新登录和密码更新过程以加密/解密,并且对系统其余部分的影响最小,您会建议从数据库中删除纯文本密码的最佳方法是什么?
任何帮助表示赞赏.
编辑:对不起,如果我不清楚,我打算问你的加密/哈希密码的程序,而不是特定的加密/散列方法.
我应该只是:
我想我的关注更多来自于大量的用户,所以我想确保我正确地做到这一点.
我看到有人用MD5多次加密用户密码以提高安全性.我不确定这是否有效,但看起来并不好.那么,它有意义吗?
md5 cryptography password-hash cryptographic-hash-function pbkdf2
我需要一些指导,我需要检查来自UI表单(即Authentication对象)的密码,我需要使用SHA-256 + constant salt(在进行比较之前)进行哈希处理,密码来自DB(DB也有密码+盐)使用Spring安全.
我想比较使用相同的SALT值生成的这两个不同的散列值.我们如何在java中做到这一点?有人可以分享一下示例代码吗?
10月2日,NIST认定SHA-3是新的标准哈希算法.
MD5用户应该开始迁移到SHA-3吗?对于别的东西(见下面为什么不建议使用SHA-3)?bcrypt?
为什么不{MD5,SHA1,SHA256,SHA512,SHA-3等}?
而且,这真的很重要吗?即使你的密码被盐渍了?
passwords ×4
encryption ×3
hash ×3
security ×3
.net ×2
c# ×2
cryptographic-hash-function ×2
cryptography ×2
md5 ×2
bcrypt ×1
bcrypt.net ×1
java ×1
pbkdf2 ×1
sha ×1
sha256 ×1