我有一个加密文本文件的程序,并分别保存编码的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");
}
}
答案 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();