直到string长度为止,可以使用MD5作为哈希,而不必担心碰撞的可能性? 这大概可以通过为特定字符集中的每个可能的string生成一个MD5哈希来计算,直到哈希第二次出现(碰撞)为止。 没有碰撞的string的最大可能长度将比碰撞对中最长的字符小一个字符。 这已经testing了MD5,SHA1等?
对于我们的每个二进制资产,我们生成一个MD5散列。 这用于检查某个二进制资产是否已经在我们的应用程序中。 但有可能两个不同的二进制资产生成相同的MD5散列。 那么有可能两个不同的string生成相同的MD5哈希?
我已经在Python 3.3中实现了一个BloomFilter,每次会话都得到不同的结果。 深入研究这个奇怪的行为使我得到了内部的hash()函数 – 它为每个会话返回同一个string的不同散列值。 例: >>> hash("235") -310569535015251310 —–打开一个新的python控制台—– >>> hash("235") -1900164331622581997 为什么发生这种情况? 为什么这是有用的?
这可能从来没有发生在现实世界中,可能永远不会发生,但是让我们考虑一下:假设你有一个git仓库,做一个提交,并且非常不走运:其中一个blob最终具有相同的SHA-1作为另一个已经在你的仓库中。 问题是,Git如何处理这个问题? 简单地失败? find一种方法来链接两个斑点,并根据上下文来检查哪一个是必要的? 更多的是一个脑筋急转弯,而不是一个实际的问题,但我觉得这个问题很有趣。