gpt4 book ai didi

hash - 加密哈希算法可以用作 PRNG 吗?

转载 作者:行者123 更新时间:2023-12-02 05:30:54 26 4
gpt4 key购买 nike

MD5/SHA256/SHA512等可以用作PRNG吗?例如,给定一个整数种子,伪代码是:

random_number = truncate_to_desired_range(
sha512( seed.toString() + ',' + i.toString() )

…一个像样的 PRNG? (i 是一个递增的整数,例如,输出是:

convert(sha512("<seed>,0"))
convert(sha512("<seed>,1"))
convert(sha512("<seed>,2"))
convert(sha512("<seed>,3"))

在这个问题的上下文中,“体面”仅指输出的分布:当以这种方式使用时,加密哈希函数的输出是否均匀? (虽然我认为这取决于哈希函数,但所有加密哈希值也应该具有统一的输出,对吧?)

注意:我承认,与 Mersenne-Twister 相比,由于使用了加密哈希,这将是一个缓慢的 PRNG。我对速度不感兴趣,对结果的安全性也不感兴趣——只是分布是正确的。

在我的特定用例中,我正在寻找类似于 XKCD's geohashing 的内容,因为它很容易被分布式各方实现,他们都会得到相同的答案。 Mersenne-Twister 可以被替代,但它在许多目标语言中不太可用。 (有些语言完全缺乏它,有些语言无法访问它的原始 U32 输出,等等。SHA512 要么是内置的,要么很容易获得。)

最佳答案

假设加密哈希函数满足其设计目标,输出将(可证明)在其周期内遵循均匀分布,因为哈希函数的每个输入在设计上都是唯一的。

哈希函数的目标之一是近似随机预言,也就是说,对于任何两个不同的输入 A 和 B,输出 H(A) 和 H(B) 应该(对于真正的随机预言)为不相关的。哈希函数非常接近这一点,但随着时间和密码分析的进行,弱点当然会逐渐显现。

也就是说,就质量而言,加密原语本质上是我们可用的最好的数学算法,因此可以肯定地说,如果它们不能解决您的问题,什么都可以解决。

关于hash - 加密哈希算法可以用作 PRNG 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14467805/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com