标签: hash

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

.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万
查看次数

非加密用途的最快哈希?

我基本上准备将短语放入数据库,它们可能会出错,所以我想要存储它们的短哈希(我将简单地比较它们是否存在,所以哈希是理想的).

我假设MD5在100,000多个请求上相当慢,所以我想知道什么是散列短语的最佳方法,可能推出我自己的哈希函数或使用hash('md4', '...'最终会更快?

我知道MySQL有MD5(),所以这会在查询结束时补充一点速度,但也许在MySQL中还有一个更快的哈希函数,我不知道这可以用于PHP ..

php database security hash

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

哈希字典?

出于缓存目的,我需要从dict中存在的GET参数生成缓存键.

目前我正在使用sha1(repr(sorted(my_dict.items())))(sha1()是一种在内部使用hashlib的便捷方法),但我很好奇是否有更好的方法.

python hash dictionary

135
推荐指数
9
解决办法
8万
查看次数

为什么XOR是组合哈希的默认方式?

假设您有两个哈希H(A)并且H(B)您想要将它们组合在一起.我已经读到了将两个哈希值组合在一起的好方法XOR,例如XOR( H(A), H(B) ).

我发现的最佳解释在这里简要介绍了这些哈希函数指南:

对具有大致随机分布的两个数字进行异或,导致另一个数字仍具有大致随机分布*,但现在取决于这两个值.
...
*在两个数字相结合的每个比特,一个输出0,如果两个比特相等,否则为1.换句话说,在组合的50%,1将输出.因此,如果两个输入位各有大约50-50的机会为0或1,那么输出位也是如此.

你能解释为什么XOR应该是组合散列函数(而不是OR或AND等)的默认操作的直觉和/或数学吗?

hash cryptography bit-manipulation probability xor

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

MD5是否仍然足以唯一识别文件?

MD5散列文件仍然被认为是一个足够好的方法来唯一地识别它,因为MD5算法的所有破坏和安全问题等?安全性不是我的主要关注点,但唯一标识每个文件的是.

有什么想法吗?

hash md5

134
推荐指数
5
解决办法
6万
查看次数

获取URL哈希位置,并在jQuery中使用它

我想在当前页面的URL中获取哈希后的值,然后能够在新函数中应用它...例如.

URL可以是

www.example.com/index.html#foo
Run Code Online (Sandbox Code Playgroud)

我想结合下面的代码使用它

$('ul#foo:first').show();
Run Code Online (Sandbox Code Playgroud)

我有点假设/希望有一些方法可以抓住这个,并把它变成一个变量,然后我可以在第二段代码中使用它.

url hash jquery fragment-identifier

133
推荐指数
4
解决办法
22万
查看次数

在std :: map和std :: unordered_map之间进行选择

现在std有一个真正的哈希映射unordered_map,为什么(或何时)我还想在它实际存在的系统上使用旧的mapover unordered_map?是否有任何我无法立即看到的明显情况?

c++ hash unordered-map map c++11

130
推荐指数
5
解决办法
9万
查看次数

从哈希/ YAML中删除所有空元素?

我如何从嵌套的Hash或YAML文件中删除所有空元素(空列表项)?

ruby hash yaml ruby-on-rails

129
推荐指数
8
解决办法
9万
查看次数

哈希密码和加密密码之间的区别

目前对这个问题的最高投票表明:

另一个不是安全问题的安全问题虽然与安全相关,但却是完整的,并且很难解决散列密码和加密密码之间的区别.最常见于代码中的程序员试图提供不安全的"提醒我密码"功能.

究竟是什么区别?我总是认为哈希是一种加密形式.海报所指的不安全功能是什么?

language-agnostic security encryption passwords hash

127
推荐指数
7
解决办法
11万
查看次数

用户密码盐的最佳长度是多少?

当盐析和散列用户密码时,任何显然都会有所帮助.盐有多长时间有什么最佳做法吗?我将盐存储在我的用户表中,所以我希望在存储大小和安全性之间进行最佳权衡.是一个随机的10个字符的盐吗?或者我需要更长的时间?

encryption hash salt

126
推荐指数
4
解决办法
6万
查看次数