像MD5 / SHA-1这样的哈希算法能否生成比纯随机数具有更少冲突可能性的ID?

我有一个使用哈希算法(当前为MD5)在数据库表中生成唯一ID的应用程序。哈希是基于一行中的某些字段计算的,但是没有任何内容可以检查该计算,因为稍后更改这些字段时,该行的ID不会更改。

现在,我想更改代码以添加一些新功能,同时为ID生成纯随机数可以大大简化我的工作(说来话长,为什么我在生成ID之前更容易生成ID能够获取哈希算法的所有必要字段的内容)

我知道通常编程语言自己的随机数生成器会生成伪随机数,但是我使用的是Python的random.SystemRandom(),它使用操作系统的加密级别“ true”随机数生成器,因此我认为它应该与相同的碰撞概率进行比较使用哈希算法生成ID。

我的理解正确吗?如果没有,为什么?


呼唤远方
浏览 246回答 1
1回答

DIEA

生成X字节的随机数据可提供与在某些ID上使用哈希函数完全相同的冲突概率...假设...您使用哈希函数的列本身是唯一的。您在做#1时没有犯错我建议使用系统的密码随机数提供程序。因为您可能犯了错误。这是一个简单的方法:您的系统:连接第1列和第2列,并对结果进行哈希处理。您可以保证永远不会再对列1和列2的那些值执行此操作。绝不。什么时候:第1列=“ abc”第2列=“ def”与第1列=“ ab”第2列=“ cdef”这些将创建相同的哈希函数。那么,您会更信任谁来提供随机数据呢?你自己?还是一个包括密码学专家以及数十年研究和经验的操作系统开发人员团队?:)使用系统的加密随机函数。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python