根据时间()产生2个相等的哈希值的机会?

时间:2010-12-16 16:59:04

标签: hash

问题很简单,但我找不到这个问题的答案......基本上,我的应用程序正在使用md5(time());生成文件名。

使用这种技术的机会有多大,我有两个相同的结果?

P.S。既然我的问题标题说哈希不是精确哈希,那么为每种类型的哈希sha1();sha512();等产生相同结果的机会是多少,如果有的话呢?

提前致谢!

2 个答案:

答案 0 :(得分:1)

我估计由于人类和其他过程(例如NTP)可能会发生时间变化而不安全,FrankH已经注意到了这一点。如果您的框架允许,我强烈建议使用加密安全的RNG(随机数生成器)。

答案 1 :(得分:0)

平等结果不太可能由此产生,您可以通过检查md5(0) ... md5(INT32_MAX)的唯一性来验证自己,因为这是a的总范围time_t。我认为在你输入的任何哈希值的输入空间中都没有冲突。

可预测的结果是另一回事。通过在输入供应商时选择time(),您可以将自己限制为每秒一个唯一的哈希值,每天不超过86400个,...