golang实现RSA加密解密算法
前言一、生成密钥对(公钥私钥)二、根据公钥加密二、根据私钥解密总结前言
直接看正文吧!
一、生成密钥对(公钥私钥)
代码如下(示例):
//生成私钥privateKey, err := rsa.GenerateKey(rand.Reader, 2048)if err != nil {panic(err)}//生成公钥publicKey := privateKey.PublicKey
二、根据公钥加密
代码如下(示例):
encryptedBytes, err := rsa.EncryptOAEP(sha256.New(),rand.Reader,&publicKey,[]byte("测试哈哈哈"),//需要加密的字符串nil)
二、根据私钥解密
代码如下(示例):
decryptedBytes, err := privateKey.Decrypt(nil, encryptedBytes, &rsa.OAEPOptions{Hash: crypto.SHA256})
总结
完整代码如下(示例):
//RSA加密和解密package mainimport ("crypto""crypto/rand""crypto/rsa""crypto/sha256""fmt")func main() {//生成私钥privateKey, err := rsa.GenerateKey(rand.Reader, 2048)if err != nil {panic(err)}//生成公钥publicKey := privateKey.PublicKey//根据公钥加密encryptedBytes, err := rsa.EncryptOAEP(sha256.New(),rand.Reader,&publicKey,[]byte("测试哈哈哈"),//需要加密的字符串nil)if err != nil {panic(err)}fmt.Println("encrypted bytes: ", encryptedBytes)//根据私钥解密decryptedBytes, err := privateKey.Decrypt(nil, encryptedBytes, &rsa.OAEPOptions{Hash: crypto.SHA256})if err != nil {panic(err)}fmt.Println("decrypted message: ", string(decryptedBytes))}