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
Dank gogoru für Ihre Antwort, aber wenn Sie AES-128 verwenden, brauchen Sie nicht die Jce ... Wenn das der Grund gewesen wäre, dann wäre eine andere Ausnahme Raisen geworden ... haben Sie einen schönen Tag – Ov3rfl0w
Dank ich löste die ausgegeben – Ov3rfl0w