推荐xmind库的帖子:https://studygolang.com/topics/16634
既然这么多人喜欢,我把这个库也发出来吧,顺道优化之前的代码
安全数据加解密仓库:https://github.com/jan-bar/EncryptionFile
仓库名字感觉不太合适了,最早我也是用来加解密文件的,后来支持更通用的`io.Reader`和`io.Writer`了,不过项目名也懒得改了
函数签名如下
```go
// EncData
// @Description: 加密数据
// @param r 数据来源读出流
// @param w 加密数据写入流
// @param pubKey 公钥数据
// @param h 指定hash校验方法
// <a href="/user/return" title="@return">@return</a> error 返回错误
func EncData(r io.Reader, w io.Writer, pubKey []byte, h hash.Hash) error
// DecData
// @Description: 解密数据
// @param r 密文数据读入流
// @param w 解密后数据写入流
// @param priKey 私钥数据
// @param h 指定hash校验方法
// <a href="/user/return" title="@return">@return</a> error 返回错误
func DecData(r io.Reader, w io.Writer, priKey []byte, h hash.Hash) error
// GenRsaKey
//
// @Description: 生成rsa公私钥对
// @param bits 生成位数
// @param pub 公钥写入流
// @param pri 私钥写入流
// <a href="/user/return" title="@return">@return</a> error 返回错误
func GenRsaKey(bits int, pub, pri io.Writer) error
```
加密后数据内容结构如下,任何一个字节的改动解密都会失败,没有私钥甚至都没法穷举aes秘钥的方式解密
![原理](https://static.golangjob.cn/230828/19ceb485e628dc802d48783bfdb41d6a.png)
有疑问加站长微信联系(非本文作者)
![](https://static.golangjob.cn/static/img/footer.png?imageView2/2/w/280)