在我的应用程序的客户端,我想使用公钥加密文本(可以是任何大小)。之后我会将此数据包发送到服务器。在服务器端,我想使用我的私钥解密此数据包。
我不能使用RSA,因为数据包大小可以是任何大小,甚至比密钥大。 我可以使用OpenSSL,使用Encrypt / Decrypt的结果创建文件和内容。
问题是:是否有另一种方法可以做到这一点?
答案 0 :(得分:1)
您需要实施hybrid encryption scheme。这种方案的一个例子是OpenPGP。
在混合加密方案中,生成一个仅用于一条消息的对称会话密钥。对称密钥加密有效载荷,而接收者的公钥用于加密对称密钥。有效负载通常由发送方的私钥签名。最后,整个地块被打包在一起并送出了门。
我建议您使用BouncyCastle之类的东西在Java中进行OpenPGP加密。无需重新发明轮子。
答案 1 :(得分:1)
使用PKCS#7 / CMS或OpenPGP,具体取决于您是希望处理X.509证书(可以是自签名)还是PGP密钥。这两种技术都提供相当级别的安全性,差异(在您的任务的情况下)主要是密钥格式。
BouncyCastle或我们的SecureBlackbox是广泛使用的适用于这两种变体的库。