Go语言实现AES-CTR加密本地文件:生成随机密钥并Base64编码
package main
import (
"crypto/aes"
"crypto/cipher"
"crypto/rand"
"encoding/base64"
"fmt"
"io"
"os"
)
func main() {
key := make([]byte, 32)
if _, err := rand.Read(key); err != nil {
fmt.Println("Error generating random key:", err)
return
}
fmt.Println("Random key:", base64.URLEncoding.EncodeToString(key))
plaintext, err := os.ReadFile("payload.bin")
if err != nil {
fmt.Println("Error reading file:", err)
return
}
block, err := aes.NewCipher(key)
if err != nil {
fmt.Println("Error creating AES cipher:", err)
return
}
iv := make([]byte, aes.BlockSize)
if _, err := io.ReadFull(rand.Reader, iv); err != nil {
fmt.Println("Error generating initialization vector:", err)
return
}
stream := cipher.NewCTR(block, iv)
ciphertext := make([]byte, len(plaintext))
stream.XORKeyStream(ciphertext, plaintext)
fmt.Println("Encrypted content:", base64.URLEncoding.EncodeToString(ciphertext))
}
注意: 在运行代码之前,需要先创建名为payload.bin的本地文件,并向其中写入需要加密的内容。
原文地址: https://www.cveoy.top/t/topic/mj05 著作权归作者所有。请勿转载和采集!