请用go生成AES-CTR加密本地文件pytbin的加密解密代码
以下代码使用Go语言实现AES-CTR加密和解密本地文件pyt.bin:
package main
import (
"crypto/aes"
"crypto/cipher"
"fmt"
"io/ioutil"
)
func main() {
// 读取待加密的文件
plaintext, err := ioutil.ReadFile("pyt.bin")
if err != nil {
panic(err)
}
// 随机生成16字节的密钥和初始化向量
key := make([]byte, 16)
iv := make([]byte, 16)
if _, err := rand.Read(key); err != nil {
panic(err)
}
if _, err := rand.Read(iv); err != nil {
panic(err)
}
// 创建AES-CTR加密块
block, err := aes.NewCipher(key)
if err != nil {
panic(err)
}
stream := cipher.NewCTR(block, iv)
// 加密数据
ciphertext := make([]byte, len(plaintext))
stream.XORKeyStream(ciphertext, plaintext)
// 将加密后的数据写入文件
if err := ioutil.WriteFile("pyt.enc", ciphertext, 0644); err != nil {
panic(err)
}
// 创建AES-CTR解密块
block, err = aes.NewCipher(key)
if err != nil {
panic(err)
}
stream = cipher.NewCTR(block, iv)
// 解密数据
plaintext = make([]byte, len(ciphertext))
stream.XORKeyStream(plaintext, ciphertext)
// 将解密后的数据写入文件
if err := ioutil.WriteFile("pyt.dec", plaintext, 0644); err != nil {
panic(err)
}
fmt.Println("加密解密完成")
}
代码中使用了Go语言标准库中的crypto/aes和crypto/cipher包实现AES-CTR加密和解密。其中,使用rand包生成随机的16字节密钥和初始化向量,加密后的数据保存在pyt.enc文件中,解密后的数据保存在pyt.dec文件中。
原文地址: http://www.cveoy.top/t/topic/Zxi 著作权归作者所有。请勿转载和采集!