Golang RSA加密/解密

package main

import (
   "crypto/x509"
   "crypto/rsa"
   "crypto/rand"
   "fmt"
   "encoding/pem"
   "errors"
)

var publicKey = []byte(`-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/ZqzVABBeUkcGUeABmK4qbKsF
X90Q/vpxU0ddg+zi44EAYeMtDyEk0tSEfElyQeRrSBo5AFKSZG6QaJMJeRyW9bWm
ZQDnbyN7U2tHV/Jnddt04Bq2O8C3xcb+7rtllb0Hu5uw8voWqkTVHiKtwYTKQkzN
1aF4aq1jcD6WDHQ9xQIDAQAB
-----END PUBLIC KEY-----
`)

var privateKey = []byte(`-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQC/ZqzVABBeUkcGUeABmK4qbKsFX90Q/vpxU0ddg+zi44EAYeMt
DyEk0tSEfElyQeRrSBo5AFKSZG6QaJMJeRyW9bWmZQDnbyN7U2tHV/Jnddt04Bq2
O8C3xcb+7rtllb0Hu5uw8voWqkTVHiKtwYTKQkzN1aF4aq1jcD6WDHQ9xQIDAQAB
AoGAY81pH6Pp5RTn/g6hTJPNdUe2oZXMEvmxo3f2RXfuBJz2fjmMmMlD0gyxTef0
8EQVlC9DpSda5wTBdkFhMlZZpiJ/WDyhJwAyTH+/arPEQGCYKxYEPro9se3JGkZV
78lo1xoPaDKQZfRIqtYe/ShgWaCEkH2ZpvWk970BgqZHo0ECQQDqQrd1VSkOb0Ps
dOkv2344bm/WxGPw/y6Rp23r+1CQ22HNtoOHT8EePk8iSADy4o2V3PWFg/a2TKAy
a0BD4lVRAkEA0SnAvNMVTdqHeANgdmlMnPVPqdIaHl/ZI71XE8iwTbMZ1dgn1vsv
DyA/YUPhdAe8jQwEE2tzCrsNZ8/3cnpUNQJAFMgyalBRwhwQ1ItSnJJGUk9J0K2/
iAO7Z+SIleTHsvIjbRKB/KEQqtQwRQRKQUHj+aWOine4jVei5pYpL1yG4QJAWQVx
P6yDU7hfkee2BY+5iNArkLaYYTcgHsL2LbhruRYyN76g7jHIDKMH9qjCavTj/hAQ
KAfCVd3YzcdIpNOFxQJACyIQ8zcFtgckVpmdRco1jrPwS3ohm1r/CnqtZX5opyVQ
184BfaBOcCJliNvJMxm/xpKjfrD9iar6rUlQ1v59dA==
-----END RSA PRIVATE KEY-----
`)

func main() {
   b, _ := RsaEncrypt([]byte("将进酒,杯莫停。"))
   fmt.Printf("%x\n", b)
   b2, _ := RsaDecrypt(b)
   fmt.Println(string(b2))
}

// 加密
func RsaEncrypt(origData []byte) ([]byte, error) {
   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!")
   }
   priv, err := x509.ParsePKCS1PrivateKey(block.Bytes)
   if err != nil {
      return nil, err
   }
   return rsa.DecryptPKCS1v15(rand.Reader, priv, ciphertext)
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值