我有一个包含在byte []中的消息,用“RSA / ECB / PKCS1Padding”加密。为了解密它,我创建了一个Cipher c并用
启动它c = Cipher.getInstance("RSA/ECB/PKCS1Padding");
直到现在我只使用 doFinal()方法解密了小消息,并使用解密的字节返回byte []。
c.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptetBytes = c.doFinal(encryptedBytes);
但是在这种情况下数据更大(大约500字节), doFinal() -method抛出异常(javax.crypto.IllegalBlockSizeException:数据不得超过128个字节) 。我想我需要使用 update() - 方法,但我无法弄清楚如何让它正常工作。这是怎么做到的?
答案 0 :(得分:4)
我认为使用RSA加密除了密钥传输之外的任何东西都是滥用。
为对称密码生成新密钥,并使用该密钥加密批量数据。然后使用RSA加密密钥。将对称加密的密文与非对称加密的内容加密密钥一起发送给收件人。
答案 1 :(得分:1)
您应该加密的步骤是:
要解密: