AES Verschlüsselung und Base64

AlexKlar

Grünschnabel
Hallo,

ich möchte einen Base64 Kodierten AES-256 Schlüssel einlesen und bekomme das nicht hin. Den Schlüssel habe ich mir hier erstellt und möchte ihn folgendermaßen verwenden:

Code:
    public static void main (String[] args) {

        String base64Code = "TT5XkU65S4jSVYXg+WixRZ7YzfTxtEWs3BXn4GuLYww=";
        try {
            byte keyBytes[] = new BASE64Decoder().decodeBuffer(base64Code);
            SecretKeySpec key = new SecretKeySpec(keyBytes, "AES");

            Cipher cipher = Cipher.getInstance("AES");
            cipher.init(Cipher.ENCRYPT_MODE, key);
            byte[] encryptedBytes = cipher.doFinal("Test".getBytes());
            System.out.println(new String(encryptedBytes));
        } catch (Exception e) { System.out.println(e); }
        
    }

Leider erhalte ich eine "InvalidKeyException: Illegal key size or default parameters".
Könnt ihr mir bitte helfen? Ich möchte übrigens keinen Code von Java generieren lassen, sondern einen per Datei oder Mail austauschbaren Code im Textformat verwenden.

Vielen Dank!
Alex
 
Hallo
Wenn du was mit Base64 machst, dann nehm lieber nicht die undokumentierten Java Klassen. Apache Foundation hat da was passendes.
Oder schau mal hier, downloade und binde die jar in dein Projekt ein.
http://www.source-code.biz/base64coder/java/

Anschließend kannst du damit arbeiten z.b

Code:
    String text = "Hello World";

    String encodeString = Base64Coder.encodeString(text);
    System.out.println(encodeString);

    String decodeString = Base64Coder.decodeString(encodeString);
    System.out.println(decodeString);
gibt die ausgabe

Code:
SGVsbG8gV29ybGQ=
Hello World

Zu deinem direkten Problem, in Java kannst du nicht AES 256 ohne es vorher "freizuschalten". Hierzu musst die Java Cryptography Extension runterladen und in den Java Ordner/lib/security rein kopieren. Alles überschreiben.

Danach sollte es gehen, die erweiterung bekommst du hier http://www.oracle.com/technetwork/java/javase/downloads/index.html

btw. wenn du wissen willst wie groß du den schlüssen akutell haben kannst

Code:
int maxKeyLen = Cipher.getMaxAllowedKeyLength("AES");
System.out.println(maxKeyLen);

Was bei mir vor der Erweiterung nur 128 war.
Gruß
SAmy
 
Zuletzt bearbeitet von einem Moderator:
Zurück