【问题标题】:Encrypting and Decrypting a text file in java maintaining first line as readable在java中加密和解密文本文件,保持第一行可读
【发布时间】:2013-01-21 06:55:36
【问题描述】:

我需要加密和解密一个文本文件。对于加密和解密,我可以使用 DES/AES 算法。我有一个用于加密和解密文本文件的代码,但问题是,文件中的第一行必须以这样的方式加密一种应该可以理解的方式。使用 AES 和 DES 加密后我得到不可读的格式。加密后我需要读取文件的第一行。请帮助我。提前谢谢

【问题讨论】:

  • 你说第一行加密后应该可以理解是什么意思?未触及,未加密?或者以某种方式被加密,但对人眼来说似乎很友好?
  • 以某种方式加密,但应该对人眼友好

标签: java aes encryption des


【解决方案1】:

为什么不在文件开头添加一个用户可读的幻数,并在完成文本块后再次添加?像这样的:

MagiKrypt

This file has been encrypted with MagiKrypt, and you will need the program at (URL HERE) to decrypt it.

MakiKrypt\x00\x01\x02\x03
(AES data here)
EOF

这样您的程序就可以很容易地分辨出文本在哪里,AES 数据在哪里,并且用户可以读取文件的第一部分。如果他们在文本编辑器中打开它仍然会一团糟,但至少他们会看到介绍块。

【讨论】:

  • 你现在是如何写出密文的?你是在使用一些库,还是只是内置的 Java IO?
【解决方案2】:

加密产生字节,而不是人类可读的字符。为了使您的字节可读,您需要将它们转换为不同的格式。我建议将Base64 作为执行此操作的常用方法。

加密文件后,根据需要将文件转换为 Base64 并显示 Base64 部分。它没有任何意义,但它不会包含任何太奇怪的东西。

【讨论】:

    【解决方案3】:

    最好保持第一行不加密,或者您应该创建自己的规则并加密第一个(和所有)文本。最好使用 SHAI 算法进行更好的加密。除了 SHA1,另一种选择是 BTE 加密

    【讨论】:

    • 我在某处读到使用 MD5 和 SHA1 无法解密,因为它们是散列算法
    • 是的,您是正确的,但是为 SHA1 设置密钥并在需要解密的另一端使用相同的密钥进行检查将有助于解决问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 2016-03-11
    • 2012-02-18
    • 1970-01-01
    相关资源
    最近更新 更多