Относительно недавно я проводил ревизию зависимостей в нашем бэкенде на ноде и внимание моё привлекла одна маленькая библиотечка — generate-sms-verification-code. Как понятно из названия, единственная её задача — генерировать цифровые смс коды для верификации. Сама по себе, библиотека очень простая, исходный код помещается в 20 строчек, и она использует Math.random. Все популярные библиотеки, которые я полистал на npm, были построены именно на старом добром методе получения псевдослучайного числа. В ноде, начиная с версии 12.19, во встроенном модуле crypto, имеется функция randomInt, которая позволяет получать случайное целое число в указанном диапазоне, и, для целей OTP (one time password) алгоритм, используемый в crypto, подходит гораздо лучше. Отличия алгоритмов randomInt и Math.random Я не спец в C++, но из того что я смог понять из исходников Node.js — реализация Math.random основана на алгоритме xorshift128+, в то время как, crypto.randomInt базируется на RAND_bytes из OpenSSL.