package main
import (
"bytes"
"crypto/aes"
"crypto/cipher"
"crypto/des"
)// 填充最後乙個分組的函式
// src - 原始資料
// blocksize - 每個分組的資料長度
func padding(src byte, blocksize int) byte , padding)
// 3、將建立出的新切片和原始資料進行鏈結
// 4、返回新的字串
return newtext
}//刪除末尾填充的位元組
func unpadding(src byte) byte
//使用des進行對稱加密
func encryptdes(src byte, private byte) byte
//使用des進行解密
func decryptdes(src, private byte) byte
//2、建立乙個密碼分組位鏈結模式的,底層使用des解密的blockmode介面
iv := byte("12345678")
blockmode := cipher.newcbcdecrypter(block, iv)
//3、資料庫解密
blockmode.cryptblocks(src, src)
//4、去掉最後一組的填充資料
newtext := unpadding(src)
return newtext
}//使用des進行對稱加密
func encrypt3des(src byte, private byte) byte
//使用des進行解密
func decrypt3des(src, private byte) byte
//2、建立乙個密碼分組位鏈結模式的,底層使用des解密的blockmode介面
blockmode := cipher.newcbcdecrypter(block, private[:block.blocksize()])
//3、資料庫解密
blockmode.cryptblocks(src, src)
//4、去掉最後一組的填充資料
newtext := unpadding(src)
return newtext
}//使用aes加密
func encryptaes(src, private byte) byte
//2、資料填充
src = padding(src, block.blocksize())
//3、建立乙個密碼分組位鏈結模式的,底層使用aes解密的blockmode介面
blockmode := cipher.newcbcencrypter(block, private)
//4、資料加密
blockmode.cryptblocks(src, src)
return src
}//使用aes加密
func decryptaes(src, private byte) byte
//2、建立乙個密碼分組位鏈結模式的,底層使用aes解密的blockmode介面
blockmode := cipher.newcbcdecrypter(block, private)
//3、資料解密
blockmode.cryptblocks(src, src)
//4、去掉填充資料
src = unpadding(src)
return src
}
package main
import "fmt"
func main()
//測試des加解密
func destest()
//測試3des加解密
func tdestest()
//測試aes加解密
func aestest()
go語言實現對稱加密
aes演算法 ctr分組模式 加密思路 第一步 建立aes密碼介面 func newcipher key byte cipher.block,error 引數 秘鑰 返回值 乙個分組介面 第二步 建立分組模式ctr func newctr block block,iv byte stream 引數1...
GO語言DES加密解密
des是以64位元的明文為乙個單位來進行加密,並生成64位元的密文。由於它每次只能處理特定長度的一塊資料,所以des屬於分組密碼演算法。cypto des包提供了有關des加密的功能。由於分組密碼演算法只能加密固定長度的分組,所以當加密的明文超過分組密碼的長度時,就需要對分組密碼演算法進行迭代,而迭...
C 實現DES對稱加密法
入口引數有三個 key data mode。key為加密解密使用的金鑰,data為加密解密的資料,mode為其工作模式。當模式為加密模式時,明文按照64位進行分組,形成明文組,key用於對資料加密,當模式為解密模式時,key用於對資料解密。實際運用中,金鑰只用到了64位中的56位,這樣才具有高的安全...