在Go中进行AES解密,可以使用crypto/aes包和crypto/cipher包中提供的功能。具体步骤如下:
创建一个AES解密器,使用crypto/aes包中的NewCipher()函数,并传入256位的密钥。例如:
key := []byte("mysecretkey12345") block, err := aes.NewCipher(key)
创建一个CBC解密模式,使用crypto/cipher包中的NewCBCDecrypter()函数,将解密器和初始化向量IV传入。例如:
iv := []byte("1234567890123456") cipher.NewCBCDecrypter(block, iv)
对密文进行解密,使用CBC解密模式的CryptBlocks()函数,传入密文的字节切片。例如:
ciphertext := []byte{...} plainText := make([]byte, len(ciphertext)) mode.CryptBlocks(plainText, ciphertext)
完整代码示例:
package main
import (
"crypto/aes"
"crypto/cipher"
"fmt"
)
func main() {
key := []byte("mysecretkey12345")
iv := []byte("1234567890123456")
ciphertext := []byte{...} // 待解密的密文
// 创建解密器
block, err := aes.NewCipher(key)
if err != nil {
panic(err)
}
// 创建CBC解密模式
mode := cipher.NewCBCDecrypter(block, iv)
// 解密
plainText := make([]byte, len(ciphertext))
mode.CryptBlocks(plainText, ciphertext)
fmt.Println(string(plainText))
}
注:在实际应用中,应该将密钥和IV存储在安全的地方,不能明文硬编码在代码中。