github地址:<https://github.com/jan-bar/EncryptionFile>
## EncryptionFile
> 加密解密文件
> 由于需要使用流式加解密因此选用AES CFB模式
> 使用RSA将随机密钥加密,并将密文存入文件头部
> 加密文件只需要提供可执行程序和公钥
> 解密文件只需要提供可执行程序和私钥
> 即使同一个文件每次加密结果都不一样,安全系数极高
> 可以指定计算hash方法,最终会在头部存入hash值、rsa加密密文
文件内容
![details.png](https://static.studygolang.com/210325/9d41bf846db47dcf2877445c676e7e38.png)
## 使用方法
加密:`go run EncryptionFile.go -enc EncryptionFile.go -mod sha256`
会产生`EncryptionFile.go.dst`的加密文件
解密:`go run EncryptionFile.go -dec EncryptionFile.go.dst -mod sha256`
会产生`EncryptionFile.go.dst.src`的解密文件
执行:`diff EncryptionFile.go.dst.src EncryptionFile.go`
可以发现解密文件没有问题。
我只是想做一个文件安全性保障额,公钥和文件随便暴露(rsa保障),相同文件每次加密结果都不同(aes密钥随机)。
同时增加了了文件的hash值,确保文件不会被篡改。只需要保证私钥不泄露就可以高枕无忧了。
而且避免了对称加密存储密钥的烦恼,因为密钥是随机的。
#2