1 Star 0 Fork 0

zhxlp/golang-study

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
aes.go 1.25 KB
一键复制 编辑 原始数据 按行查看 历史
zhxlp 提交于 2022-09-04 17:26 +08:00 . 文档格式更新
package util
import (
"crypto/aes"
"crypto/cipher"
)
// AES CBC 加密
//
// @param key []byte aes密钥,长度 16, 24, or 32 对应 AES-128, AES-192, or AES-256
//
// @param iv []byte CBC 初始化向量,长度 16
//
// @param plainText []byte 待加密内容
func AESCBCEncrypt(key, iv, plainText []byte) ([]byte, error) {
block, err := aes.NewCipher(key)
if err != nil {
return nil, err
}
blockSize := block.BlockSize()
origData, err := PKCS7Padding(plainText, blockSize)
if err != nil {
return nil, err
}
blockMode := cipher.NewCBCEncrypter(block, iv)
ciphertext := make([]byte, len(origData))
blockMode.CryptBlocks(ciphertext, origData)
return ciphertext, nil
}
// AES CBC 解密
//
// @param key []byte aes密钥,长度 16, 24, or 32 对应 AES-128, AES-192, or AES-256
//
// @param iv []byte CBC 初始化向量,长度 16
//
// @param cipherText []byte 待解密内容
func AESCBCDecrypt(key, iv, cipherText []byte) ([]byte, error) {
block, err := aes.NewCipher(key)
if err != nil {
return nil, err
}
blockMode := cipher.NewCBCDecrypter(block, iv)
origData := make([]byte, len(cipherText))
blockMode.CryptBlocks(origData, cipherText)
origData, err = PKCS7UnPadding(origData)
if err != nil {
return nil, err
}
return origData, nil
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/zhxlp/golang-study.git
git@gitee.com:zhxlp/golang-study.git
zhxlp
golang-study
golang-study
b6f57e10b84f

搜索帮助