Random в Go сложнее, чем кажется — 15 апреля 2026 г. в 11:45:04.237
Random в Go сложнее, чем кажется Кажется, что в Go есть один генератор случайных чисел. На деле их несколько, и они сильно отличаются по назначению. Самый старый вариант живёт в math/rand. Это быстрый генератор для обычных задач, но к безопасности он отношения не имеет. В новых версиях появился math/rand/v2. Там уже два варианта. PCG для скорости и ChaCha8 для сценариев, где нужна криптостойкость. Для безопасности используется crypto/rand. Он не генерирует числа сам, а обращается к системе. В Linux это getrandom, в macOS и BSD свои механизмы. Дальше начинается то, о чём многие не знают. Если нужна сертификация FIPS, можно переключиться на BoringSSL. Это отдельный криптостек с требованиями госстандартов. А в Go 1.24 появился нативный режим FIPS. Без внешних библиотек. Там используется DRBG, который инициализируется от системного генератора и работает уже по правилам стандарта. В итоге в Go нет универсального RNG. Есть несколько уровней, и важно понимать, какой именно ты используешь в конкретной задаче.

