Генератор псевдослучайных чисел Monero​


Monero использует PRNG на базе хеш-функции Keccak. По сути, в данном случае результат предыдущего раунда хеширования является вводом для следующего.

Начальное число берётся из источников энтропии, обеспечиваемых операционной системой. В случае с Linux и MacOS начальное число берётся из /dev/urandom. В случае с Windows для получения начального числа используется вызов WinAPI CryptGenRandom.

Повторного извлечения начального числа не происходит.

Предостережение​

  • Это касается исходного варианта реализации на C++ для Monero. Следует отметить, что существует множество альтернативных вариантов реализации для создания приватного ключа, включая JavaScript, Python, Android/Java, но их необходимо исследовать на предмет правильности от случая к случаю.

  • В исходном коде Monero вы также можете найти генератор случайных байтов на базе lipsodium. Он является частью встроенной библиотеки и, очевидно, не используется в фактическом коде Monero.

Ссылки