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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

密码学-DES

發布時間:2025/3/21 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 密码学-DES 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#DES全稱為Data Encryption Standard,即數據加密標準,是一種使用密鑰加密的塊算法

對稱加密算法DES的使用

package main//DES,3DES,AES //用同一個秘鑰加密和解密 import ("bytes""crypto/cipher" //cipher密碼"crypto/des""encoding/base64" //將對象轉換成字符串"fmt" ) //DES加密方法 func MyDesEncrypt(origData, key []byte) {block, _ := des.NewCipher(key)//將明文按秘鑰的長度做補碼運算origData = PKCS5Padding(origData, block.BlockSize())//設置加密方式blockMode := cipher.NewCBCDecrypter(block, key)//創建明文長度的字節數組crypted := make([]byte, len(origData))//加密明文blockMode.CryptBlocks(crypted, origData)//將字節數組轉換成字符串fmt.Println(base64.StdEncoding.EncodeToString(crypted)) }//DES解密方法 func MyDESDecrypt(data string, key []byte) {//將字符串轉換成字節數組crypted, _ := base64.StdEncoding.DecodeString(data)//將字節秘鑰轉換成block快block, _ := des.NewCipher(key)//設置解密方式blockMode := cipher.NewCBCEncrypter(block, key)//創建密文大小的數組變量origData := make([]byte, len(crypted))//解密密文到數組origData中blockMode.CryptBlocks(origData, crypted)//去補碼origData = PKCS5UnPadding(origData)//打印明文fmt.Println(string(origData)) }//實現明文的補碼 func PKCS5Padding(ciphertext []byte, blockSize int) []byte {padding := blockSize - len(ciphertext)%blockSizepadtext := bytes.Repeat([]byte{byte(padding)}, padding)return append(ciphertext, padtext...) }//實現去補碼 func PKCS5UnPadding(origData []byte) []byte {length := len(origData)// 去掉最后一個字節 unpadding 次unpadding := int(origData[length-1])return origData[:(length - unpadding)] }func main() {//聲明秘鑰,利用此秘鑰實現明文的加密和密文的解密key := []byte("12345678")//加密MyDesEncrypt([]byte("hello kong yi"), key)//解密MyDESDecrypt("Ijt9xl4BK6JNU3T7oZnfUg==", key) }

總結

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

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