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
}