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

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

Синтаксис

gorand.Prime(rand.Reader, bits)

Пример

Давайте сгенерируем простое число размером 64 бита:

gopackage main

import (
  "crypto/rand"
  "fmt"
  "math/big"
)

func main() {
  prime, err := rand.Prime(rand.Reader, 64)
  if err != nil {
    fmt.Println("Error generating prime:", err)
    return
  }
  fmt.Println(prime)
}

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

go"1234567890123456789"

Пример

Проверим, что сгенерированное число действительно является простым, с помощью метода ProbablyPrime:

gopackage main

import (
  "crypto/rand"
  "fmt"
  "math/big"
)

func main() {
  prime, err := rand.Prime(rand.Reader, 32)
  if err != nil {
    fmt.Println("Error generating prime:", err)
    return
  }

  isPrime := prime.ProbablyPrime(10)
  fmt.Println("Is prime:", isPrime)
}

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

go"Is prime: true"

Пример

Сгенерируем простое число размером 128 бит для использования в криптографических операциях:

gopackage main

import (
  "crypto/rand"
  "fmt"
  "math/big"
)

func main() {
  prime, err := rand.Prime(rand.Reader, 128)
  if err != nil {
    fmt.Println("Error generating prime:", err)
    return
  }
  fmt.Println("Prime length in bits:", prime.BitLen())
}

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

go"Prime length in bits: 128"

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

  • функцию crypto/rand.Read,
    которая заполняет байтовый срез криптостойкими случайными данными
  • функцию crypto/rand.Int,
    которая генерирует случайное целое число в заданном диапазоне
  • функцию rsa.GenerateKey,
    которая использует простые числа для создания RSA-ключа
  • пакет crypto/rand,
    который предоставляет криптостойкий генератор случайных чисел