Как зашифровать и расшифровать данные с помощью пары открытого закрытого ключа Openssl RSA в Голанге? - PullRequest
0 голосов
/ 16 сентября 2018

Я пытаюсь написать программу, которая шифрует данные, используя открытый ключ RSA, и дешифрует данные, используя закрытый ключ.Ключи RSA были сгенерированы с помощью инструмента openssl.

Для этой цели я нашел оболочку Spacemonkeygo Openssl https://github.com/spacemonkeygo/openssl.Но не может найти ни одного образца, а также их нет на тот же документ.Так что я не могу использовать.

Скажите, пожалуйста, как я могу использовать Openssl на Голанге?

Я использую шифрование для первого шифрования и Openssl.

Заранее спасибо!

1 Ответ

0 голосов
/ 16 сентября 2018

Я пытаюсь написать программу, которая шифрует данные, используя открытый ключ 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.

...