Linux/POSIX における Windows の rand_s の最良の代替品は何ですか?
-
02-07-2019 - |
質問
問題はランダム性そのもの (rand がある) に関するものではなく、暗号的に安全な PRNG にあります。Linux、または理想的には POSIX では何が使用できますか?NSS には何か役立つものがありますか?
説明:/dev/random については知っていますが、エントロピー プールが不足する可能性があります。また、/dev/urandom が暗号的に安全であることが保証されているかどうかもわかりません。
解決
使用 /dev/random
(マウスの動きなどのユーザー入力が必要です) または /dev/urandom
. 。後者にはエントロピー プールがあり、プールが空でない限りユーザー入力は必要ありません。
次のようにプールから読み取ることができます。
char buf[100];
FILE *fp;
if (fp = fopen("/dev/urandom", "r")) {
fread(&buf, sizeof(char), 100, fp);
fclose(fp);
}
あるいはそのようなものです。
他のヒント
から ウィキペディア (私の斜体):
/dev/random に相当するのは、内部プールを再利用してより多くの擬似ランダム ビットを生成する /dev/urandom (「ロックされていない」ランダム ソース) です。これは、呼び出しはブロックされませんが、出力に含まれるエントロピーが /dev/random からの対応する読み取りよりも少ない可能性があることを意味します。の 意図 として奉仕することです 暗号的に安全な擬似乱数生成器. 。これは、安全性の低いアプリケーションに使用される可能性があります。
の /dev/random
デバイスは、暗号的に安全なビットのソースとなることを目的としています。
所属していません StackOverflow