黄视频网站在线免费观看-黄视频网站在线看-黄视频网站在线观看-黄视频网站免费看-黄视频网站免费观看-黄视频网站免费

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > Go語言常用加密算法和加密技術全面解析!

Go語言常用加密算法和加密技術全面解析!

來源:千鋒教育
發布人:xqq
時間: 2023-12-27 06:59:54 1703631594

Go語言常用加密算法和加密技術全面解析!

在現代計算機領域,安全性非常重要,而加密技術是保證計算機信息系統安全性的重要措施之一。為了滿足這個需求,Go語言提供了豐富的加密算法和加密技術,本文將為大家詳細解析Go語言中常用的加密算法和加密技術。

一、對稱加密算法

對稱加密算法是加密和解密使用相同的密鑰的一種加密方式。常用的對稱加密算法有DES、3DES、AES等。Go語言中的crypto包中提供了多種對稱加密算法。

以下是一個示例,使用AES加密算法加密字符串,然后再進行解密:

`go

package main

import (

"crypto/aes"

"crypto/cipher"

"fmt"

)

func AesEncrypt(plainText, key byte) (byte, error) {

block, err := aes.NewCipher(key)

if err != nil {

return nil, err

}

iv := byte("1234567890123456")

plainText = pkcs5Padding(plainText, block.BlockSize())

blockMode := cipher.NewCBCEncrypter(block, iv)

cipherText := make(byte, len(plainText))

blockMode.CryptBlocks(cipherText, plainText)

return cipherText, nil

}

func AesDecrypt(cipherText, key byte) (byte, error) {

block, err := aes.NewCipher(key)

if err != nil {

return nil, err

}

iv := byte("1234567890123456")

blockMode := cipher.NewCBCDecrypter(block, iv)

plainText := make(byte, len(cipherText))

blockMode.CryptBlocks(plainText, cipherText)

plainText = pkcs5UnPadding(plainText)

return plainText, nil

}

func pkcs5Padding(cipherText byte, blockSize int) byte {

padding := blockSize - len(cipherText)%blockSize

padText := bytes.Repeat(byte{byte(padding)}, padding)

return append(cipherText, padText...)

}

func pkcs5UnPadding(plainText byte) byte {

length := len(plainText)

unPadding := int(plainText)

return plainText

}

func main() {

plainText := byte("Hello World")

key := byte("12345678901234567890123456789012")

cipherText, err := AesEncrypt(plainText, key)

if err != nil {

fmt.Println(err)

return

}

fmt.Printf("Cipher Text: %x\n", cipherText)

plainTextResult, err := AesDecrypt(cipherText, key)

if err != nil {

fmt.Println(err)

return

}

fmt.Printf("Plain Text: %s\n", plainTextResult)

}

二、非對稱加密算法非對稱加密算法也稱為公鑰加密算法,加密和解密使用不同的密鑰。常用的非對稱加密算法有RSA、ECC等。Go語言中的crypto包中也提供了多種非對稱加密算法。以下是一個示例,使用RSA加密算法加密字符串,然后再進行解密:`gopackage mainimport (    "crypto/rand"    "crypto/rsa"    "crypto/x509"    "encoding/pem"    "fmt")func RsaEncrypt(plainText byte, publicKey byte) (byte, error) {    block, _ := pem.Decode(publicKey)    if block == nil {        return nil, fmt.Errorf("public key pem decode failed")    }    pubInterface, err := x509.ParsePKIXPublicKey(block.Bytes)    if err != nil {        return nil, err    }    pub := pubInterface.(*rsa.PublicKey)    cipherText, err := rsa.EncryptPKCS1v15(rand.Reader, pub, plainText)    if err != nil {        return nil, err    }    return cipherText, nil}func RsaDecrypt(cipherText byte, privateKey byte) (byte, error) {    block, _ := pem.Decode(privateKey)    if block == nil {        return nil, fmt.Errorf("private key pem decode failed")    }    pri, err := x509.ParsePKCS8PrivateKey(block.Bytes)    if err != nil {        return nil, err    }    priKey := pri.(*rsa.PrivateKey)    plainText, err := rsa.DecryptPKCS1v15(rand.Reader, priKey, cipherText)    if err != nil {        return nil, err    }    return plainText, nil}func main() {    plainText := byte("Hello World")    publicKey, privateKey := GenerateRsaKeyPair(2048)    cipherText, err := RsaEncrypt(plainText, publicKey)    if err != nil {        fmt.Println(err)        return    }    fmt.Printf("Cipher Text: %x\n", cipherText)    plainTextResult, err := RsaDecrypt(cipherText, privateKey)    if err != nil {        fmt.Println(err)        return    }    fmt.Printf("Plain Text: %s\n", plainTextResult)}func GenerateRsaKeyPair(bitsize int) (byte, byte) {    priKey, err := rsa.GenerateKey(rand.Reader, bitsize)    if err != nil {        return nil, nil    }    priDER := x509.MarshalPKCS1PrivateKey(priKey)    priPEM := pem.EncodeToMemory(&pem.Block{        Type:  "RSA PRIVATE KEY",        Bytes: priDER,    })    publicKey := priKey.PublicKey    pubDER, err := x509.MarshalPKIXPublicKey(&publicKey)    if err != nil {        return nil, nil    }    pubPEM := pem.EncodeToMemory(&pem.Block{        Type:  "PUBLIC KEY",        Bytes: pubDER,    })    return pubPEM, priPEM}

三、哈希算法

哈希算法將任意長度的消息壓縮到固定長度的摘要中。常用的哈希算法有SHA-1、SHA-256、MD5等。Go語言中的crypto包中也提供了多種哈希算法。

以下是一個示例,使用SHA-256算法計算字符串的哈希值:

`go

package main

import (

"crypto/sha256"

"fmt"

)

func ComputeSha256Hash(data byte) byte {

h := sha256.New()

h.Write(data)

return h.Sum(nil)

}

func main() {

data := byte("Hello World")

hash := ComputeSha256Hash(data)

fmt.Printf("SHA-256 Hash: %x\n", hash)

}

四、數字簽名數字簽名是一種基于公鑰密碼學的技術,用來保證消息的完整性、真實性和不可否認性。常用的數字簽名算法有RSA、ECC等。Go語言中的crypto包中也提供了多種數字簽名算法。以下是一個示例,使用RSA算法對數據進行數字簽名,然后再進行驗證:`gopackage mainimport (    "crypto/rand"    "crypto/rsa"    "crypto/sha256"    "crypto/x509"    "encoding/pem"    "fmt")func RsaSign(data byte, privateKey byte) (byte, error) {    block, _ := pem.Decode(privateKey)    if block == nil {        return nil, fmt.Errorf("private key pem decode failed")    }    pri, err := x509.ParsePKCS8PrivateKey(block.Bytes)    if err != nil {        return nil, err    }    priKey := pri.(*rsa.PrivateKey)    h := sha256.New()    h.Write(data)    hash := h.Sum(nil)    signature, err := rsa.SignPKCS1v15(rand.Reader, priKey, crypto.SHA256, hash)    if err != nil {        return nil, err    }    return signature, nil}func RsaVerify(data, signature, publicKey byte) (bool, error) {    block, _ := pem.Decode(publicKey)    if block == nil {        return false, fmt.Errorf("public key pem decode failed")    }    pubInterface, err := x509.ParsePKIXPublicKey(block.Bytes)    if err != nil {        return false, err    }    pub := pubInterface.(*rsa.PublicKey)    h := sha256.New()    h.Write(data)    hash := h.Sum(nil)    err = rsa.VerifyPKCS1v15(pub, crypto.SHA256, hash, signature)    if err != nil {        return false, err    }    return true, nil}func main() {    data := byte("Hello World")    publicKey, privateKey := GenerateRsaKeyPair(2048)    signature, err := RsaSign(data, privateKey)    if err != nil {        fmt.Println(err)        return    }    fmt.Printf("Signature: %x\n", signature)    ok, err := RsaVerify(data, signature, publicKey)    if err != nil {        fmt.Println(err)        return    }    fmt.Printf("Verify Result: %t\n", ok)}

總結:

上述代碼示例了Go語言中常用的加密算法和加密技術,包括對稱加密算法、非對稱加密算法、哈希算法和數字簽名。這些技術在實際應用中非常有用,能夠幫助開發人員保證系統的安全性。

以上就是IT培訓機構千鋒教育提供的相關內容,如果您有web前端培訓鴻蒙開發培訓python培訓linux培訓,java培訓,UI設計培訓等需求,歡迎隨時聯系千鋒教育。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
91麻豆精品国产高清在线| 免费国产在线观看| 四虎久久影院| 亚欧乱色一区二区三区| 国产麻豆精品视频| 久久99这里只有精品国产| 亚洲精品久久玖玖玖玖| 九九热国产视频| 久久精品人人做人人爽97| 国产成a人片在线观看视频| 成人在免费观看视频国产| 国产激情一区二区三区| 一级女性全黄生活片免费| 欧美激情一区二区三区视频 | 国产一区国产二区国产三区| 午夜在线影院| 你懂的国产精品| 亚欧视频在线| 久久精品道一区二区三区| 精品国产一区二区三区精东影业| 欧美激情伊人| 亚洲精品久久玖玖玖玖| 精品国产亚洲人成在线| 国产麻豆精品视频| 日韩男人天堂| 天天做人人爱夜夜爽2020 | 欧美激情一区二区三区中文字幕| 久久久成人影院| 欧美一级视频免费观看| 日韩专区在线播放| 高清一级淫片a级中文字幕| 国产网站在线| 国产一区二区精品| 日韩在线观看免费| 日本在线www| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 韩国毛片免费| 一级毛片视频播放| 国产a一级| 美女免费黄网站| 精品视频一区二区三区| 国产韩国精品一区二区三区| 日日夜夜婷婷| 国产一区精品| 韩国三级香港三级日本三级| 日韩在线观看视频免费| 国产亚洲精品aaa大片| 黄视频网站在线观看| 国产不卡精品一区二区三区| 在线观看成人网 | 国产a视频| 亚欧乱色一区二区三区| 亚洲第一色在线| 国产综合91天堂亚洲国产| 国产高清视频免费| 韩国毛片免费大片| 国产视频久久久久| 欧美另类videosbestsex高清 | 九九九国产| 免费一级片在线| 日本特黄特黄aaaaa大片| 一级毛片视频播放| 青青久久精品| 精品国产一区二区三区久久久蜜臀| 国产精品1024在线永久免费| 韩国毛片基地| 国产综合成人观看在线| 麻豆网站在线看| 亚洲精品中文字幕久久久久久| 午夜在线影院| 欧美大片一区| 久久99中文字幕久久| 天天色成人| 韩国三级视频在线观看| 一级毛片视频免费| 欧美激情影院| 九九精品久久| 欧美激情一区二区三区在线 | 美国一区二区三区| 成人免费网站久久久| 深夜做爰性大片中文| 91麻豆精品国产综合久久久| 99久久精品国产高清一区二区| 四虎久久影院| 久久成人综合网| 精品久久久久久综合网| 久久国产一区二区| 韩国毛片基地| 九九免费高清在线观看视频| 欧美大片一区| 精品视频一区二区三区| 超级乱淫伦动漫| 国产a毛片| 日韩免费在线观看视频| 天堂网中文字幕| 国产一区精品| 亚洲第一页乱| 久草免费在线观看| 黄色免费三级| 国产综合91天堂亚洲国产| 日韩男人天堂| a级黄色毛片免费播放视频| 国产成人啪精品| 久久99中文字幕久久| 精品久久久久久免费影院| 成人高清免费| 免费毛片基地| 999精品在线| 黄视频网站在线观看| 日韩专区在线播放| 国产一区二区精品| 美女免费精品高清毛片在线视 | 日韩在线观看免费完整版视频| 91麻豆精品国产片在线观看| 精品国产一区二区三区精东影业| 国产美女在线一区二区三区| 精品在线视频播放| 国产高清在线精品一区二区| 高清一级片| 欧美电影免费看大全| 亚洲爆爽| 国产视频久久久| 国产不卡福利| 亚洲第一色在线| 国产精品123| 夜夜操天天爽| 日韩欧美一二三区| 午夜久久网| 天天做日日干| 国产精品免费久久| 九九免费高清在线观看视频| 91麻豆高清国产在线播放| 毛片成人永久免费视频| 国产精品1024在线永久免费| 青青久久国产成人免费网站| 韩国三级视频在线观看| 国产亚洲免费观看| 久久99欧美| 在线观看成人网| 久久国产影视免费精品| 国产精品自拍在线观看| 日本在线不卡免费视频一区| 精品国产香蕉伊思人在线又爽又黄| 可以在线看黄的网站| 国产亚洲免费观看| 精品视频一区二区三区| 可以免费在线看黄的网站| 欧美激情一区二区三区在线 | 国产麻豆精品视频| 欧美另类videosbestsex高清 | 99热精品在线| 欧美一级视频免费观看| 亚洲 国产精品 日韩| 日韩中文字幕在线播放| 国产精品1024永久免费视频| 成人影视在线观看| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 韩国毛片免费大片| 国产伦理精品| 美女被草网站| 欧美1区2区3区| 美女免费毛片| 一级女性全黄久久生活片| 91麻豆精品国产自产在线观看一区| 精品视频一区二区| 一级女性大黄生活片免费| 一级女性全黄久久生活片| 国产一区二区精品久久| 尤物视频网站在线| 精品视频在线看| 精品久久久久久中文| 欧美电影免费看大全| 免费毛片播放| 国产精品自拍一区| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 日本免费看视频| 午夜精品国产自在现线拍| 欧美国产日韩精品| 国产国语对白一级毛片| 天天做日日干| 国产网站免费视频| 天天色色色| 九九热国产视频| 色综合久久手机在线| 二级特黄绝大片免费视频大片| 日韩av东京社区男人的天堂| 成人免费观看的视频黄页| 精品国产一区二区三区精东影业| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产不卡在线看| 一本高清在线| 97视频免费在线观看| 精品国产亚洲人成在线| 日韩一级精品视频在线观看| 日韩在线观看网站| 99久久精品国产免费| 亚洲精品久久玖玖玖玖| 国产麻豆精品视频| 日韩综合| 精品久久久久久中文|