请用go生成ChaCha20-Poly1305加密本地文件payloadbin的加密代码并生成随机的加密密钥在读取后先base64再对它进行ChaCha20-Poly1305加密打印随机密钥和加密的内容
package main
import ( "crypto/cipher" "crypto/rand" "encoding/base64" "fmt" "golang.org/x/crypto/chacha20poly1305" "io" "os" )
func main() { // 生成密钥 key := make([]byte, chacha20poly1305.KeySize) if _, err := io.ReadFull(rand.Reader, key); err != nil { panic(err) } fmt.Println("加密密钥:", base64.StdEncoding.EncodeToString(key))
// 打开要加密的文件
inputFile, err := os.Open("payload.bin")
if err != nil {
panic(err)
}
defer inputFile.Close()
// 创建加密器
nonce := make([]byte, chacha20poly1305.NonceSize)
if _, err := io.ReadFull(rand.Reader, nonce); err != nil {
panic(err)
}
chacha, err := chacha20poly1305.New(key)
if err != nil {
panic(err)
}
// 创建加密文件
outputFile, err := os.Create("encrypted.bin")
if err != nil {
panic(err)
}
defer outputFile.Close()
// 写入随机nonce
if _, err := outputFile.Write(nonce); err != nil {
panic(err)
}
// 加密文件
writer, err := chacha.Seal(outputFile, nonce, inputFile, nil)
if err != nil {
panic(err)
}
// 打印加密内容
fmt.Println("加密后的内容:", base64.StdEncoding.EncodeToString(writer))
}
原文地址: https://www.cveoy.top/t/topic/ZDR 著作权归作者所有。请勿转载和采集!