Моя цель - написать программу Java для шифрования текстового файла (cipher text
) с использованием AES algorithm
. Затем напишите еще одну программу для дешифрования этого зашифрованного файла (cipher text
), чтобы вернуть текст. Я хочу использовать тот же ключ (тот же ключ, генерировать один раз, сохранять его где-то и использовать его как в программе шифрования, так и для дешифрования) для шифрования и дешифрования. Если я сгенерирую ключ и выполняю шифрование и дешифрование по строкам в одной и той же программе, тогда он отлично работает. Вот рабочий фрагмент кода для этого:Как генерировать секретный ключ в Java один раз и использовать этот ключ в двух разных программах
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);
Но, мне нужно иметь две разные программы (Java-файлы) для шифрования и дешифрования. Итак, я должен как-то сгенерировать ключ и сохранить это где-то. Затем используйте тот же ключ для программы шифрования и дешифрования. Как я могу это сделать?
EDIT_1
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(128);
SecretKey secretKey = keyGen.generateKey();
byte[] encoded = secretKey.getEncoded();
System.out.println("key: "+encoded);// key: [[email protected]
я могу получить кодированный ключ с помощью приведенной выше программы. Но мой вопрос заключается в том, как генерировать SecretKey, используя это значение в моей программе дешифрования?
Вы создали ключ, что мешает вам записать его в файл, а затем прочитать его во второй программе? –
@JimGarrison, пожалуйста, посмотрите мое редактирование. –
Ключ - это 'byte []', для которого система использует 'Object # toString()', который просто записывает внутреннее удостоверение. Вам нужно написать отдельный байт _values_ в файл, возможно, сначала преобразовать их в шестнадцатеричный. –