使用AES-CFB模式可实现Golang文件加密解密,密钥需16/24/32字节,IV随机生成并随密文存储,适合小文件处理。

在Golang中实现简单的文件加密与解密,可以使用对称加密算法如AES(Advanced Encryption Standard)。这种方式适合保护本地文件或在网络传输前加密内容。下面介绍如何用AES-CFB模式完成文件的加密和解密操作。
AES对称加密简介
AES是一种广泛使用的加密标准,支持128、192和256位密钥长度。选择CFB(Cipher Feedback)模式是因为它能将块加密算法转化为流加密,适合处理任意长度的数据,且不需要填充(padding),比CBC更灵活。
生成密钥与初始化向量(IV)
加密需要一个固定长度的密钥和每次加密都不同的IV来保证安全性。
密钥应为16字节(AES-128)、24字节(AES-192)或32字节(AES-256) IV长度固定为16字节,需随机生成并在解密时提供 不要硬编码密钥或IV,生产环境建议使用密钥管理系统
文件加密实现
以下代码演示如何读取原始文件并输出加密后的内容到新文件:
立即学习“go语言免费学习笔记(深入)”;
func encryptFile(filePath, encryptedPath, key string) error { plaintext, err := os.ReadFile(filePath) if err != nil { return err } block, err := aes.NewCipher([]byte(key)) if err != nil { return err } ciphertext := make([]byte, aes.BlockSize+len(plaintext)) iv := ciphertext[:aes.BlockSize] if _, err := io.ReadFull(rand.Reader, iv); err != nil { return err } stream := cipher.NewCFBEncrypter(block, iv) stream.XORKeyStream(ciphertext[aes.BlockSize:], plaintext) return os.WriteFile(encryptedPath, ciphertext, 0644)}
文件解密实现
从加密文件中读取IV并还原原始数据:
func decryptFile(encryptedPath, decryptedPath, key string) error { data, err := os.ReadFile(encryptedPath) if err != nil { return err } block, err := aes.NewCipher([]byte(key)) if err != nil { return err } if len(data) < aes.BlockSize { return errors.New("ciphertext too short") } iv := data[:aes.BlockSize] ciphertext := data[aes.BlockSize:] stream := cipher.NewCFBDecrypter(block, iv) stream.XORKeyStream(ciphertext, ciphertext) return os.WriteFile(decryptedPath, ciphertext, 0644)}
使用示例
确保密钥长度正确(例如使用32字节的字符串作为AES-256密钥):
key := "thisis32bitlongpassphraseimusing" // 32字节err := encryptFile("plain.txt", "encrypted.dat", key)if err != nil { log.Fatal(err)}err = decryptFile("encrypted.dat", "decrypted.txt", key)if err != nil { log.Fatal(err)}
注意:
该方法适用于小文件加密。大文件建议采用分块读写避免内存溢出;同时密钥管理要谨慎,不可泄露。若需更高安全级别,可结合HMAC验证完整性,或使用公钥加密体系传输对称密钥。
基本上就这些。简单场景下,AES-CFB加随机IV足以满足基本的文件保密需求。
以上就是Golang如何实现简单的文件加密_Golang文件加密与解密实践的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1428153.html
微信扫一扫
支付宝扫一扫