golang实现RSA加密解密算法

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 main

import (
	"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))
}

你可能感兴趣的:(golang,golang,算法,开发语言)