Go 中正确的非对称文件加密
Posted
技术标签:
【中文标题】Go 中正确的非对称文件加密【英文标题】:Proper asymmetric file encryption in Go 【发布时间】:2017-03-14 04:17:45 【问题描述】:我需要一种方法来允许多人加密各种文件,但只有一方能够阅读所有文件。我按照各种在线示例在 Go 中编写了一个程序,但在某些时候我得到了以下错误:
Error from encryption: crypto/rsa: message too long for RSA public key size
RSA 是不是走错路了?如果我将文件分成多个块并加密它们可以吗?有没有我可以轻松使用的非对称分组密码?
我阅读了here 的讨论,据说 RSA 不是正确的方法。
你也可以举个例子吗?
【问题讨论】:
如果这是一个拥有大量用户的严肃项目,您确实需要让加密领域专家参与进来,那么安全性很难得到纠正。 【参考方案1】:如果您需要对大于密钥大小的数据进行公钥非对称加密,则需要使用混合加密。本质上这就是 HTTPS 的工作原理。
Hybrid encryption 是使用 AES 等对称密钥加密对数据进行加密的地方,而该密钥使用 RSA 或 EC (Elliptic Curve) 加密等非对称密钥加密进行加密。
不要将文件分成多个块并加密它们。
【讨论】:
嗨!你觉得像 PGP 这样的东西会为我完成这项工作吗?我看到 golang 在其核心库中支持 PGP 实现:godoc.org/golang.org/x/crypto/openpgp【参考方案2】:所以我最终使用了 GPG,我的服务有一个唯一的私钥,我与我的用户共享公钥。
【讨论】:
以上是关于Go 中正确的非对称文件加密的主要内容,如果未能解决你的问题,请参考以下文章