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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

分组密码的调用

發布時間:2025/3/21 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分组密码的调用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

分組密碼的調用

CBC

package mainimport ("bytes""crypto/cipher""crypto/aes""encoding/base64""fmt" )func PKCS7Padding(ciphertext []byte, blockSize int) []byte {padding := blockSize - len(ciphertext) % blockSizepadtext := bytes.Repeat([]byte{byte(padding)}, padding)return append(ciphertext, padtext...) }func PKCS7UnPadding(origData []byte) []byte {length := len(origData)unpadding := int(origData[length-1])return origData[:(length - unpadding)] }func AesEncrypt(origData, key []byte) ([]byte, error) {block, err := aes.NewCipher(key)if err != nil {return nil, err}blockSize := block.BlockSize()origData = PKCS7Padding(origData, blockSize)blockMode := cipher.NewCBCEncrypter(block, key[:blockSize])crypted := make([]byte, len(origData))blockMode.CryptBlocks(crypted, origData)return crypted, nil }func AesDecrypt(crypted, key []byte) ([]byte, error) {block, err := aes.NewCipher(key)if err != nil {return nil, err}blockSize := block.BlockSize()blockMode := cipher.NewCBCDecrypter(block, key[:blockSize])origData := make([]byte, len(crypted))blockMode.CryptBlocks(origData, crypted)origData = PKCS7UnPadding(origData)return origData, nil }func main() {key := []byte("0123456789abcdef")result, err := AesEncrypt([]byte("hello world"), key)if err != nil {panic(err)}fmt.Println(base64.StdEncoding.EncodeToString(result))origData, err := AesDecrypt(result, key)if err != nil {panic(err)}fmt.Println(string(origData)) }

CFB 模式

