首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我能否从random_device和mt19937的组合中生成加密安全的随机数据并重新播种?

我能否从random_device和mt19937的组合中生成加密安全的随机数据并重新播种?
EN

Stack Overflow用户
提问于 2015-05-27 04:46:24
回答 1查看 2.3K关注 0票数 7

我需要在c++11中生成加密安全的随机数据,我担心对所有数据使用random_device会严重限制性能(参见StephanT.Lavavej的"rand() Considered Harmful“幻灯片23,他说(在他的系统上)测试时,random_device为1.93 MB/s,mt19937为499 MB/s,因为这段代码将在移动设备(通过JNI和iOS运行)上运行,这可能比上面的数字要慢。

此外,我还注意到,MT19937在密码上并不安全,因为wikipedia:“观察足够数量的迭代(在mt19937情况下为624次,因为这是生成未来迭代的状态向量的大小),因此可以预测所有未来的迭代”。

考虑到上述所有信息,我可以通过每624次random_device迭代生成一个新的随机种子来生成加密安全的随机数据吗?或者(可能)更好的是,每一次X迭代,其中X是一个随机数(来自random_device或mt19937,由random_device播种)在1到624之间?

EN

回答 1

Stack Overflow用户

发布于 2015-05-27 09:32:30

简单的回答是,不,你不能。对加密安全的RNG的要求是非常严格的,如果您必须在这里问这个问题,那么您就没有足够的意识到这些要求。正如曾傑瑞所说,如果你需要重复性,那么AES-CTR是一种选择.另一个不允许重复的选项是为您的系统寻找Yarrow或Fortuna的实现。一般来说,在库中找到CSRNG要比滚动自己的要好得多。库编写人员充分了解对良好CSRNG的要求。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30473376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档