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

Функция rsa.GenerateKey

Функция rsa.GenerateKey генерирует новую пару RSA-ключей (приватный и публичный). В первый параметр необходимо передать криптографически безопасный генератор случайных чисел, обычно это rand.Reader из пакета crypto/rand. Во второй параметр передается размер ключа в битах (рекомендуемый минимум - 2048 бит). Функция возвращает указатель на структуру rsa.PrivateKey и ошибку, если генерация не удалась.

Синтаксис

rsa.GenerateKey(rand io.Reader, bits int) (*rsa.PrivateKey, error)

Пример

Давайте сгенерируем RSA-ключ размером 2048 бит и выведем размеры публичного и приватного ключей:

package main import ( "crypto/rand" "crypto/rsa" "fmt" ) func main() { privateKey, err := rsa.GenerateKey(rand.Reader, 2048) if err != nil { fmt.Println("Error generating key:", err) return } publicKey := &privateKey.PublicKey fmt.Printf("Private key size: %d bits\n", privateKey.N.BitLen()) fmt.Printf("Public key size: %d bits\n", publicKey.N.BitLen()) }

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

"Private key size: 2048 bits" "Public key size: 2048 bits"

Пример

Сгенерируем ключ размером 1024 бита и проверим, что он не является нулевым:

package main import ( "crypto/rand" "crypto/rsa" "fmt" ) func main() { privateKey, err := rsa.GenerateKey(rand.Reader, 1024) if err != nil { fmt.Println("Error:", err) return } if privateKey != nil && privateKey.N != nil { fmt.Println("Key generated successfully") } }

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

"Key generated successfully"

Пример

Сгенерируем ключ с нестандартным размером 4096 бит и выведем его публичную экспоненту:

package main import ( "crypto/rand" "crypto/rsa" "fmt" ) func main() { privateKey, err := rsa.GenerateKey(rand.Reader, 4096) if err != nil { fmt.Println("Failed:", err) return } fmt.Printf("Public exponent: %d\n", privateKey.PublicKey.E) }

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

"Public exponent: 65537"

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

  • функцию rsa.EncryptPKCS1v15,
    которая шифрует данные с использованием RSA PKCS#1 v1.5
  • функцию rsa.DecryptPKCS1v15,
    которая расшифровывает данные с использованием RSA PKCS#1 v1.5
  • функцию rsa.SignPKCS1v15,
    которая создает подпись с использованием RSA PKCS#1 v1.5
  • функцию rsa.VerifyPKCS1v15,
    которая проверяет подпись RSA PKCS#1 v1.5
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить