So generieren Sie einen geheimen Schlüssel in Java und verwenden diesen Schlüssel in zwei verschiedenen Programmen
Mein Ziel ist es, ein Java-Programm zum Verschlüsseln einer Textdatei zu schreiben (cipher text
) mitAES algorithm
. Und dann schreiben Sie ein anderes Programm, um diese verschlüsselte Datei zu entschlüsseln (cipher text
) um den Klartext zurück zu bekommen. Ich möchte denselben Schlüssel verwenden (denselben Schlüssel, einmal generieren, irgendwo speichern und in Verschlüsselungs- und Entschlüsselungsprogrammen verwenden), um ihn zu verschlüsseln und zu entschlüsseln. Wenn ich einen Schlüssel generiere und die Ver- und Entschlüsselung zeilenweise im selben Programm durchführe, funktioniert das einwandfrei. Hier ist das Arbeitscode-Snippet dafür:
String strDataToEncrypt = new String();
String strCipherText = new String();
String strDecryptedText = new String();
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(128);
SecretKey secretKey = keyGen.generateKey();
Cipher aesCipher = Cipher.getInstance("AES");
aesCipher.init(Cipher.ENCRYPT_MODE,secretKey);
strDataToEncrypt = "any text input";
byte[] byteDataToEncrypt = strDataToEncrypt.getBytes();
byte[] byteCipherText = aesCipher.doFinal(byteDataToEncrypt);
strCipherText = new BASE64Encoder().encode(byteCipherText);
System.out.println("cipher text: " +strCipherText);
aesCipher.init(Cipher.DECRYPT_MODE,secretKey,aesCipher.getParameters());
byte[] byteDecryptedText = aesCipher.doFinal(new BASE64Decoder().decodeBuffer(strCipherText));
strDecryptedText = new String(byteDecryptedText);
System.out.println("plain text again: " +strDecryptedText);
Ich benötige jedoch zwei verschiedene Programme (Java-Dateien) zum Ver- und Entschlüsseln. Also muss ich irgendwie einen Schlüssel generieren und diesen irgendwo speichern. Verwenden Sie dann denselben Schlüssel für das Ver- und Entschlüsselungsprogramm. Wie kann ich das machen?
EDIT_1
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(128);
SecretKey secretKey = keyGen.generateKey();
byte[] encoded = secretKey.getEncoded();
System.out.println("key: "+encoded);// key: [B@52b2a2d8
Ich kann den verschlüsselten Schlüsselwert mit dem obigen Programm erhalten. Aber meine Frage ist, wie ich den SecretKey mit diesem Wert in meinem Entschlüsselungsprogramm generieren kann?