如何使用Golang中的Openssl RSA公共私钥对加密和解密数据?

问题描述 投票:0回答:1

我正在尝试编写一个程序,使用RSA公钥加密数据,并使用私钥解密数据。 RSA密钥是使用openssl工具生成的。

为此,我找到了Spacemonkeygo Openssl https://github.com/spacemonkeygo/openssl包装纸。但无法找到任何样本,也没有找到相同的文件。所以我无法使用。

请指导我如何在Golang中使用Openssl?

我正在使用第一次加密解密和Openssl。

先感谢您!

go openssl public-key-encryption
1个回答
1
投票

我正在尝试编写一个程序,使用RSA公钥加密数据,并使用私钥解密数据。 RSA密钥是使用openssl工具生成的。

您不需要OpenSSL库包来执行此操作:您只需要Go标准库中的一些cryptoencoding和其他包。即:

从密钥创建PEM块,将Type设置为“RSA PRIVATE KEY”或“RSA PUBLIC KEY”,使用x509函数解析密钥(PKIX for public),使用类型断言使其成为适当的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版本生成的私钥对齐。

© www.soinside.com 2019 - 2024. All rights reserved.