package mainimport ("io""crypto/cipher""crypto/aes""crypto/rand""encoding/base64""fmt" )func AesEncrypt(plaintext, key []byte) ([]byte, error) {block, err := aes.NewCipher(key)if err != nil {return nil, err}ciphertext := make([]byte, aes.BlockSize+len(plaintext))iv := ciphertext[:aes.BlockSize]if _, err := io.ReadFull(rand.Reader, iv); err != nil {panic(err)}stream := cipher.NewCFBEncrypter(block, iv)stream.XORKeyStream(ciphertext[aes.BlockSize:], plaintext)return ciphertext, nil }func AesDecrypt(ciphertext, key []byte) ([]byte, error) {block, err := aes.NewCipher(key)if err != nil {return nil, err}// The IV needs to be unique, but not secure. Therefore it's common to// include it at the beginning of the ciphertext.if len(ciphertext) < aes.BlockSize {panic("ciphertext too short")}iv := ciphertext[:aes.BlockSize]ciphertext = ciphertext[aes.BlockSize:]stream := cipher.NewCFBDecrypter(block, iv)// XORKeyStream can work in-place if the two arguments are the same.stream.XORKeyStream(ciphertext, ciphertext)return ciphertext, nil }func main() {key := []byte("0123456789abcdef")result, err := AesEncrypt([]byte("hello world"), key)if err != nil {panic(err)}fmt.Println(base64.StdEncoding.EncodeToString(result))origData, err := AesDecrypt(result, key)if err != nil {panic(err)}fmt.Println(string(origData)) }

OFB 模式

package mainimport ("io""crypto/cipher""crypto/aes""crypto/rand""encoding/base64""fmt" )func AesEncrypt(plaintext, key []byte) ([]byte, error) {block, err := aes.NewCipher(key)if err != nil {return nil, err}ciphertext := make([]byte, aes.BlockSize+len(plaintext))iv := ciphertext[:aes.BlockSize]if _, err := io.ReadFull(rand.Reader, iv); err != nil {panic(err)}stream := cipher.NewOFB(block, iv)stream.XORKeyStream(ciphertext[aes.BlockSize:], plaintext)return ciphertext, nil }func AesDecrypt(ciphertext, key []byte) ([]byte, error) {block, err := aes.NewCipher(key)if err != nil {return nil, err}// The IV needs to be unique, but not secure. Therefore it's common to// include it at the beginning of the ciphertext.iv := ciphertext[:aes.BlockSize]if len(ciphertext) < aes.BlockSize {panic("ciphertext too short")}plaintext2 := make([]byte, len(ciphertext))stream := cipher.NewOFB(block, iv)stream.XORKeyStream(plaintext2, ciphertext[aes.BlockSize:])return plaintext2, nil }func main() {key := []byte("6368616e676520746869732070617374")result, err := AesEncrypt([]byte("hello world"), key)if err != nil {panic(err)}fmt.Println(base64.StdEncoding.EncodeToString(result))origData, err := AesDecrypt(result, key)if err != nil {panic(err)}fmt.Println(string(origData)) }

CTR模式

package mainimport ("io""crypto/cipher""crypto/aes""crypto/rand""encoding/base64""fmt" )func AesEncrypt(plaintext, key []byte) ([]byte, error) {block, err := aes.NewCipher(key)if err != nil {return nil, err}ciphertext := make([]byte, aes.BlockSize+len(plaintext))iv := ciphertext[:aes.BlockSize]if _, err := io.ReadFull(rand.Reader, iv); err != nil {panic(err)}stream := cipher.NewCTR(block, iv)stream.XORKeyStream(ciphertext[aes.BlockSize:], plaintext)return ciphertext, nil }func AesDecrypt(ciphertext, key []byte) ([]byte, error) {block, err := aes.NewCipher(key)if err != nil {return nil, err}// The IV needs to be unique, but not secure. Therefore it's common to// include it at the beginning of the ciphertext.iv := ciphertext[:aes.BlockSize]if len(ciphertext) < aes.BlockSize {panic("ciphertext too short")}plaintext2 := make([]byte, len(ciphertext))stream := cipher.NewCTR(block, iv)stream.XORKeyStream(plaintext2, ciphertext[aes.BlockSize:])return plaintext2, nil }func main() {key := []byte("6368616e676520746869732070617374")result, err := AesEncrypt([]byte("hello world"), key)if err != nil {panic(err)}fmt.Println(base64.StdEncoding.EncodeToString(result))origData, err := AesDecrypt(result, key)if err != nil {panic(err)}fmt.Println(string(origData)) }

總結

以上是生活随笔為你收集整理的分组密码的调用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久久男人的天堂 | 中国浓毛少妇毛茸茸 | 成人91网站 | 国产精品8| 成人av入口 | 久久国产亚洲精品无码 | 毛片视频网 | 欧美高潮视频 | 亚洲在线观看免费 | 免费黄色一级大片 | 亚洲人成在线播放 | 夜夜操夜夜干 | 91中文字幕在线观看 | 国产乱码精品一区二区三区忘忧草 | 少妇精品高潮欲妇又嫩中文字幕 | www.youjizz.com久久| 日韩免费毛片 | 荒野求生21天去码版网站 | 久久久一二三四 | 欧美另类videos | 黑人借宿巨大中文字幕 | 香蕉视频黄在线观看 | 黄色片在哪看 | 婷婷一区二区三区四区 | 午夜国产一区 | 手机午夜视频 | 伊人av在线 | 国产精品.xx视频.xxtv | 尤物在线免费视频 | 无套内谢大学处破女www小说 | 国产网红无码精品视频 | 五月婷婷六月婷婷 | 国产污在线观看 | 男人插女人的网站 | 91大神精品在线 | 激情综合在线 | 日韩一区欧美二区 | 美女极度色诱图片www视频 | 天天草天天草 | 久久涩视频 | 亚洲免费福利 | 一区二区日本 | 精品人成 | 色综合图片区 | 亚洲精品成a人 | 国产精品九九九九 | 天天躁日日躁狠狠躁av麻豆 | 动漫av在线播放 | 66亚洲一卡2卡新区成片发布 | 宝贝乖h调教灌尿穿环 | 久久成人福利视频 | 人人爽人人射 | 日本大乳奶做爰 | 新香蕉视频| 红猫大本营在线观看的 | 天堂av资源| av影片在线看 | 四虎库| 中文字幕免费在线观看视频 | 国产乱欲视频 | 人妻精品一区二区在线 | 国产精品国产三级国产aⅴ浪潮 | 久久久久久久极品 | 黄色电影在线视频 | 91亚洲精华国产精华精华液 | 国模精品一区二区三区 | 热99视频| 欧美久久久久久久久久久 | 欧美aa视频 | 成人精品一区日本无码网 | 日本三级久久 | 天天综合在线观看 | 99热在线看| 夜间福利在线观看 | 成人毛片av | 国产高清视频网站 | 欧美专区 日韩专区 | 国产极品美女高潮无套在线观看 | 久久不雅视频 | 亚洲成人午夜电影 | 成人在线网 | 日韩在线观看第一页 | a级片毛片 | 玩偶姐姐在线观看免费 | 国产成人精品一区二区三区四区 | 中国a级大片 | 欧美日韩中文字幕一区 | 中文字幕欧美日韩 | 日韩精品在线不卡 | 国产男女猛烈无遮挡免费视频 | 日韩视频在线观看一区 | 欧美大屁股熟妇bbbbbb | 男人看片网站 | 日本亲近相奷中文字幕 | 国产精品免费电影 | 国产一区二区三区观看 | 请用你的手指扰乱我吧 | 嫩草视频在线免费观看 | 国产剧情av在线播放 |