问题标签 [hash-collision]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
9263 浏览

python - 这是对python内置哈希函数的适当使用吗?

我需要比较大块数据的相等性,并且我需要每秒比较多对,快速。保证每个对象的长度相同,有可能并且很可能在未知位置处可能只有微小的差异。

下面的时序表明,==如果在数据开头附近存在差异,则使用运算符非常快,如果差异位于接近末尾,则使用操作符会显着变慢。

在我的用例中,差异可能位于字节的中间或末尾(上下文:它是未压缩的图像数据)。我寻找一种使用哈希或校验和来加快速度的方法。使用 md5 速度较慢,但​​ Python 的内置hash确实加快了速度。

我对这个哈希的技术细节感兴趣,它是否足够像哈希一样,hash(a) == hash(b)那时a == b很有可能?如果哈希冲突相当罕见,则可以接受误报,其目的是在平均情况下加快比较速度。

0 投票
5 回答
9765 浏览

c++ - 与 std::hash 的意外冲突

我知道将无限数量的字符串散列到 32b int 必须产生冲突,但我希望散列函数有一些很好的分布。

这两个字符串具有相同的哈希值是不是很奇怪?

我知道我可以使用boost::hash<std::string>or 其他人,但我想知道std::hash. 我用错了吗?我不应该以某种方式“播种”它吗?

0 投票
6 回答
7785 浏览

c# - 对字符串调用 GetHashCode() 时获得重复值的概率

我想知道在实例上调用GetHashCode()方法时获得重复值的概率。string例如,根据这篇博 blair文,brainlessness在 x86 机器上具有相同的哈希码 (1758039503)。

0 投票
3 回答
1948 浏览

c++ - 我如何计算这个哈希函数中的冲突?

这是一个前缀散列函数。我想计算这种方法中的碰撞次数,但我不知道该怎么做。看起来它可能很简单,但我就是想不出一个很好的方法来做到这一点......

0 投票
3 回答
83 浏览

cryptography - 哈希密码函数输出异常

任何人都知道 MD5、Whirlpool、SHA[n] 等是否有任何“特殊”输入可能会得到一个十六进制摘要输出以对齐:

  • 所有数字字符
  • 所有字母字符
  • 所有相同的字符/模式一致或完全重复

python中的示例:

这甚至可能吗?我对散列函数的了解仅限于将它们应用于数据库以存储密码的范围,这基本上是没有的。

但有时我想知道,在测试碰撞时,可能会出现这种情况......

0 投票
1 回答
222 浏览

algorithm - 使用二次探测时如何找到数组中的特定元素?

我有两个输入(示例):“Smooth Criminal”和“Billie Jean”,它们在通过哈希函数运行时返回相同的索引键。

在数组 [] 中,我想将歌曲 MP3 文件的路径保存在我的硬盘上。

假设它们都返回 0 作为索引键,因此“Smooth Criminal”进入索引:0 而“Billie Jean”进入索引 0 + 1^2 = 1。

当两首歌曲返回相同的键时,我如何在数组中找到“Billie Jean”的文件路径?

谢谢

0 投票
1 回答
1184 浏览

asp.net - ASP.NET 中的哈希冲突问题如何解决 (MS11-100)?

据 Slashdot 报道,微软今天发布了 ASP.NET 更新以修复哈希冲突攻击。(在链接的 Technet 页面上列为“哈希表中的冲突可能导致 DoS 漏洞 - CVE-2011-3414”。)

问题在于 POST 数据被转换为使用已知散列算法的散列表。如果攻击者通过制作包含大量冲突的请求来使用它,他很容易导致拒绝服务。

有谁知道这个更新究竟是如何解决这个问题的?

0 投票
2 回答
299 浏览

java - 如何同时在两个数组中找到相同的字节 [] 对象?

我正在尝试对哈希实施冲突攻击(我正在访问“密码学”课程)。因此,我有两个哈希数组(= byte-sequences byte[])并且想要找到两个数组中都存在的哈希。经过一些研究和大量思考,我确信单核机器上的最佳解决方案将是HashSet(添加第一个数组的所有元素并检查contains第二个数组的元素是否已经存在)。

但是,我想实现一个并发解决方案,因为我可以访问一台具有 8 个内核和 12 GB RAM 的机器。我能想到的最好的解决方案是 ConcurrentHashSet,它可以通过Collections.newSetFromMap(new ConcurrentHashMap<A,B>()). 使用这个数据结构,我可以并行添加第一个数组的所有元素,并且 - 在添加了所有元素之后 - 我可以同时检查 viacontains是否有相同的哈希值。

所以我的问题是:你知道为这个确切问题设计的算法吗?如果没有,您是否有使用此类 ConcurrentHashSet 解决问题和有效运行时复杂性的经验?或者你能推荐另一个可以帮助我的预建数据结构吗?

PS:如果有人对细节感兴趣:我打算使用Skandium来并行化我的程序。

0 投票
2 回答
23340 浏览

security - md5的冲突率是多少?

md5 算法发生冲突的概率是多少?我相信它非常低。

0 投票
2 回答
573 浏览

java - 什么哈希函数更好?

我用 Java 编写了 HashMap 的实现。我使用开放寻址来解决冲突。为了更好的密钥分配,我想对密钥的哈希码使用一个很好的哈希函数int。我不知道什么哈希函数更适合它?

我需要一个哈希函数来处理密钥的哈希码。