相关疑难解决方法(0)

我应该选择哪种加密哈希函数?

.NET框架附带了6种不同的散列算法:

  • MD5:16字节(哈希时间500MB:1462毫秒)
  • SHA-1:20个字节(1644毫秒)
  • SHA256:32字节(5618毫秒)
  • SHA3​​84:48字节(3839毫秒)
  • SHA512:64字节(3820毫秒)
  • RIPEMD:20个字节(7066毫秒)

每个功能都有不同的表现; 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)

.net c# hash cryptography cryptographic-hash-function

135
推荐指数
3
解决办法
7万
查看次数

bcrypt的.net实现

有谁知道bcrypt的一个很好的实现,我知道这个问题之前已被问过,但它得到的答案很少.我有点不确定只是选择在谷歌中出现的实现,并且我认为我最好在System.Security.Cryptography命名空间中使用sha256,至少我知道它是支持的!你有什么想法?

.net bcrypt bcrypt.net

114
推荐指数
4
解决办法
2万
查看次数

加密/散列数据库中的纯文本密码

继承了一个Web应用程序,我刚刚在SQL Server数据库中以纯文本形式存储了超过300,000个用户名/密码.我意识到这是一件非常糟糕的事情.

知道我必须更新登录和密码更新过程以加密/解密,并且对系统其余部分的影响最小,您会建议从数据库中删除纯文本密码的最佳方法是什么?

任何帮助表示赞赏.

编辑:对不起,如果我不清楚,我打算问你的加密/哈希密码的程序,而不是特定的加密/散列方法.

我应该只是:

  1. 备份数据库
  2. 更新登录/更新密码代码
  3. 几小时后,浏览用户表中记录密码的所有记录并替换每个记录
  4. 测试以确保用户仍然可以登录/更新密码

我想我的关注更多来自于大量的用户,所以我想确保我正确地做到这一点.

security encryption passwords security-by-obscurity

63
推荐指数
3
解决办法
4万
查看次数

21
推荐指数
7
解决办法
2万
查看次数

如何使用c#对密码值进行加密和散列?

海家伙,

我开始知道存储密码的哈希值是从数据库中存储密码的首选方法中安全的...

  • 如何使用c#对密码值进行加密和散列?

  • 如何比较存储在DB中的值和用户给出的值?

c# passwords hash

17
推荐指数
2
解决办法
1万
查看次数

多次加密(MD5)可以提高安全性吗?

我看到有人用MD5多次加密用户密码以提高安全性.我不确定这是否有效,但看起来并不好.那么,它有意义吗?

md5 cryptography password-hash cryptographic-hash-function pbkdf2

7
推荐指数
1
解决办法
3700
查看次数

使用Java中的SHA-256算法,Spring安全性,使用相同的盐比较两个散列密码?

我需要一些指导,我需要检查来自UI表单(即Authentication对象)的密码,我需要使用SHA-256 + constant salt(在进行比较之前)进行哈希处理,密码来自DB(DB也有密码+盐)使用Spring安全.

我想比较使用相同的SALT值生成的这两个不同的散列值.我们如何在java中做到这一点?有人可以分享一下示例代码吗?

java spring-security sha256

0
推荐指数
1
解决办法
8367
查看次数

我正在使用MD5来散列密码.我应该什么时候跳到下一个?SHA-3?

10月2日,NIST认定SHA-3是新的标准哈希算法.

MD5用户应该开始迁移到SHA-3吗?对于别的东西(见下面为什么不建议使用SHA-3)?bcrypt?

为什么不{MD5,SHA1,SHA256,SHA512,SHA-3等}?

而且,这真的很重要吗?即使你的密码被盐渍了?

security encryption passwords md5 sha

-1
推荐指数
1
解决办法
1130
查看次数