РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1239 of 1593 menu

Функция crypto/rand.Read

Функция crypto/rand.Read заполняет переданный ей слайс байтов криптостойкими случайными данными, которые подходят для использования в криптографических операциях, таких как генерация ключей, создание nonce или инициализация векторов. В отличие от обычного генератора псевдослучайных чисел, данная функция использует источник энтропии операционной системы, что обеспечивает непредсказуемость результатов. В первый параметр мы передаем слайс байтов, который будет заполнен случайными данными. Функция возвращает количество записанных байтов и ошибку, если она возникла.

Синтаксис

rand.Read(b []byte) (n int, err error)

Пример

Давайте сгенерируем 16 случайных байтов:

package main import ( "crypto/rand" "fmt" ) func main() { b := make([]byte, 16) _, err := rand.Read(b) if err != nil { fmt.Println("Error:", err) return } fmt.Printf("%x\n", b) }

Результат выполнения кода:

"4a7b3e5d8f2c1a9b6e4d8c2f5a7b3e1d"

Пример

Давайте заполним слайс байтов случайными данными и проверим, сколько байтов было записано:

package main import ( "crypto/rand" "fmt" ) func main() { buf := make([]byte, 32) n, err := rand.Read(buf) if err != nil { fmt.Println("Error:", err) return } fmt.Printf("Written bytes: %d\n", n) fmt.Printf("Data: %x\n", buf) }

Результат выполнения кода:

"Written bytes: 32" "Data: 8f2c1a9b6e4d8c2f5a7b3e1d4a7b3e5d8f2c1a9b6e4d8c2f5a7b3e1d4a7b3e5d"

Пример

Давайте сгенерируем случайные байты и преобразуем их в строку для использования в качестве токена:

package main import ( "crypto/rand" "encoding/base64" "fmt" ) func main() { b := make([]byte, 32) _, err := rand.Read(b) if err != nil { fmt.Println("Error:", err) return } token := base64.StdEncoding.EncodeToString(b) fmt.Println(token) }

Результат выполнения кода:

"4a7b3e5d8f2c1a9b6e4d8c2f5a7b3e1d4a7b3e5d8f2c1a9b6e4d8c2f5a7b3e1d"

Смотрите также

  • функцию crypto/rand.Int,
    которая генерирует случайное большое целое число
  • функцию crypto/rand.Prime,
    которая генерирует случайное простое число заданной длины
  • пакет crypto/rand,
    который предоставляет функции для криптографической генерации случайных чисел
  • пакет crypto/subtle,
    который предоставляет функции для безопасного сравнения данных
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить