我在服务器上使用 phpseclib 加密数据
$rsa->loadKey($encryptkey);
$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
$ciphertext = $rsa->encrypt($str);
并在我的 Java 应用程序中接收它。数据为 384 字节(3*128)。
在 Java 中,我试图解密它(它们的密钥已正确分发)但我得到了这个异常:
javax.crypto.IllegalBlockSizeException: Data must not be longer than 128 bytes
下面是我正在使用的代码。我有 2 行,data =
因为我很困惑这种情况是否算作多级解密,因此使用更新。如果是这样,我不明白如何使用 update 和 doFinal 来获取解密数据(我的谷歌技能在这里没有删减)。
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.DECRYPT_MODE, pr);
data = cipher.update(encrypted_data);
data = cipher.doFinal();
System.out.println(data);