java - 使用外部密钥解密文本文件

时间:2017-07-17 08:42:05

标签: java encryption

我有一个加密文本文件的程序,并分别保存编码的txt和密钥。现在我尝试编写使用密钥解密文件的解密程序。我读了钥匙,但似乎我不能那样用它。有没有人给我建议,或者甚至不可能这样做?

public class decrypt {

    public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IOException {

        try {
            File fileDir = new File("C:/xxx/key.txt");

            BufferedReader in = new BufferedReader(
                         new InputStreamReader(new FileInputStream(fileDir), "UTF-8"));
            String str;

            while ((str = in.readLine()) != null) {
                System.out.println(str);
            }

            in.close();
            }catch (UnsupportedEncodingException e){
                System.out.println(e.getMessage());
            }catch (IOException e){
                System.out.println(e.getMessage());
            }catch (Exception e){
                System.out.println(e.getMessage());
            }


        byte[] decodedKey = Base64.getDecoder().decode(str);
        SecretKey originalKey = new SecretKeySpec(decodedKey, 0, decodedKey.length, "AES"); 

    }
}

2 个答案:

答案 0 :(得分:0)

  

解密文本文件

你的问题已经没有意义了。加密结果不是文本文件。因此,首先您没有尝试使用Reader阅读它。

您需要好好了解CipherInputStream

答案 1 :(得分:-1)

str = in.readLine()不会向str附加文字,但会创建一个包含下一行的新字符串。 您应该执行以下操作:

StringBuilder sb = new StringBuilder();

然后在while循环中:

sb.append(str);

最后,您可以通过调用

来获取字符串内容
sb.toString()

编辑:或者如果这样更清楚,那就是一个更完整的例子:

String line;
StringBuilder sb = new StringBuilder();

while ((line = in.readLine()) != null) {
    sb.append(line);
    sb.append("\n");
    System.out.println(line);
}

String content = sb.toString();