Go語言中操作DES加密詳解

2021-08-30 13:33:44 字數 1454 閱讀 2081

下面我們來看一下**實現

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...