Я пытаюсь написать программу, которая шифрует данные, используя открытый ключ RSA, и дешифрует данные, используя закрытый ключ.Ключи RSA были сгенерированы с помощью инструмента openssl.
Для этого вам не нужен пакет библиотеки OpenSSL: вам просто нужны некоторые из crypto
, encoding
и другие пакеты вИди в стандартную библиотеку.А именно:
Создайте блок PEM из ключа, установив для Type
значение «RSA PRIVATE KEY» или «RSA PUBLIC KEY», проанализируйте ключи с помощью функций x509
(PKIX для общественности), используйте утверждение типа, чтобы сделатьэто соответствующий открытый / закрытый тип RSA, шифрование сообщения с использованием дополнения OAEP, хэш-функции SHA-256 и rand.Reader
для источника энтропии, Base64 кодирует полученный шифр, если вы отправляете его как текст, а не как двоичныйзатем base64 декодирует и расшифровывает его, используя тот же, но с закрытым ключом на другой стороне.
См., в частности, func EncryptOAEP(hash hash.Hash, random io.Reader, pub *PublicKey, msg []byte, label []byte) ([]byte, error)
.
пакеты и некоторая общая информация о шифровании и RSA, есть также примеры использования каждого из этих пакетов в StackOverflow - хотя, возможно, и не все вместе.
Каждый пакет, необходимый для описанной цели, находится в стандартной библиотеке Go.
Возможно, вам придется проверить, совпадает ли версия вашей функции PKCS (например, PKCS8) с закрытым ключом, созданным вашей версией OpenSSL.