Linux 用有限的C99标准函数集播种伪随机函数
我正在从事学校项目,特别是实现Linux 用有限的C99标准函数集播种伪随机函数,linux,macos,openssl,c99,Linux,Macos,Openssl,C99,我正在从事学校项目,特别是实现opensslgenrsa命令。 学校项目将可用功能限制为打开、关闭、读取、写入、malloc、免费 genrsa命令的选项标志之一是rand。正如我从手册页了解到的,该标志旨在用于没有“机器噪音”API的系统,如linux系统上的dev/uradom,以便可以从文件或套接字生成种子 当使用空文件反复播种时,opensslgenrsa不会输出相同的密钥,这可能意味着它实际上使用了其他一些随机种子 问题:如何获得随机输出,就像opensslgenrsa命令使用空文件种
openssl
genrsa
命令。
学校项目将可用功能限制为打开、关闭、读取、写入、malloc、免费
genrsa
命令的选项标志之一是rand
。正如我从手册页了解到的,该标志旨在用于没有“机器噪音”API的系统,如linux系统上的dev/uradom
,以便可以从文件或套接字生成种子
当使用空文件反复播种时,opensslgenrsa
不会输出相同的密钥,这可能意味着它实际上使用了其他一些随机种子
问题:如何获得随机输出,就像
openssl
genrsa
命令使用空文件种子一样,而不使用dev/random
或dev/uradom
和上面指定的有限函数集?典型的做法是使用高分辨率时钟。每次运行时,时间都会不同。遗憾的是,时钟不在允许的函数之列从文件运行PRNG种子。将新文件写回文件,使下一个输出不同。文件可能只能读取,所以我看到的唯一方法是使用分配内存中的垃圾数据。显然,这是一个非常糟糕的解决方案。