2016-06-23 12 views
0

Ich programmiere gerade eine Client-Server-Anwendung. Um genau zu sein: Eine App!Diverse Ausnahmen bei der Verwendung von Base64-Decoder in Java 8

Ich verwende AES-128-Verschlüsselung, die in verschiedenen Tests gut funktioniert. Das Problem ist, dass die Base64 Decoder 2 verschiedene Ausnahmen wirft ...

Hier ist der Code:

package cipher; 

import java.io.*; 
import java.util.Base64; 
import javax.crypto.*; 
import javax.crypto.spec.SecretKeySpec; 

public class Ciphera 
{ 
    private SecretKey key; 
    private Cipher enc; 
    private Cipher dec; 
    public void initialize() 
    { 
     try 
     { 
      File keyf = new File("key.key"); 
      FileInputStream fread = new FileInputStream(keyf); 
      byte[] enckey = new byte[(int)keyf.length()]; 
      fread.read(enckey); 
      fread.close(); 
      key = new SecretKeySpec(enckey, "AES"); 


      enc = Cipher.getInstance("AES"); 
      enc.init(Cipher.ENCRYPT_MODE, key); 
      dec = Cipher.getInstance("AES"); 
      dec.init(Cipher.DECRYPT_MODE, key); 
     } 
     catch (Exception e) 
     { 
     } 
    } 

    //Encoder 
    public String encode(String str) 
    { 
     String decr = ""; 
     try 
     { 
      byte[] encr = enc.doFinal(str.getBytes()); 
      decr = Base64.getEncoder().encodeToString(encr); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
     return decr; 
    } 

    //Decoder 
    public String decode(String str) 
    { 
     String decr = ""; 
     try 
     { 
      byte[] temp = Base64.getDecoder().decode(str); 
      temp = dec.doFinal(temp); 
      for(int i = 0; i < temp.length; i++) 
      { 
       decr += (char)temp[i]; 
      } 
     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
     return decr; 
    } 
} 

Ausnahmen:

java.lang.IllegalArgumentException: Illegal base64 character 0 
    at java.util.Base64$Decoder.decode0(Base64.java:714) 
    at java.util.Base64$Decoder.decode(Base64.java:526) 
    at java.util.Base64$Decoder.decode(Base64.java:549) 
    at cipher.Ciphera.decode(Ciphera.java:78) 
    at socket.Harbour.run(Harbour.java:68) 
    at java.lang.Thread.run(Thread.java:745) 

java.lang.IllegalArgumentException: Input byte array has incorrect ending byte at 152 
    at java.util.Base64$Decoder.decode0(Base64.java:742) 
    at java.util.Base64$Decoder.decode(Base64.java:526) 
    at java.util.Base64$Decoder.decode(Base64.java:549) 
    at cipher.Ciphera.decode(Ciphera.java:78) 
    at socket.Harbour.run(Harbour.java:68) 
    at java.lang.Thread.run(Thread.java:745) 

Diese Klasse gearbeitet hat, aber das war ein Haufen vor Tagen und ich habe den Code nicht mehr. Wie Sie sehen können, sind in diesem Projekt mehr als eine Klasse involviert. Nun, es ist ein riesiges Projekt. : D

Der String, der entschlüsselt werden muss, ist die folgende:

LYGlOH13Qu5vg1oEjk17Efssa0ki44oWu55GZutFLrdPh1y4h+qz8bfJ1vOyOtea5qrbmFz1lEqDPuJEC1L5CKUQ98nMKTn7k75PdOzMmuXSeDhLqcAviYT3w0DDJDhFw2k4ddzFUj/tW6AmvycSXA== 

Ihnen vielleicht den Fehler helfen, dies kann zu finden ... (Dieser String mit der gleichen Klasse codiert wird)

googeln hat nicht geholfen. Nun, ich hoffe, dass Sie mir helfen können.

Vielen Dank im Voraus! ; D

Antwort

0

Löste das AUSGABE

ich einen Weg gefunden, um das Problem zu lösen.

Der Fehler war in einer anderen Klasse (Harbor), wo der Eingang des UDP-Sockets falsch geparst wurde. Ich hatte ein Array von 500 Feldern, aber nur ein paar waren gefüllt, so dass der bas64-Decoder an dem Punkt gescheitert, als zu versuchen, char = 0

Vielen Dank für alle, die Antworten versucht!