警告:此问题已经过严格修改。我尽力猜测原作者的意图。请查看original version。
我不确定如何使用我们用来加密文件的GPG命令行工具。
File.txt是一个简单的文本文件:
Testing hello world My security things.
这是我加密文件的方式:
gpg --symmetric File.txt
这给了我一个新的加密文件:File.txt.gpg
如果其他人现在修改了加密文件,我就无法解密了。
$ gpg --decrypt File.txt.gpg
gpg: no valid OpenPGP data found.
gpg: decrypt_message failed: eof
即使有人对其进行了修改,我如何获取文件内容?
答案 0 :(得分:4)
典型的对称加密模式对数据块进行操作,每个块的结果用于加密下一个块。
块通常为128到256位长。如果块中的任何位已损坏,则无法解密整个块。如果不是这种情况,那么即使没有密钥,也可以获得有关块内容的一些信息。任何好的加密算法的一个重要部分是明文或密文中单个位的改变可能导致相应的密文或明文中任意数量的位的改变。
加密机制的另一个重要特征是明文中的相同块未加密到密文中的相同块。如果是,则可以获得有关明文内容的信息。例如,如果每个块都以完全相同的方式加密,则加密时,位图图像文件可能是清晰的,因为出现了模式。因此,加密一个块的结果有时用于加密下一个块。还有一些常见的模式,其中只有密钥影响后续块的加密,而不是明文。
如果加密一个块的结果会影响后续块的加密方式,那么单个块中单个位的损坏将导致该块后面的其余密文不可恢复。
答案 1 :(得分:1)
以外行的方式回答原来的问题;
除非您确切知道某人对您的加密文件所做的更改,否则您的内容将会消失,而您可能无法将其恢复。
这就是加密文件用于保护数据的原因;他们真的很难倒退。
答案 2 :(得分:0)
您应该生成并分发加密文件的摘要以及加密文件本身。
在解密文件之前,计算摘要并检查是否等于提供的摘要。 如果摘要不匹配,则加密文件已损坏且无效。
您无法对文件进行加密,然后对其进行修改并伪装成仍然有效的加密文件。
答案 3 :(得分:0)
您无法仅使用加密文件执行此操作。
我相信你所寻找的是data redundancy。例如CD有它。你可以在一个上做一个划痕,整个数据仍然是可读的,尽管有很多数据随着划痕而丢失。
最简单的方法是将文件存储两次,使用校验和,您可以确定其中一个是否已被修改。更高级的技术使用交错校验和和奇偶校验位/字节。可以在维基百科上找到error detection and correction techniques的概述。
我不建议您自己实施。使用现有的实现更简单,更安全。 (我确信那里有一些,但我不知道。)