C++では、random_deviceを使って真の乱数(ハードウェアがサポートしている場合)を生成することができます。私はCでOne-time Padアルゴリズムの実装を書いています.Cで本当の乱数を生成する方法はありますか?スピードといくつかの理由で私はCで書いています。私がPRNGを使用すると、安全ではありません。Cでrandom_device相当のものがあります
char *KeyGenerate(unsigned long long StringLength)
{
std::random_device TrueRandomNumberGenerator;
char *Key = (char *) malloc(StringLength + 1);
for(unsigned long long I = 0; I < StringLength; I++)
{
Key[I] = TrueRandomNumberGenerator();
}
Key[StringLength] = '\0';
return Key;
}
'arc4random'(利用可能な場合)は、暗号的に安全な乱数を生成します。 – user3386109
Linuxでは、 '/ dev/random'に多かれ少なかれ実際の"ランダムデバイス "を読み込むことができます。 – PSkocik
実際には、/ dev/randomの代わりに/ dev/urandomを使用することをお勧めします:http://stackoverflow.com/a/3709644/90511 – hugomg