golang 加密文件
时间: 2023-08-26 07:03:32 浏览: 116
可以使用 Go 语言标准库中的 crypto 包来加密文件。下面是一个简单的示例:
```go
package main
import (
"crypto/aes"
"crypto/cipher"
"crypto/rand"
"fmt"
"io"
"os"
)
func encryptFile(key []byte, inFile string, outFile string) error {
// 打开输入文件
in, err := os.Open(inFile)
if err != nil {
return err
}
defer in.Close()
// 创建输出文件
out, err := os.Create(outFile)
if err != nil {
return err
}
defer out.Close()
// 生成随机向量
iv := make([]byte, aes.BlockSize)
if _, err := io.ReadFull(rand.Reader, iv); err != nil {
return err
}
// 创建 AES 加密器
block, err := aes.NewCipher(key)
if err != nil {
return err
}
stream := cipher.NewCFBEncrypter(block, iv)
// 将向量写入输出文件
if _, err := out.Write(iv); err != nil {
return err
}
// 加密数据并写入输出文件
writer := &cipher.StreamWriter{S: stream, W: out}
if _, err := io.Copy(writer, in); err != nil {
return err
}
return nil
}
func main() {
key := []byte("1234567890123456") // 16 字节的密钥
err := encryptFile(key, "input.txt", "output.enc")
if err != nil {
fmt.Println(err)
return
}
fmt.Println("File encrypted successfully")
}
```
上面的示例中,我们使用 AES 加密算法和 CFB 模式对输入文件进行加密,并将加密后的数据写入输出文件。在加密过程中,我们使用了随机向量来增加安全性。注意,这里的示例只是一个简单的示例,实际使用中还需要考虑更多的安全和错误处理问题。
阅读全文