.txt文件的Java AES解密仅在IDE中有效

时间:2018-07-01 18:39:28

标签: java encryption jar aes

我正在做一个简单的Java程序,该程序从.txt文件中读取AES加密文本并将其解密以将其打印到文本框中。我在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一起使用。

编辑:我试图自己一步一步调试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);

0 个答案:

没有答案