Go语言:从证书字符串解析公钥,RSA算法加密数据
最近遇到个需求,需要将参数进行RSA加密之后,再传输,第一次搞RSA加密,记录一下
提供了证书字符串(不是文件,是一串字符串),需要从证书字符串中解析出公钥,在网上浏览了多篇帖子,终于搞定了,代码如下:
const (
// 证书
CERT = "MIIF*****@#¥@¥#……%!¥%%……&*&……%@"
)
// RSA加密数据
func RsaEncrypt(origData []byte) (cipherByte []byte, err error) {
// 读取公钥证书
certSlc, errCert := base64.StdEncoding.DecodeString(CERT)
if errCert != nil {
global.GVA_LOG.Error("读取公钥证书时出错!", zap.Any("errCert", errCert))
return
}
//证书解析
certBody, errCertBody := x509.ParseCertificate(certSlc)
if errCertBody != nil {
global.GVA_LOG.Error("证书解析时出错!", zap.Any("errCertBody", errCertBody))
return
}
// 提取公钥
rsaPublicKey := certBody.PublicKey.(*rsa.PublicKey)
// 对明文进行加密,PKCS(公钥密码标准),#1就是RSA的标准
cipherByte, err = rsa.EncryptPKCS1v15(rand.Reader, rsaPublicKey, origData)
return
}