Tag: prng

如何为PRNG播种BN_generate_prime

我无法在openssl / bn.h中找到关于用BN_generate_prime生成素数的答案。 另外,我如何播种此函数使用的PRNG? 单独的问题,但与我的代码相关(我正在编写一个程序来生成RSA密钥对):我如何检查是否在BIGNUM中设置了高阶位? 假设我生成512位素数。 我会使用BN_is_bit_set(素数,512)吗? 谢谢

使用引擎进行随机数生成

我正在尝试使用OpenSSL的RAND_bytes API,但我想尝试使用各种随机数生成引擎。 是否有推荐的方法在OpenSSL中生成随机字节并添加熵? 我在哪里可以获得其他Engine实现,以及如何交换它们?

寻找体面质量的PRNG只有32位状态

我正在尝试实现rand_r接口的可容忍质量版本,该接口具有令人遗憾的接口要求,即其整个状态存储在unsigned类型的单个对象中,对于我的目的而言,这意味着正好是32位。 另外,我需要它的输出范围是[0,2³¹-1] 。 标准解决方案是使用LCG并丢弃低位(具有最短周期),但这仍然为接下来的几位留下非常差的周期。 我最初的想法是使用LCG的两次或三次迭代来生成输出的高/低或高/中/低位。 但是,这种方法不能保持无偏差的分布; 而不是每个输出值具有相同的频率,许多输出多次出现,而有些则根本不发生。 由于只有32位状态,PRNG的周期以2 32为界,并且为了没有偏置,PRNG必须输出每个值,如果它具有完整周期则恰好输出两次,如果它具有周期2 3,则必须输出一次。 较短的时期不能没有偏见。 是否有任何知名的PRNG算法符合这些标准?