RSA Bad Padding异常

时间:2017-05-17 15:53:12

标签: java spring encryption rsa badpaddingexception

我正在尝试RSA加密Android上的数据并将其发送到服务器(spring)。 得到BadPaddingException:

方法: 服务器在字符串中发送公钥,我将其转换为PublicKey对象,并在加密后将数据从App发送为字符串。 server有一个私钥字符串,转换为PublicKey对象,然后解密数据。

非常感谢任何帮助。

生成密钥:

public byte[] decryptRSA(String inputData) throws Exception {
    byte[] inputBytes = Base64.decodeBase64(inputData);
    PrivateKey key = loadPrivateKey(getPrivateKey());
    Cipher cipher1 = Cipher.getInstance("RSA");
    cipher1.init(Cipher.DECRYPT_MODE, key);
    return cipher1.doFinal(inputBytes);
}

private PrivateKey loadPrivateKey(String key64) throws Exception {
    byte[] pkcs8EncodedBytes = Base64.decodeBase64(key64);
    PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(pkcs8EncodedBytes);
    KeyFactory kf = KeyFactory.getInstance("RSA");
    return kf.generatePrivate(keySpec);
}

服务器方法:

{{1}}

1 个答案:

答案 0 :(得分:0)

搞定了。 所以不同的libs有Cipher的不同实现。 所以在打电话的时候

Cipher.getInstance( “RSA / ECB / PKCS1Padding”);

明确提及加密模式和填充。

希望它对某人有帮助。