В C++ мы можем сгенерировать истинные случайные числа (если ваше оборудование поддерживает) с помощью random_device. И я пишу реализацию алгоритма одноразового использования с C. Есть ли способ генерировать истинные случайные числа в C? Я пишу с C для скорости и некоторые другие причины. Если я использую PRNG, это будет небезопасно.Есть ли эквивалент random_device в C
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/urandom вместо/dev/random: http://stackoverflow.com/a/3709644/90511 – hugomg