Расшифровка Java AES из файла .txt работает только в IDE - PullRequest
0 голосов
/ 01 июля 2018

Я делаю простую Java-программу, которая читает зашифрованный текст AES из TXT-файла и расшифровывает его для печати в текстовое поле. Я проверил это в моей IDE, и все заработало. Однако, если я создаю .jar и открываю его, текст не добавляется в текстовое поле. Он находит файл .txt, читает текст, но я думаю, что есть проблема с расшифровкой.

    public String decryptAES(String input, String key, String initVector){
    try {
      IvParameterSpec iv = new IvParameterSpec(initVector.getBytes("UTF-8"));
      SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");

      Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
      cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);

      byte[] original = cipher.doFinal(Base64.decodeBase64(input));

      return new String(original);

Особенно строка byte[] original = cipher.doFinal(Base64.decodeBase64(input)); может быть причиной проблемы. Я просто не могу понять, почему он не будет работать с автономным .jar.

Редактировать: Я пытался пошагово отлаживать банку сам. Печать трассировки стека в MsgBoxes и добавление комментариев и всего прочего, чтобы увидеть, где он останавливается. Никаких следов стека мне не показали. Кажется, он остановился прямо перед упомянутой строкой:

byte [] original = cipher.doFinal (Base64.decodeBase64 (input));

Edit2: шифрование работает просто отлично. Также вне IDE. Вот часть:

public String encryptAES(String input, String key, String initVector) 
  {
    try {
      IvParameterSpec iv = new IvParameterSpec(initVector.getBytes("UTF-8"));
      SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");

      Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
      cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);

      byte[] encrypted = cipher.doFinal(input.getBytes());

      return Base64.encodeBase64String(encrypted);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...