AES-256 Passwortbasierte Verschlüsselung / Entschlüsselung in Java

8

Ich habe eine Anleitung zur Implementierung der AES-Verschlüsselung / Entschlüsselung in Java gefunden und versucht, jede Zeile zu verstehen, wie ich sie in meine eigene Lösung einfüge. Ich verstehe es jedoch nicht vollständig und habe dadurch Probleme. Das Endziel ist die Verschlüsselung / Entschlüsselung auf Passphrase-Basis. Ich habe andere Artikel / stackoverflow Beiträge darüber gelesen, aber die meisten bieten keine ausreichende Erklärung (ich bin sehr neu zu crypto in Java)

Meine wichtigsten Probleme sind im Moment, dass ich auch byte[] saltBytes = "Hello".getBytes(); einstelle Ich bekomme am Ende immer noch ein anderes Base64-Ergebnis ( char[] password ist jedes Mal zufällig, aber ich habe gelesen, dass es sicherer ist, Passwörter in char[] form zu hinterlassen. Mein anderes Problem ist, dass wenn das Programm decrypt() erreicht, I Erhalte eine NullPointerException um   byte[] saltBytes = salt.getBytes("UTF-8");

Vielen Dank im Voraus für jede Hilfe / Beratung, die Sie mir geben können.

Der betreffende Code:

%Vor%     
volo_java 20.02.2015, 05:48
quelle

1 Antwort

17

Ich denke, dass Sie zwei Fehler machen:)

Ich habe Ihren Beispielcode korrigiert, damit er funktioniert:

%Vor%

Der erste Fehler ist, dass Sie zwei verschiedene Salze erzeugen (wenn Sie die Methode encrypt verwenden), also waren verschlüsselte / entschlüsselte Logs unterschiedlich (logisch, aber die Entschlüsselung funktioniert immer noch, weil Sie die Entschlüsselung direkt nach der Verschlüsselung aufrufen).

Der zweite Fehler war für den geheimen Schlüssel. Sie müssen beim Verschlüsseln einen geheimen Schlüssel generieren, aber nicht entschlüsseln. Um es einfacher auszudrücken, es ist so, als ob ich mit dem Passwort "encrypt" verschlüsseln würde und dass Sie versuchen, es mit dem Passwort "entschlüsseln" zu entschlüsseln.

Ich würde dir raten, jedes zufällige Zeugs zu erzeugen (wie zum Beispiel privater Schlüssel, Salz usw. beim Start). Aber Vorsicht: Wenn Sie Ihre App stoppen, können Sie alte Daten nicht mehr entschlüsseln, es sei denn, Sie erhalten die gleichen zufälligen Daten.

Ich hoffe, ich habe geholfen:)

Grüße,

    
Bastien Cecchinato 20.02.2015, 08:01
quelle