🟢 Лёгкий · 1 очк. Безопасность
Почему пакет math/rand небезопасен для генерации токенов и паролей?
A Использует криптографически стойкий источник энтропии
B Генерирует предсказуемую последовательность на основе начального seed
C Не поддерживает генерацию байтов
D Работает только в однопоточном режиме
Объяснение вопроса

Пакет math/rand реализует псевдослучайный генератор (PRNG). Он не использует криптографически стойкий источник энтропии и полностью детерминирован: при одном и том же начальном значении (seed) выдает одну и ту же последовательность чисел.

Для токенов, паролей, ключей сессий и любых криптографических целей это недопустимо: злоумышленник может предсказать или перебрать значения.

Правильный выбор - пакет crypto/rand, который читает энтропию из ОС (например, /dev/urandom) и дает криптографически стойкие случайные байты.

import "crypto/rand"

token := make([]byte, 32)
if _, err := rand.Read(token); err != nil {
    // обработка ошибки
}
// token - криптографически стойкий

Использование math/rand для безопасности - типичная ошибка, которая может привести к подбору токенов и компрометации сессий.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.