Golang AES256 加密示例:详细代码解析和实现
以下是使用 Golang 进行 AES256 加密的示例:
package main
import (
'crypto/aes'
'crypto/cipher'
'encoding/base64'
'fmt'
'crypto/rand'
)
func main() {
// 要加密的原始数据
plaintext := []byte('hello world')
// 32位密钥,AES256加密需要32位(256位)密钥
key := []byte('12345678901234567890123456789012')
// 创建AES加密器
block, err := aes.NewCipher(key)
if err != nil {
panic(err)
}
// 生成随机的IV向量
iv := make([]byte, aes.BlockSize)
if _, err := rand.Read(iv); err != nil {
panic(err)
}
// 使用CBC分组模式进行加密
cipherText := make([]byte, len(plaintext))
mode := cipher.NewCBCEncrypter(block, iv)
mode.CryptBlocks(cipherText, plaintext)
// 将IV向量和密文合并,方便后续解密
result := append(iv, cipherText...)
// 将密文转换为base64编码的字符串,方便传输和存储
base64Text := base64.StdEncoding.EncodeToString(result)
fmt.Println(base64Text)
}
在上面的示例中,我们使用 AES256 加密算法和 CBC 分组模式对字符串 'hello world' 进行加密。我们使用一个 32 位(256 位)的密钥,并生成一个随机的 IV 向量。最终,我们将 IV 向量和密文合并,并将密文转换为 base64 编码的字符串以便传输和存储。
请注意,我们使用了 Go 标准库中的 crypto/aes 和 crypto/cipher 包来完成 AES256 加密。我们还使用了 encoding/base64 包将密文转换为 base64 编码的字符串。
相关内容:
请注意,示例代码中的密钥和 IV 向量仅用于演示目的。在实际应用中,请使用强随机密钥和 IV 向量,并且妥善保管密钥。
原文地址: https://www.cveoy.top/t/topic/nQJH 著作权归作者所有。请勿转载和采集!