Функция 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