BadPaddingException cuando se usa el cifrado de libro de texto

1

Estoy usando una implementación como la que se muestra a continuación para realizar un cifrado en el que se utiliza el bouncycastle como proveedor de cifrado. Por lo tanto, el texto cifrado para un texto simple en particular no será dinámico, ya que el RSA de bouncycastle no tiene un relleno. Se comportará como un cifrado de libro de texto.

  private static byte [] encrypt(String plaintext) throws Exception {

        KeyStore keyStore = getKeyStore();
        Certificate[] certs = keyStore.getCertificateChain("alias");
        Cipher cipher = Cipher.getInstance("RSA","BC");
        cipher.init(Cipher.ENCRYPT_MODE, certs[0].getPublicKey());
        return cipher.doFinal(plaintext.getBytes());
    }

Luego estoy descifrando el texto cifrado como se muestra a continuación

private static String decrypt(byte [] ciphertext) throws Exception {

    KeyStore keyStore = getKeyStore();
    PrivateKey privateKey = (PrivateKey) keyStore.getKey("alias",
            "password".toCharArray());
    Cipher cipher = Cipher.getInstance("RSA","BC");
    cipher.init(Cipher.DECRYPT_MODE, privateKey);
    byte[] cipherbyte=cipher.doFinal(ciphertext);
    return new String(cipherbyte);
}

Durante ese tiempo, obtengo la siguiente excepción

Caused by: javax.crypto.BadPaddingException: Given final block not properly padded
    at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:966)
    at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:824)
    at com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:436)
    at javax.crypto.Cipher.doFinal(Cipher.java:2165)
    at 

¿Cuál sería la razón de esto? Hasta donde se sabe, esto puede ocurrir solo cuando se aplica el relleno, como RSA con OAEP o algo similar. He comprobado muchas preguntas hechas por muchas otras personas y todos están demostrando ejemplos con el relleno.

Por favor, avíseme si hay otros lugares posibles donde pueda ocurrir esta excepción. Realmente aprecio tu ayuda en esto

    
pregunta Prakhash 14.06.2018 - 13:48
fuente

0 respuestas

Lea otras preguntas en las etiquetas