首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么选择LCG作为c++ rand()函数?

为什么选择LCG作为c++ rand()函数?
EN

Cryptography用户
提问于 2019-05-08 19:00:33
回答 2查看 549关注 0票数 4

C++ rand()函数是一个线性一致性生成器(LCG)。我的问题是:

  1. 为什么选择这个算法?
  2. 优点和缺点是什么?
  3. 这对密码学有好处吗?
EN

回答 2

Cryptography用户

发布于 2019-05-08 21:03:55

C++ rand()函数(实际上是C函数)并不是为了密码目的而设计的。

  1. 为什么选择这个算法?

正如SEJPM在注释中所指出的,rand函数来自C,C++对实现没有上限限制。

  1. 优点和缺点是什么?
  2. 这对密码学有好处吗?

长话短说的答案;不要用它进行密码学。为了加密目的,请使用/dev/urandom

好的,它又快又小。坏消息;它是确定性的,种子很小(如注释中的poncho所指出的),因此无法从LCG生成加密安全的RNG。

票数 6
EN

Cryptography用户

发布于 2020-02-28 14:35:17

/dev/urandom是为密码学生成种子的最佳方法,但有时我们需要一个安全的确定性PRNG来使用相同的/dev/urandom计算其在两侧的序列;我正在讨论CSPRNG (加密安全伪随机数生成器)。我的建议是看看一个Salsa20实现(例如。Chacha20)。这些都是加密的安全算法,而且可能是你能找到的最好的算法。密码学的另一种选择是: Blum-Micali、艾萨克、亚罗和福图纳。也许我们想讨论一下在CSPRNG中哪一个更快。

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

https://crypto.stackexchange.com/questions/70408

复制
相关文章

相似问题

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