golang aes256cbc解密
以下是使用golang进行AES-256-CBC解密的示例代码:
package main
import (
"crypto/aes"
"crypto/cipher"
"encoding/base64"
"fmt"
)
func main() {
// 加密数据
encryptedData := "U2FsdGVkX1/GlQkz/0y8Mym8r9zLwMgI2+qS6mX3S7s="
// 密钥
key := "12345678901234567890123456789012"
// 初始化向量
iv := "1234567890123456"
// 对密钥和向量进行补位
if len(key) < 32 {
key = fmt.Sprintf("%-32s", key)
}
if len(iv) < 16 {
iv = fmt.Sprintf("%-16s", iv)
}
// Base64解码加密数据
cipherData, err := base64.StdEncoding.DecodeString(encryptedData)
if err != nil {
panic(err)
}
// 创建AES解密器
block, err := aes.NewCipher([]byte(key))
if err != nil {
panic(err)
}
// 创建解密器
decrypter := cipher.NewCBCDecrypter(block, []byte(iv))
// 执行解密
decryptedData := make([]byte, len(cipherData))
decrypter.CryptBlocks(decryptedData, cipherData)
// 去除补位
decryptedData = bytes.Trim(decryptedData, "\x00")
// 输出解密结果
fmt.Println(string(decryptedData))
}
在上面的示例代码中,我们首先定义加密数据、密钥和初始化向量。然后,我们对密钥和向量进行补位,以确保它们的长度符合要求。
接下来,我们使用Base64解码加密数据,并创建AES解密器。然后,我们创建解密器,执行解密操作并去除补位。
最后,我们输出解密结果
原文地址: https://www.cveoy.top/t/topic/emTu 著作权归作者所有。请勿转载和采集!