温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

GO怎么实现RSA的公钥加密私钥解密

发布时间:2021-06-12 17:02:54 来源:亿速云 阅读:552 作者:小新 栏目:大数据

这篇文章将为大家详细讲解有关GO怎么实现RSA的公钥加密私钥解密,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

package main   import (	"crypto/rand"	"crypto/rsa"	"crypto/x509"	"encoding/base64"	"encoding/pem"	"errors"	"fmt" )   // 可通过openssl产生 //openssl genrsa -out rsa_private_key.pem 1024 var privateKey = []byte(` -----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQCrGh2sc5AKD1EQ8WdA1iWF4m7wXtO6WoS7Dtfd0Jm2ud+LKBQ+ e7R6YIXnwfEKB/4Jm+jNtCi7/Zrx5gtEpUuVAyrEo5+qr5al5KibeJq3xyI/626I BsDMFX5o3WOoXceTF7+lgi6r+OuokqFJgpeh7YANXQ8Y8mn8ucw+Ly+LbQIDAQAB AoGAGgoxbC3yP/WwyrlSk4WD1Gpvo9lqs7PO+4D4zWNP4YVMRitlWVUOVImYF3tm qbYprWCy/4tpn6KrECGImXvmkplXPxd4x3W+haZftx3VjTwh6fvT9yHp4swXxN+h LMItDdIOWS4U6wVJa77Dy7VfK303LZrPLqnxkf4oEywp5YECQQDZOz1WD7nOqOiy AlwDhfeLTmArN0f+gV6RLrxMp2XRqC2DN5nMq5O5BVVMK9LBgArNqYfxWYuMa3K2 qliRDPPxAkEAyaNWq/fDvjpK9TgztqsHIiG+cUQpWI759zt5qHNA+QF4L43dtAVZ zBR/uam1jnRuM6K0ZCSZo2ITiqapmk8bPQJAEd9d3IbOssIS4xJun5uWElAQeX3C 3p2mOiuuMmBTcDx2AiXA8aXsMXzO18WDQYhXWzRniuPjJ1pvxbeeMdDvAQJBAMDh uZAJEzrOAlQurfFICyvQQZ+Rx0dKhbzFLOxBS96mVDSRLYn+MFbzKPcOa3lY0O4d 7xd4l2td7zmLkePlVjUCQQCY8VuIfKc0+AWvPnktKXbx9bBdJZSDginZM5cu7pdx W0uB9KZoLqgbGLIvWrLyA6SBqo87Q1j1//wFgLP+A2Gn -----END RSA PRIVATE KEY----- `)   //openssl //openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem var publicKey = []byte(` -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrGh2sc5AKD1EQ8WdA1iWF4m7w XtO6WoS7Dtfd0Jm2ud+LKBQ+e7R6YIXnwfEKB/4Jm+jNtCi7/Zrx5gtEpUuVAyrE o5+qr5al5KibeJq3xyI/626IBsDMFX5o3WOoXceTF7+lgi6r+OuokqFJgpeh7YAN XQ8Y8mn8ucw+Ly+LbQIDAQAB -----END PUBLIC KEY----- `)   // 加密 func RsaEncrypt(origData []byte) ([]byte, error) {	//解密pem格式的公钥	block, _ := pem.Decode(publicKey)	if block == nil {	return nil, errors.New("public key error")	}	// 解析公钥	pubInterface, err := x509.ParsePKIXPublicKey(block.Bytes)	if err != nil {	return nil, err	}	// 类型断言	pub := pubInterface.(*rsa.PublicKey)	//加密	return rsa.EncryptPKCS1v15(rand.Reader, pub, origData) }   // 解密 func RsaDecrypt(ciphertext []byte) ([]byte, error) {	//解密	block, _ := pem.Decode(privateKey)	if block == nil {	return nil, errors.New("private key error!")	}	//解析PKCS1格式的私钥	priv, err := x509.ParsePKCS1PrivateKey(block.Bytes)	if err != nil {	return nil, err	}	// 解密	return rsa.DecryptPKCS1v15(rand.Reader, priv, ciphertext) }   func main() {	data, _ := RsaEncrypt([]byte("test dataΩ...2"))	fmt.Println(base64.StdEncoding.EncodeToString(data))	origData, _ := RsaDecrypt(data)	fmt.Println(string(origData)) }

关于“GO怎么实现RSA的公钥加密私钥解密”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

go
AI