我目前使用Crypto.Random和Crypto.Random.DRBG Haskell库来生成随机数。但是,我发现自己需要以某种形式的文件(例如.txt文件)存储它们的状态,因为我想在稍后的某个时间点继续使用同一个生成器(这是因为我需要两个独立的程序来生成相同的生成器随机数字以相同的顺序)。 上面提到的库不是Show函数的实例。有谁知道我可以如何存储所提到的发生器的状态?在haskell中保存随机数生成器的状态
3
A
回答
5
您可以使用git版本的DRBG执行CtrDRBG的序列化(因为commit 9da47c4dabf9f6976edcbf938c4a1a4b95e09b0c)。编辑:这是现在在hackage。安装:
cabal update
cabal install DRBG
现在你应该可以使用上CtrDRBG
Data.Serialize
的encode
和decode
功能。
编辑:我觉得我应该提及,像所有NIST SP 800-90发电机,DRBG可能不会给你可能期望的属性。确实,生成器是确定性的,但是您的请求会扰乱状态,因此两次生成N个字节不会产生与生成2 * N个字节的单个请求相同的字节。这是由于发电机的回溯电阻。总是产生一致大小的请求并在封面下执行级联的缓冲策略可以隐藏这种行为。
相关问题
- 1. 保存随机数生成器状态C++ 11
- 2. 不使用iostream保存C++ 11随机生成器的状态
- 3. 在C++中保存并加载随机数生成器状态11
- 4. Haskell Grokking随机数生成
- 5. Haskell随机生成
- 6. 在Haskell中生成随机数
- 7. 在Haskell中生成一个随机数
- 8. Haskell的随机发生器:链生成的随机值
- 9. 如何在Haskell中随机生成一个随机生成的数字列表
- 10. 如何获取c#中随机数生成器的状态?
- 11. Haskell中的随机数发生器
- 12. 如何保存的C++ 0x随机数的状态产生
- 13. Haskell QuickCheck独特的随机数生成
- 14. Haskell中随机数生成器的函数声明
- 15. Haskell中的随机数生成器是线程安全的吗?
- 16. C++状态机生成器
- 17. Haskell的随机生成的序列
- 18. 伪随机数发生器中的状态函数是什么?
- 19. Haskell数独求解器 - 随机块坐标生成器
- 20. 随机数生成器帮助不生成随机数 - C
- 21. 如何在Haskell中创建一个随机布尔生成器?
- 22. 随机数据生成器
- 23. Python随机数生成器
- 24. 随机数据生成器
- 25. 随机产生在Haskell
- 26. 从数字列表中生成随机对,确保生成的随机对不存在
- 27. 在随机生成50个随机数中使用随机数#
- 28. boost.python中的随机数生成器
- 29. Java中的随机数生成器
- 30. Python中的随机生成器函数
为什么你使用加密强度PRNG,如果你想坚持和重放状态?只需使用StdGen。 –
因为我正在编写密码协议并需要DRBG的属性。并不是我需要重播状态。正如我所说的,我需要两个(不同的)程序来生成相同的数字(不同时间点),而无需转移它们。 –
查看[sources](http://hackage.haskell.org/packages/archive/DRBG/0.5/doc/html/src/Crypto-Random-DRBG-HMAC.html#State),似乎它会是容易添加持久性(例如通过实现'Serialize')到'State'。我看到的一个问题是哈希算法,它被表示为一个函数,因此它不能被序列化。但是这些信息可能由用户在反序列化过程中提供。 –