我想要一长串字符或数字,由传递给某些广泛使用的函数的哈希字符串确定。例如,我有一个字符串
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
,如果我将它传递给某个广泛使用的开源库中的一组函数,那么每次我在任何机器上执行它时,它都会以相同的顺序返回 100k 个符号?
我想这与《我的世界》中的种子数量有关,但我不知道从哪里开始,所以请指教。
谢谢!
最简单的方法是使用流密码,例如 ChaCha。流密码是一种 CSPRNG,根据给定的密钥(例如,由您显示的十六进制字符串表示的字节)生成尽可能多的输出。对于非安全,您可以使用 LSFR。如果您提前知道输出大小,那么理论上您也可以使用 XOF,例如 SHAKE128 或 SHAKE256。
如果你想拥有“符号”,那么你可以使用特定拒绝采样机制,例如“简单丢弃”。如果有 N 个符号,则需要表示 N 个所需的位数(通常到字节边界,丢弃不必要的位)。将其转换为数字
i
;如果数字太高,则重复该过程。现在 i
是 alphabet 的索引,即所有已知符号的序列。