我有一个应用程序,使用哈希算法(目前是MD5)在数据库表中生成唯一ID。该哈希基于行的某些字段计算得出,但没有检查该计算,因此当稍后更改这些字段时,该行的ID不会更改。
现在我想更改代码以添加一些新功能,而为ID生成纯随机数可以极大地简化我的工作(长话短说,这就是为什么在能够获取所有必要字段内容之前生成该ID对我来说更容易的原因)
我知道通常编程语言自己的随机生成器会生成伪随机数,但我正在使用Python的random.SystemRandom(),它使用了操作系统的加密级别的“真”随机生成器,因此我认为它与使用哈希算法生成ID相比,应该具有相同的碰撞概率。
我的理解正确吗?如果不是,为什么?
现在我想更改代码以添加一些新功能,而为ID生成纯随机数可以极大地简化我的工作(长话短说,这就是为什么在能够获取所有必要字段内容之前生成该ID对我来说更容易的原因)
我知道通常编程语言自己的随机生成器会生成伪随机数,但我正在使用Python的random.SystemRandom(),它使用了操作系统的加密级别的“真”随机生成器,因此我认为它与使用哈希算法生成ID相比,应该具有相同的碰撞概率。
我的理解正确吗?如果不是,为什么?