技术文摘
Go 语言中使用 AES 加密明文并编码为 base64 字符串的方法
2025-01-09 02:08:51 小编
Go语言中使用AES加密明文并编码为base64字符串的方法
在Go语言开发中,数据加密是保障信息安全的重要手段。AES(Advanced Encryption Standard)作为一种对称加密算法,被广泛应用于数据加密领域。本文将介绍如何在Go语言中使用AES加密明文,并将加密结果编码为base64字符串。
我们需要导入必要的包:
package main
import (
"bytes"
"crypto/aes"
"crypto/cipher"
"encoding/base64"
)
接下来,定义一个函数用于AES加密:
func AESEncrypt(key []byte, plaintext []byte) ([]byte, error) {
block, err := aes.NewCipher(key)
if err!= nil {
return nil, err
}
plaintext = PKCS7Padding(plaintext, block.BlockSize())
ciphertext := make([]byte, len(plaintext))
mode := cipher.NewCBCEncrypter(block, key[:aes.BlockSize])
mode.CryptBlocks(ciphertext, plaintext)
return ciphertext, nil
}
这里的PKCS7Padding函数用于对明文进行填充,使其长度满足AES加密的要求:
func PKCS7Padding(ciphertext []byte, blockSize int) []byte {
padding := blockSize - len(ciphertext)%blockSize
padtext := bytes.Repeat([]byte{byte(padding)}, padding)
return append(ciphertext, padtext...)
}
然后,我们可以编写主函数来进行加密和base64编码:
func main() {
key := []byte("1234567890123456")
plaintext := []byte("Hello, World!")
ciphertext, err := AESEncrypt(key, plaintext)
if err!= nil {
panic(err)
}
encoded := base64.StdEncoding.EncodeToString(ciphertext)
println(encoded)
}
在上述代码中,我们首先定义了加密密钥和明文,然后调用AESEncrypt函数进行加密,最后使用base64.StdEncoding.EncodeToString将加密结果编码为base64字符串。
通过以上步骤,我们就实现了在Go语言中使用AES加密明文并编码为base64字符串的功能。在实际应用中,可以根据需求调整密钥和明文内容,以满足不同的加密需求。也要注意密钥的安全性和保密性,避免密钥泄露导致数据安全问题。
- C++函数性能优化原理深度剖析
- C++函数中STL binder的使用方法
- PHP 函数助力构建跨平台兼容项目的方法
- C++ 函数并发编程中原子操作的最佳实践
- C++ 中函数指针怎样应用于函数装饰器
- PHP函数命名规范解读之面向对象命名惯例
- Golang 函数反射中动态检查:特殊情况处理方法
- 用C++函数打造可伸缩的高性能并发程序方法
- PHP函数与云计算服务集成实践
- C++中用于类型转换的STL函数有哪些
- C++函数预处理器中避免预处理器地狱的方法
- C++ 函数中受 STL 支持用于元编程的函数有哪些
- 探究函数指针如何提升 C 语言代码可测试性
- Golang函数中通道并发通信于Web服务的应用
- PHP函数与第三方库在项目开发中如何协作