下面我們來看一下**實現
package main
import (
"crypto/des"
"crypto/cipher"
"fmt"
"bytes"
"encoding/base64"
)/*des加密解密*/
//des的cbc模式加密函式
//src :明文
//key :金鑰,大小為8byte
func desencrypt_cbc(src ,key byte)byte
//3:對最後乙個明文分組進行資料填充
src=pkcs5padding(src,block.blocksize())
// 引數iv的長度,必須等於b的塊尺寸
tmp:=byte("helloaaa") //初始化向量
blockmode:=cipher.newcbcencrypter(block,tmp)
//5:加密連續的資料塊
dst:=make(byte,len(src))
blockmode.cryptblocks(dst,src)
"加密之後的資料:",dst)
//6:將加密後的資料返回
return dst
}//des解密函式
//src :要解密的密文
//key :金鑰,和加密金鑰相同,大小為8byte
func desdecrypt_cbc(src ,key byte)byte
//建立乙個密碼分組為鏈結模式的,底層使用des解密的blockmode介面
tmp:=byte("helloaaa")
blockmode:=cipher.newcbcdecrypter(block,tmp)
//解密資料
dst:=make(byte,len(src))
blockmode.cryptblocks(dst,src)
//5:去掉最後一組填充資料
dst=pkcs5unpadding(dst)
//返回結果
return dst
}//使用pkcs5的方式填充
func pkcs5padding(ciphertext byte,blocksize int)byte,padding)
//3:將padtext新增到原始資料的後邊,將最後乙個分組缺少的位元組數補齊
return newtext
}//刪除pkcs5填充的尾部資料
func pkcs5unpadding(origdata byte)byte
func main()
看一下效果
後期將講解別的加密演算法,例如對稱加密中的aes加密,非對稱加密,橢圓曲線加密演算法等等
GO語言DES加密解密
des是以64位元的明文為乙個單位來進行加密,並生成64位元的密文。由於它每次只能處理特定長度的一塊資料,所以des屬於分組密碼演算法。cypto des包提供了有關des加密的功能。由於分組密碼演算法只能加密固定長度的分組,所以當加密的明文超過分組密碼的長度時,就需要對分組密碼演算法進行迭代,而迭...
DES加密模式詳解 二
des演算法提供cbc,ofb,cfb,ecb四種模式,mac是基於ecb實現的。一 資料補位 des資料加解密就是將資料按照8個位元組一段進行des加密或解密得到一段8個位元組的密文或者明文,最後一段不足8個位元組,按照需求補足8個位元組 通常補00或者ff,根據實際要求不同 進行計算,之後按照順...
go語言中反射機理詳解
package main import fmt reflect type user struct type manager struct func main title 123 t reflect.typeof m fmt.printf v n t.field 0 號會將reflect的struct...