javax.crypto.BadPaddingException: ошибка дешифрования [AES]

Я искал в Интернете, и я пытался решить эту проблему разными способами, но я не могу найти решение! это метод, который дает мне эту ошибку:

   public static void decode() throws Exception{

    //READ CODED PRIVATE KEY IN PKCS#8

    String privateKeystore ="C:\\Users\\dario\\Desktop\\Server\\chiaveprivata";
    FileInputStream fis = new FileInputStream (privateKeystore);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    int i=0;
    while ((i=fis.read()) != -1){
        baos.write(i);
    }
    fis.close();
    byte[] privateKeyBytes= baos.toByteArray();

    PKCS8EncodedKeySpec ks= new PKCS8EncodedKeySpec(privateKeyBytes);
    KeyFactory kf = KeyFactory.getInstance("RSA");
    PrivateKey privateKey = kf.generatePrivate(ks);

    //LEGGE FILE CODIFICATO

   String sorgente= "C:\\Users\\dario\\Desktop\\Client\\chiavecod";
   fis = new FileInputStream(sorgente);
   baos.reset(); 
   byte[] codFile;
   i = 0;
   while((i = fis.read()) != -1) {
    baos.write(i);
   }
   fis.close();
   codFile = baos.toByteArray();

   //DECODE

   System.out.print("\nDecoding");
   Cipher c = Cipher.getInstance("RSA/ECB/PKCS1Padding");
   System.out.print(".");
   c.init(Cipher.DECRYPT_MODE, privateKey);
   System.out.print(".");
   byte [] plainFile= c.doFinal(codFile);
   System.out.println(". End!\n");

   //SAVE FILE


    String dest="C:\\Users\\dario\\Desktop\\Server\\chiavedecod";
    FileOutputStream fos = new FileOutputStream(dest);
    fos.write(plainFile);
    fos.close();

}//decode()

Это дает мне такой вывод:

Decoding..Exception in thread "main" javax.crypto.BadPaddingException: Decryption error
    at sun.security.rsa.RSAPadding.unpadV15(RSAPadding.java:380)
    at sun.security.rsa.RSAPadding.unpad(RSAPadding.java:291)
    at com.sun.crypto.provider.RSACipher.doFinal(RSACipher.java:363)
    at com.sun.crypto.provider.RSACipher.engineDoFinal(RSACipher.java:389)
    at javax.crypto.Cipher.doFinal(Cipher.java:2165)
    at tlcproject.RSAAlgorithm.decodifica(RSAAlgorithm.java:123)
    at tlcproject.Server.main(Server.java:34)

Process finished with exit code 1

Проблема, кажется, в этой строке кода: byte [] plainFile= c.doFinal(codFile); но я не могу найти решение! Почему должна быть ошибка заполнения? Я думаю, что Padding прав, поэтому проблема может возникнуть, когда я пытаюсь сделать doFinal команда

0 ответов

Другие вопросы по тегам