最近我们一直在使用OpenSSL来帮助加密/解密我们拥有的一些数据。每个“客户端”将具有本地证书颁发机构为其提供的公钥/私钥对和X509证书。我现在正在考虑使用该密钥对加密/解密数据。
我查看的所有内容都使用RSA_public_encrypt
和RSA_private_decrypt
方法进行RSA加密。但是,对于填充类型RSA_PKCS1_OAEP_PADDING,我可以一次加密的数据量受RSA_size(rsa) - 41
的限制。所以我的问题是如何在坚持我们的RSA方案(没有静态关键短语等)的同时加密大量数据。我正在考虑将数据分解成块然后加密它,但这似乎正在打败填充点。
任何帮助都将不胜感激。
答案 0 :(得分:6)
即使您破坏了数据,您也会发现速度非常慢。正确的方法是
答案 1 :(得分:1)
您应该使用CMS之类的标准(电子邮件客户端中S / MIME支持的基础)或PGP。几乎每个平台都有适用于这两种标准的库。
您将发现它们在批量数据加密方法上非常相似,使用对称密码加密数据并使用“消息”收件人的公钥加密该密钥。这种方法安全快捷。
然而,这些标准更进一步,安全地处理您可能还没有考虑过的事情,例如为多个收件人加密数据,将元数据附加到加密内容等。您还可以获得与其他软件的互操作性。例如,如果您使用S / MIME,则可以使用任何平台上的任何电子邮件客户端进行解密。实际上,根据您的集成要求,您可能不需要自己编写任何软件。
使用其中一个完善的协议并不能解决所有安全问题,但这会使做一些非常愚蠢的事情变得更加困难。