密码学-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) }總結
- 上一篇: 密码学-hash加密
- 下一篇: 密码学-hash散列表