问题标签 [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.
python - 这是对python内置哈希函数的适当使用吗?
我需要比较大块数据的相等性,并且我需要每秒比较多对,快速。保证每个对象的长度相同,有可能并且很可能在未知位置处可能只有微小的差异。
下面的时序表明,==
如果在数据开头附近存在差异,则使用运算符非常快,如果差异位于接近末尾,则使用操作符会显着变慢。
在我的用例中,差异可能位于字节的中间或末尾(上下文:它是未压缩的图像数据)。我寻找一种使用哈希或校验和来加快速度的方法。使用 md5 速度较慢,但 Python 的内置hash
确实加快了速度。
我对这个哈希的技术细节感兴趣,它是否足够像哈希一样,hash(a) == hash(b)
那时a == b
很有可能?如果哈希冲突相当罕见,则可以接受误报,其目的是在平均情况下加快比较速度。
c++ - 与 std::hash 的意外冲突
我知道将无限数量的字符串散列到 32b int 必须产生冲突,但我希望散列函数有一些很好的分布。
这两个字符串具有相同的哈希值是不是很奇怪?
我知道我可以使用boost::hash<std::string>
or 其他人,但我想知道std::hash
. 我用错了吗?我不应该以某种方式“播种”它吗?
c# - 对字符串调用 GetHashCode() 时获得重复值的概率
我想知道在实例上调用GetHashCode()
方法时获得重复值的概率。string
例如,根据这篇博 blair
文,brainlessness
在 x86 机器上具有相同的哈希码 (1758039503)。
c++ - 我如何计算这个哈希函数中的冲突?
这是一个前缀散列函数。我想计算这种方法中的碰撞次数,但我不知道该怎么做。看起来它可能很简单,但我就是想不出一个很好的方法来做到这一点......
cryptography - 哈希密码函数输出异常
任何人都知道 MD5、Whirlpool、SHA[n] 等是否有任何“特殊”输入可能会得到一个十六进制摘要输出以对齐:
- 所有数字字符
- 所有字母字符
- 所有相同的字符/模式一致或完全重复
python中的示例:
这甚至可能吗?我对散列函数的了解仅限于将它们应用于数据库以存储密码的范围,这基本上是没有的。
但有时我想知道,在测试碰撞时,可能会出现这种情况......
algorithm - 使用二次探测时如何找到数组中的特定元素?
我有两个输入(示例):“Smooth Criminal”和“Billie Jean”,它们在通过哈希函数运行时返回相同的索引键。
在数组 [] 中,我想将歌曲 MP3 文件的路径保存在我的硬盘上。
假设它们都返回 0 作为索引键,因此“Smooth Criminal”进入索引:0 而“Billie Jean”进入索引 0 + 1^2 = 1。
当两首歌曲返回相同的键时,我如何在数组中找到“Billie Jean”的文件路径?
谢谢
asp.net - ASP.NET 中的哈希冲突问题如何解决 (MS11-100)?
据 Slashdot 报道,微软今天发布了 ASP.NET 更新以修复哈希冲突攻击。(在链接的 Technet 页面上列为“哈希表中的冲突可能导致 DoS 漏洞 - CVE-2011-3414”。)
问题在于 POST 数据被转换为使用已知散列算法的散列表。如果攻击者通过制作包含大量冲突的请求来使用它,他很容易导致拒绝服务。
有谁知道这个更新究竟是如何解决这个问题的?
java - 如何同时在两个数组中找到相同的字节 [] 对象?
我正在尝试对哈希实施冲突攻击(我正在访问“密码学”课程)。因此,我有两个哈希数组(= byte-sequences byte[]
)并且想要找到两个数组中都存在的哈希。经过一些研究和大量思考,我确信单核机器上的最佳解决方案将是HashSet
(添加第一个数组的所有元素并检查contains
第二个数组的元素是否已经存在)。
但是,我想实现一个并发解决方案,因为我可以访问一台具有 8 个内核和 12 GB RAM 的机器。我能想到的最好的解决方案是 ConcurrentHashSet,它可以通过Collections.newSetFromMap(new ConcurrentHashMap<A,B>())
. 使用这个数据结构,我可以并行添加第一个数组的所有元素,并且 - 在添加了所有元素之后 - 我可以同时检查 viacontains
是否有相同的哈希值。
所以我的问题是:你知道为这个确切问题设计的算法吗?如果没有,您是否有使用此类 ConcurrentHashSet 解决问题和有效运行时复杂性的经验?或者你能推荐另一个可以帮助我的预建数据结构吗?
PS:如果有人对细节感兴趣:我打算使用Skandium来并行化我的程序。
security - md5的冲突率是多少?
md5 算法发生冲突的概率是多少?我相信它非常低。
java - 什么哈希函数更好?
我用 Java 编写了 HashMap 的实现。我使用开放寻址来解决冲突。为了更好的密钥分配,我想对密钥的哈希码使用一个很好的哈希函数int
。我不知道什么哈希函数更适合它?
我需要一个哈希函数来处理密钥的哈希码。