2016-09-14 5 views
0

Ich versuche, einige Daten mit AES-Verschlüsselung und Entschlüsselung zu verschlüsseln. Dort, habe ich eine Cipher mit folgenden Parametern,Java-Verschlüsselung: NoSuchAlgorithmException Fehler

Algorithmusname - AES

Mode - CBC-Modus

Padding - PKCS7

Cipher aesCipherForEncryption = Cipher.getInstance("AES/CBC/PKCS7PADDING"); 

Ausnahme Nach werfen, wenn ich meine Verschlüsselung laufen Code.

No Such Algorithm exists java.security.NoSuchAlgorithmException: Cannot find any provider supporting DES/CBC/PKCS7Padding. 

Dies ist mein Quellcode,

String strDataToEncrypt = new String(); 
    String strCipherText = new String(); 
    String strDecryptedText = new String(); 

    try { 
     KeyGenerator keyGen = KeyGenerator.getInstance("AES"); 
     keyGen.init(128); 
     SecretKey secretKey = keyGen.generateKey(); 

     final int AES_KEYLENGTH = 128; 
     byte[] iv = new byte[AES_KEYLENGTH/8];  
     SecureRandom prng = new SecureRandom(); 
     prng.nextBytes(iv); 

     Cipher aesCipherForEncryption = Cipher.getInstance("AES/CBC/PKCS7PADDING"); 

     aesCipherForEncryption.init(Cipher.ENCRYPT_MODE, secretKey, new IvParameterSpec(iv)); 

     strDataToEncrypt = "Hello World of Encryption using AES "; 
     byte[] byteDataToEncrypt = strDataToEncrypt.getBytes(); 
     byte[] byteCipherText = aesCipherForEncryption.doFinal(byteDataToEncrypt); 

     strCipherText = new BASE64Encoder().encode(byteCipherText); 
     System.out.println("Cipher Text generated using AES is " + strCipherText); 


     Cipher aesCipherForDecryption = Cipher.getInstance("AES/CBC/PKCS7PADDING"); 

     aesCipherForDecryption.init(Cipher.DECRYPT_MODE, secretKey, new IvParameterSpec(iv)); 
     byte[] byteDecryptedText = aesCipherForDecryption.doFinal(byteCipherText); 
     strDecryptedText = new String(byteDecryptedText); 

     System.out.println(" Decrypted Text message is " + strDecryptedText); 

    } catch (NoSuchAlgorithmException noSuchAlgo) { 
     System.out.println(" No Such Algorithm exists " + noSuchAlgo); 
    } catch (NoSuchPaddingException noSuchPad) { 
     System.out.println(" No Such Padding exists " + noSuchPad); 
    } catch (InvalidKeyException invalidKey) { 
     System.out.println(" Invalid Key " + invalidKey); 
    } catch (BadPaddingException badPadding) { 
     System.out.println(" Bad Padding " + badPadding); 
    } catch (IllegalBlockSizeException illegalBlockSize) { 
     System.out.println(" Illegal Block Size " + illegalBlockSize); 
    } catch (InvalidAlgorithmParameterException invalidParam) { 
     System.out.println(" Invalid Parameter " + invalidParam); 
    } 

Aber das ist die Arbeit mit PKCS5 mit denselben Parametern in Cipher

irgendwelche Ideen?

+1

Mögliche Duplikat [Encrypt Text AES/CBC/PKCS7Padding] (http://stackoverflow.com/questions/29232705/encrypt-text-to-aes- cbc-pkcs7padding) – 1615903

Antwort

1

Von der documentation wird das erwähnte Padding PKCS7 nicht unterstützt.

Sie auf diese answer für weitere Informationen verweisen