3

我目前正在使用Crypto.RandomCrypto.Random.DRBGHaskell 库来生成随机数。但是,我发现自己需要将它们的状态存储在某种形式的文件(例如.txt文件)中,因为我想在以后的某个时间点继续使用相同的生成器(这是因为我需要两个单独的程序来生成相同的随机数以相同的顺序)。上述库不是该Show函数的实例。有谁知道我如何存储提到的发电机的状态?

4

1 回答 1

6

您可以使用 DRBG 的 git 版本执行 CtrDRBG 的序列化(因为提交 9da47c4dabf9f6976edcbf938c4a1a4b95e09b0c)。编辑:这现在是hackage。安装:

cabal update
cabal install DRBG

现在你应该可以使用Data.Serialize'sencodedecode函数了CtrDRBG

编辑:我觉得我应该提一下,就像所有 NIST SP 800-90 生成器一样,DRBG 可能不会提供您可能期望的属性。生成器确实是确定性的,但是您的请求会扰乱状态,因此两次生成 N 字节不会导致与生成 2*N 字节的单个请求相同的字节。这是由于发电机的回溯阻力。始终发出大小一致的请求并在后台执行连接的缓冲策略可能会隐藏此行为。

于 2013-07-06T14:01:41.637 回答