Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 用有限的C99标准函数集播种伪随机函数_Linux_Macos_Openssl_C99 - Fatal编程技术网

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
,以便可以从文件或套接字生成种子

当使用空文件反复播种时,openssl
genrsa
不会输出相同的密钥,这可能意味着它实际上使用了其他一些随机种子


问题:如何获得随机输出,就像
openssl
genrsa
命令使用空文件种子一样,而不使用
dev/random
dev/uradom
和上面指定的有限函数集?

典型的做法是使用高分辨率时钟。每次运行时,时间都会不同。遗憾的是,时钟不在允许的函数之列从文件运行PRNG种子。将新文件写回文件,使下一个输出不同。文件可能只能读取,所以我看到的唯一方法是使用分配内存中的垃圾数据。显然,这是一个非常糟糕的解决方案。