Golang AES128 解密代码示例和解释
下面是一个使用 Golang 进行 AES128 解密的示例:
package main
import (
"crypto/aes"
"crypto/cipher"
"encoding/base64"
"fmt"
)
func main() {
key := []byte('0123456789abcdef')
ciphertext, _ := base64.StdEncoding.DecodeString('ciphertext')
block, err := aes.NewCipher(key)
if err != nil {
panic(err)
}
iv := ciphertext[:aes.BlockSize]
ciphertext = ciphertext[aes.BlockSize:]
mode := cipher.NewCBCDecrypter(block, iv)
mode.CryptBlocks(ciphertext, ciphertext)
plaintext := string(ciphertext)
fmt.Println(plaintext)
}
在这个例子中,我们使用了 crypto/aes 和 crypto/cipher 包来实现对 AES128 加密的解密。我们首先定义了一个 key,这个 key 是用来加密和解密的。然后我们使用 base64.StdEncoding.DecodeString() 将密文解码成字节数组 ciphertext。
接下来,我们使用 aes.NewCipher() 创建一个新的 AES 加密块,如果创建失败,报错。然后我们使用密文的前 16 字节(一个 AES 块的大小)作为初始向量 (IV),并将剩余的部分作为实际加密的内容。
我们使用 cipher.NewCBCDecrypter() 创建一个新的 CBC 解密器,并使用它来解密 ciphertext。最后,我们将解密后的字节数组转换为字符串,并将其打印到控制台上。
原文地址: https://www.cveoy.top/t/topic/nQK2 著作权归作者所有。请勿转载和采集!