日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

golang非对称加密

發(fā)布時(shí)間:2025/6/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 golang非对称加密 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

密鑰生成流程

  • 生成私鑰操作流程概述

  • 使用rsa中的GenerateKey方法生成私鑰

    func GenerateKey(random io.Reader, bits int) (priv *PrivateKey, err error)

    • rand.Reader -> import "crypto/rand"
    • 1024 的整數(shù)倍 - 建議
  • 通過(guò)x509標(biāo)準(zhǔn)將得到的ras私鑰序列化為ASN.1 的 DER編碼字符串

    func MarshalPKCS1PrivateKey(key *rsa.PrivateKey) []byte

  • 將私鑰字符串設(shè)置到pem格式塊中

    初始化一個(gè)pem.Block塊

    type Block struct {Type string // 得自前言的類(lèi)型(如"RSA PRIVATE KEY")Headers map[string]string // 可選的頭項(xiàng)Bytes []byte // 內(nèi)容解碼后的數(shù)據(jù),一般是DER編碼的ASN.1結(jié)構(gòu) }
  • 通過(guò)pem將設(shè)置好的數(shù)據(jù)進(jìn)行編碼, 并寫(xiě)入磁盤(pán)文件中

    func Encode(out io.Writer, b *Block) error

    • out - 準(zhǔn)備一個(gè)文件指針
  • 生成公鑰操作流程

  • 從得到的私鑰對(duì)象中將公鑰信息取出

    type PrivateKey struct {PublicKey // 公鑰D *big.Int // 私有的指數(shù)Primes []*big.Int // N的素因子,至少有兩個(gè)// 包含預(yù)先計(jì)算好的值,可在某些情況下加速私鑰的操作Precomputed PrecomputedValues }
  • 通過(guò)x509標(biāo)準(zhǔn)將得到 的rsa公鑰序列化為字符串

    func MarshalPKIXPublicKey(pub interface{}) ([]byte, error)
  • 將公鑰字符串設(shè)置到pem格式塊中

    type Block struct {
    Type string // 得自前言的類(lèi)型(如"RSA PRIVATE KEY")
    Headers map[string]string // 可選的頭項(xiàng)
    Bytes []byte // 內(nèi)容解碼后的數(shù)據(jù),一般是DER編碼的ASN.1結(jié)構(gòu)
    }

  • 通過(guò)pem將設(shè)置好的數(shù)據(jù)進(jìn)行編碼, 并寫(xiě)入磁盤(pán)文件

    func Encode(out io.Writer, b *Block) error

RSA加解密

RSA加密

  • 將公鑰文件中的公鑰讀出, 得到使用pem編碼的字符串

    -- 讀文件

  • 將得到的字符串解碼

    -- pem.Decode

  • 使用x509將編碼之后的公鑰解析出來(lái)

    -- func ParsePKCS1PrivateKey(der []byte) (key *rsa.PrivateKey, err error)

  • 使用得到的公鑰通過(guò)rsa進(jìn)行數(shù)據(jù)加密

  • RSA解密

  • 將私鑰文件中的私鑰讀出, 得到使用pem編碼的字符串
  • 將得到的字符串解碼
  • 使用x509將編碼之后的私鑰解析出來(lái)
  • 使用得到的私鑰通過(guò)rsa進(jìn)行數(shù)據(jù)解密
  • 使用

    import ("crypto/rand""crypto/rsa""crypto/sha256""crypto/x509""encoding/hex""encoding/pem""fmt""os" )// 生成rsa的密鑰對(duì), 并且保存到磁盤(pán)文件中 func GenerateRsaKey(keySize int) {// 1. 使用rsa中的GenerateKey方法生成私鑰privateKey, err := rsa.GenerateKey(rand.Reader, keySize)if err != nil {panic(err)}// 2. 通過(guò)x509標(biāo)準(zhǔn)將得到的ras私鑰序列化為ASN.1 的 DER編碼字符串derText := x509.MarshalPKCS1PrivateKey(privateKey)// 3. 要組織一個(gè)pem.Block(base64編碼)// 里面還有個(gè)Headers屬性可以寫(xiě)可以不寫(xiě)block := pem.Block{Type : "rsa private key", // 這個(gè)地方寫(xiě)個(gè)字符串就行Bytes : derText,}// 4. pem編碼file, err := os.Create("private.pem")if err != nil {panic(err)}pem.Encode(file, &block)file.Close()// ============ 公鑰 ==========// 1. 從私鑰中取出公鑰publicKey := privateKey.PublicKey// 2. 使用x509標(biāo)準(zhǔn)序列化derstream, err := x509.MarshalPKIXPublicKey(&publicKey)if err != nil {panic(err)}// 3. 將得到的數(shù)據(jù)放到pem.Block中block = pem.Block{Type : "rsa public key", // 這個(gè)地方寫(xiě)個(gè)字符串就行Bytes : derstream,}// 4. pem編碼file, err = os.Create("public.pem")if err != nil {panic(err)}pem.Encode(file, &block)file.Close() }// RSA 加密, 公鑰加密 func RSAEncrypt(plainText []byte, fileName string) []byte{// 1. 打開(kāi)文件, 并且讀出文件內(nèi)容file, err := os.Open(fileName)if err != nil {panic(err)}fileInfo, err := file.Stat()if err != nil {panic(err)}buf := make([]byte, fileInfo.Size())file.Read(buf)file.Close()// 2. pem解碼block, _ := pem.Decode(buf)pubInterface, err := x509.ParsePKIXPublicKey(block.Bytes)//斷言類(lèi)型轉(zhuǎn)換pubKey := pubInterface.(*rsa.PublicKey)// 3. 使用公鑰加密cipherText, err := rsa.EncryptPKCS1v15(rand.Reader, pubKey, plainText)if err != nil {panic(err)}return cipherText } // RSA 解密 func RSADecrypt(cipherText []byte, fileName string) []byte{// 1. 打開(kāi)文件, 并且讀出文件內(nèi)容file, err := os.Open(fileName)if err != nil {panic(err)}fileInfo, err := file.Stat()if err != nil {panic(err)}buf := make([]byte, fileInfo.Size())file.Read(buf)file.Close()// 2. pem解碼block, _ := pem.Decode(buf)privKey, err := x509.ParsePKCS1PrivateKey(block.Bytes)if err != nil {panic(err)}// 3. 使用私鑰解密plainText, err := rsa.DecryptPKCS1v15(rand.Reader, privKey, cipherText)if err != nil {panic(err)}return plainText }//測(cè)試文件 func main() {GenerateRsaKey(4096)src := []byte("abc abc...")cipherText := RSAEncrypt(src, "public.pem")plainText := RSADecrypt(cipherText, "private.pem")fmt.Println(string(plainText))myHash()myHash() }// 使用sha256 func myHash() {// sha256.Sum256([]byte("hello, go"))// 1. 創(chuàng)建哈希接口對(duì)象myHash := sha256.New()// 2. 添加數(shù)據(jù)src := []byte("123 123...")myHash.Write(src)myHash.Write(src)myHash.Write(src)// 3. 計(jì)算結(jié)果res := myHash.Sum(nil)// 4. 格式化為16進(jìn)制形式myStr := hex.EncodeToString(res)fmt.Printf("%s\n", myStr) }

    總結(jié)

    以上是生活随笔為你收集整理的golang非对称加密的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 成年人深夜福利 | 精品视频一二三 | 亚洲成人av一区 | 黄色激情视频网站 | 久久极品 | 亚洲一区二区三区加勒比 | h部分肌肉警猛淫文 | 天堂va蜜桃一区二区三区漫画版 | 亚洲天堂婷婷 | www.白虎 | 少妇高潮一区二区三区在线 | 五月婷网站 | 青青操在线观看 | 亚欧日韩 | av高清在线观看 | 久久久久九九九 | 日韩中文字幕视频在线观看 | 超碰97最新| 91成人毛片 | 一本一道精品欧美中文字幕 | 亚洲妇女无套内射精 | 在线成人毛片 | 97人妻精品一区二区三区 | 天天爱天天干天天操 | 精品一区二区三区在线免费观看 | 国产精品久久久久一区二区三区 | 久久爱一区 | 久久高清| 国产欧美日韩专区发布 | 成年人晚上看的视频 | 国产日韩一区二区三区 | 色无极在线 | 久久久久久久久久久久久女过产乱 | 无码人妻精品一区二区三区99v | 日本精品在线观看 | www.麻豆av.com | 日韩福利在线播放 | 又色又爽又高潮免费视频国产 | 成人免费黄色小视频 | 91网站视频在线观看 | 天天舔天天射天天干 | 泰坦尼克号3小时49分的观看方法 | 久久人人爽人人 | 亚洲熟妇av乱码在线观看 | 98av视频| 亚洲日本片 | 午夜av福利 | 国产一区二区三区四区五区在线 | 韩日精品视频 | 蜜乳av 懂色av 粉嫩av | 日韩欧美中 | 中日韩在线播放 | 国产一区激情 | 日本激情网址 | 人妻精油按摩bd高清中文字幕 | 精品国产乱码久久久久夜深人妻 | 西野翔之公侵犯中文字幕 | 久久久久久亚洲中文字幕无码 | av男人的天堂在线观看 | 51精产品一区一区三区 | 自拍偷拍麻豆 | 亚洲精品伊人 | 欧美精品毛片 | 国产精品无码人妻一区二区在线 | 精品一区二区三区四区五区 | 日本视频在线免费观看 | 91精品国产91久久久久久黑人 | 伊人色av | 精品国产一区二区三区四区精华 | 春意影院福利社 | 最新av免费观看 | 青春草在线视频观看 | 顶级尤物极品女神福利视频 | 中文在线字幕免费观看电 | 真人抽搐一进一出视频 | 国产伦精品一区二区三区四区视频 | 国产精品毛片va一区二区三区 | 午夜精品久久久久久久四虎美女版 | 高潮一区二区三区 | 国产午夜精品理论片在线 | 一区二区在线免费观看视频 | 日本一级网站 | 亚洲专区一区二区三区 | 免费看黄色片网站 | 中文字幕视频免费 | 中文字幕一级 | 手机在线视频一区 | h片免费网站 | 亚洲成人一区二区三区 | 制服.丝袜.亚洲.中文.综合懂色 | 98精品国产 | 少妇捆绑紧缚av | 亚洲天堂资源 | 特级毛片在线观看 | 少妇天天干 | a黄视频 | 欧美性生活一区二区三区 | 三上悠亚人妻中文字幕在线 | 国产亚洲精品久久久久久无几年桃 |