为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

呼唤远方 2021-04-08 13:15:17
我有一个使用哈希算法(当前为MD5)在数据库表中生成唯一ID的应用程序。哈希是基于一行中的某些字段计算的,但是没有任何内容可以检查该计算,因为稍后更改这些字段时,该行的ID不会更改。现在,我想更改代码以添加一些新功能,同时为ID生成纯随机数可以大大简化我的工作(说来话长,为什么我在生成ID之前更容易生成ID能够获取哈希算法的所有必要字段的内容)我知道通常编程语言自己的随机数生成器会生成伪随机数,但是我使用的是Python的random.SystemRandom(),它使用操作系统的加密级别“ true”随机数生成器,因此我认为它应该与相同的碰撞概率进行比较使用哈希算法生成ID。我的理解正确吗?如果没有,为什么?
查看完整描述

1 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

生成X字节的随机数据可提供与在某些ID上使用哈希函数完全相同的冲突概率...

假设...

  1. 您使用哈希函数的列本身是唯一的。

  2. 您在做#1时没有犯错

我建议使用系统的密码随机数提供程序。因为您可能犯了错误。这是一个简单的方法:

您的系统:连接第1列和第2列,并对结果进行哈希处理。您可以保证永远不会再对列1和列2的那些值执行此操作。绝不。

什么时候:

  1. 第1列=“ abc”

  2. 第2列=“ def”

  1. 第1列=“ ab”

  2. 第2列=“ cdef”

这些将创建相同的哈希函数。

那么,您会更信任谁来提供随机数据呢?你自己?还是一个包括密码学专家以及数十年研究和经验的操作系统开发人员团队?:)

使用系统的加密随机函数。


查看完整回答
反对 回复 2021-04-27
  • 1 回答
  • 0 关注
  • 245 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号