我正在尝试编写一个程序,该程序使用RSA公钥加密数据,并使用私钥解密数据。 RSA密钥是使用openssl工具生成的。
我为此找到了Spacemonkeygo Openssl https://github.com/spacemonkeygo/openssl包装器。但是无法找到任何样本,而且他们也没有相同的文件。使我无法使用。
请指导我如何在Golang中使用Openssl?
我正在使用首次加密解密和Openssl。
提前谢谢!
答案 0 :(得分:1)
我正在尝试编写一个使用RSA public加密数据的程序 并使用私钥解密数据。 RSA密钥是 用openssl工具生成。
您不需要OpenSSL库软件包来执行此操作:您只需要Go标准库中的某些crypto
,encoding
和其他软件包。即:
根据密钥创建一个PEM块,将Type
设置为“ RSA PRIVATE KEY”或“ RSA PUBLIC KEY”,使用x509
函数(对于公共PKIX)解析密钥,使用一种类型断言以使其成为适当的RSA公共/私有类型,使用OAEP填充,SHA-256哈希函数和rand.Reader
作为熵的源对消息进行加密,如果将其作为文本,而不是二进制文件,然后base64对其进行解码,并使用相同的文本进行解密,但另一端使用私钥。
阅读这些软件包中的文档以及一些有关加密和RSA的常规信息,还有StackOverflow上每个软件包的用法示例-尽管可能未将它们放在一起。
您需要的每个软件包都在Go标准库中。
您可能需要检查PKCS功能版本(例如PKCS8)是否与OpenSSL版本产生的私钥对齐。