golang写一段 AES-256 CBC 解密代码 IV为16个0字节
下面是使用golang进行AES-256 CBC解密的示例代码,其中IV为16个0字节:
package main
import (
"crypto/aes"
"crypto/cipher"
"encoding/base64"
"fmt"
)
func main() {
key := []byte("12345678901234567890123456789012") // 32 bytes key
iv := make([]byte, aes.BlockSize) // 16 bytes IV
cipherText, _ := base64.StdEncoding.DecodeString("TnOcHrTnT+7u9tfMw0rRJg==") // base64 encoded ciphertext
block, err := aes.NewCipher(key)
if err != nil {
panic(err)
}
mode := cipher.NewCBCDecrypter(block, iv)
mode.CryptBlocks(cipherText, cipherText)
fmt.Println(string(cipherText))
}
解释:
- 我们首先定义了一个32字节的密钥和一个16字节的全零IV。
- 然后,我们使用
base64.StdEncoding.DecodeString函数将密文字符串解码为字节数组。 - 接下来,我们使用
aes.NewCipher函数创建一个AES块加密器。 - 然后,我们使用
cipher.NewCBCDecrypter函数创建一个CBC模式的解密器。 - 最后,我们使用
mode.CryptBlocks函数对密文进行解密,并将解密后的明文输出到控制台上。
注意:在实际使用中,请勿将密钥和IV硬编码在代码中。最好将它们存储在安全的地方,并通过安全的方式传递给解密函数
原文地址: https://www.cveoy.top/t/topic/flPE 著作权归作者所有。请勿转载和采集!