0

Ich schreibe ein Steganographiesystem, das einen Text innerhalb eines Bildes verschlüsselt - ich entschied, dass ich den Text auch verschlüsseln möchte, bevor ich ihn in das Bild einbette. Der Steganography-Algorithmus arbeitet mit String-Ein-/Ausgabe.Kann die javax.crypto.BadPaddingException nicht überwinden

Aufgrund meiner Laune, habe ich versucht, DES und AES-Algorithmus zu verwenden, aber rannte in die Ausnahme oben. Ich werde zum Beispiel zeigen die Verschlüsselungs-/Entschlüsselungs-Methoden des AES-Algorithmus:

public static byte[] encryptText(String plainText,SecretKey secKey) throws Exception{ 
    // AES defaults to AES/ECB/PKCS5Padding in Java 7 
    Cipher aesCipher = Cipher.getInstance("AES"); 
    aesCipher.init(Cipher.ENCRYPT_MODE, secKey); 
    byte[] byteCipherText = aesCipher.doFinal(plainText.getBytes()); 
    return byteCipherText;} 


    public static String decryptText(byte[] byteCipherText, SecretKey secKey) throws Exception { 
    // AES defaults to AES/ECB/PKCS5Padding in Java 7 
    Cipher aesCipher = Cipher.getInstance("AES"); 
    aesCipher.init(Cipher.DECRYPT_MODE, secKey); 
    byte[] bytePlainText = aesCipher.doFinal(byteCipherText); 
    return new String(bytePlainText); 
} 

Und hier ist die Berufung (Encryption Seite):

//sending the text to encrypt using AES algorithm 
byte[] cipherText = new AES_Algorithm().encrypt(messageDesc.getText(), key); 
    //converting into a String to encrypt using Steganography 
newStringtoEncrypt = new String (cipherText); 

Und hier ist die Berufung (Decryption Seite) - dIE AUSNAHME:

//AES encrypted String after the Steganography's decryption 
String decMessage = dec.decode(path, name); 
    //converting the String to byte [] 
byte [] byteArray = decMessage.getBytes(); 
try{ 
    //HERE IS WHERE I GET THE EXCEPTION 
    //sending the byte array to decryption 
    String original = AES_Algorithm().decrypt(byteArray, key); 

Wo liegt das Problem?

Die Tasten sind ähnlich und die Byte-Arrays als auch (i geprüft es durch die Sequenz Druck) - aber ich wurde gesagt, dass ich nicht getBytes() um von String in byteArray umwandeln können, wenn ich AES/DES verwenden möchten Entschlüsselungsalgorithmus.

Antwort

1

Die Ausgabe von der Verschlüsselungs binär ist, können Sie nicht einfach zu String konvertieren, wie Sie in diesem Code tun:

byte[] cipherText = new AES_Algorithm().encrypt(messageDesc.getText(), key); 
//converting into a String to encrypt using Steganography 
newStringtoEncrypt = new String (cipherText); 

Wenn Sie die verschlüsselten Daten als String benötigen, müssen Sie es irgendwie kodieren , z.B von base64encoding oder von hexEncoding

+0

Mein Gott, wie einfach ... ich habe jetzt für 2 Tage mein Gehirn - DANKE DANK! – prowler