美文网首页
非对称加密RSA-公钥的加解密

非对称加密RSA-公钥的加解密

作者: 够浪你大哥 | 来源:发表于2019-01-17 22:24 被阅读0次
package main

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

//用公钥进行加密
func rsPubKeyWEncrypt(src []byte,fileName string)[]byte  {
    //1.从公钥文件读取公钥,得到pem编码后的数据
    bytes, err := ioutil.ReadFile(fileName) //获取公钥
    if err != nil {
        panic(err)
    }

    //2.对数据进行解码(decode)得到block
    block, _ := pem.Decode(bytes)           //进行解码,得到块

    //3.得到block中的bytes,即der格式的字节流
    derText := block.Bytes                  //拆解块,得到字节流

    //4.解析字节流,得到公钥
    publicKey,err := x509.ParsePKCS1PublicKey(derText)
    if err != nil {
        panic(err)
    }

    //5.使用公钥进行加密                        //随机数生成器,公钥,明文进行加密
    pkcs1v15, err := rsa.EncryptPKCS1v15(rand.Reader, publicKey, src)
    if err != nil {
        panic(err)
    }
    return pkcs1v15

}

//用私钥进行解密
func rsaPriKeyDecrypt(encrypt []byte,fileName string)[]byte  {
    //1.从私钥文件读取数据,得到pem编码后的数据
    bytes, err := ioutil.ReadFile(fileName)
    if err != nil {
        panic(err)
    }

    //2.对数据进行解码(decode)得到block
    block, _ := pem.Decode(bytes)

    //3.得到block中的bytes,即der格式的字节流
    derText := block.Bytes

    //4.解析字节流,得到私钥钥
    privateKey,err := x509.ParsePKCS1PrivateKey(derText)
    if err != nil {
        panic(err)
    }

    //5.使用私钥进行解密
    pkcs1v15, err := rsa.DecryptPKCS1v15(rand.Reader, privateKey, encrypt)
    if err != nil {
        panic(err)
    }
    return pkcs1v15
}

func main() {
    src :=[]byte("生死看淡,不服就干")
    
    //进行加密
    encrypt := rsPubKeyWEncrypt(src, "./rsaPublicKey.pem")
    fmt.Printf("encrypt:%x\n",encrypt)
    
    //进行解密
    decrypt := rsaPriKeyDecrypt(encrypt, "./rsaPrivateKey.pem")
    fmt.Printf("decrypt:%s\n",decrypt)
}

相关文章

  • 非对称加密RSA-公钥的加解密

  • 公钥加解密、数字签名、CA证书简介

    本文对信息安全领域中的公钥加密、数字签名、CA证书技术进行初步介绍。 公钥加密(RSA)是非对称加密算法,加解密前...

  • RSA加密算法

    RSA加解密、签名验签過程 RSA加密是一种非对称加密,通常使用公钥加密,私钥解密,私钥签名,公钥验签。私钥是個人...

  • Java实现DH密钥交换算法

    前言 非对称加密算法 加密密钥分为公钥和私钥。可以使用公钥加密私钥解密,也可以使用私钥加密公钥解密。非对称加密算法...

  • Rsa加解密

    /*** Rsa 加解密* 用法:* (1)公钥加密,私钥解密* (2)私钥加密,公钥解密*/class ...

  • RSA非对称加密算法

    RSA算法,经典非对称加密算法,通过生成公钥 私钥 进行加密解密 公钥加密 私钥解密 反之 私钥加密 公钥...

  • RSA加解密学习笔记

    RSA加解密简单说明: RSA是非对称加密方式,就是说加密解密不是同一个Key。私钥加密公钥解密,待加密的明文字节...

  • 非对称加密、SSH加密算法、数字签名简介

    非对称加密算法的核心源于数学问题,它存在公钥和私钥的概念,要完成加解密操作,需要两个密钥同时参与。我们常说的“公钥...

  • https+ ca证书

    非对称加密 1.公钥加密,私钥可以解密;2.私钥加密,公钥可以解密;3.公钥解密,公钥不可以解密; 伪造公钥 用户...

  • 密码学基础(三):非对称加密(RSA算法原理)

    什么是RSA加密 加密和解密使用的是两个不同的秘钥,这种算法叫做非对称加密。非对称加密又称为公钥加密,RSA只是公...

网友评论

      本文标题:非对称加密RSA-公钥的加解密

      本文链接:https://www.haomeiwen.com/subject/zqwwdqtx.html