使用GO語言實現對稱加密,DES 3DES AES

2021-09-26 16:24:09 字數 2024 閱讀 5036

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位,這樣才具有高的安全...