2010-04-15 65 views
2

警告:这个问题已经过很多编辑。我尽力猜出原作者的意图。请查看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

您是否需要_whole_内容或者您只是在寻找内容片断(未被修改)? – 2010-04-15 08:51:23

+0

我想要修改之前的内容。 – kiruthika 2010-04-15 10:44:11

回答

4

典型的对称加密模式对数据块进行操作,并且每个块的结果都用于加密下一个块。

一个块通常是128到256位长。如果块内的任何位被破坏,则整个块不能被解密。如果情况并非如此,那么即使没有密钥,也可以获得有关该块内容的一些信息。任何好的加密算法的一个重要部分是,在明文或密文中改变单个比特可以导致相应的密文或明文中的任何比特数改变。

加密机制的另一个重要特征是明文中的相同块不会被加密成密文中的相同块。如果是,那么就有可能获得关于明文内容的信息。例如,由于出现的模式,如果每个块都以完全相同的方式加密,则位图图像文件在加密时可能会清晰可见。出于这个原因,加密一个块的结果有时用于加密下一个块。还有一些常见的模式,其中只有密钥影响后续块的加密,而不是明文。

如果加密一个数据块的结果影响后续数据块的加密方式,那么对单个数据块中单个位的损坏将导致该数据块之后的其余密码文件不可恢复。

0

您应该生成并分发加密文件的摘要以及加密文件本身。

在解密文件之前,计算摘要并检查是否等于提供的摘要。 如果摘要不匹配,则加密文件已损坏且无效。

您无法加密文件,然后修改它并假装仍然有效加密。

+0

实际上,你不能** GPG ** - 加密文件,修改它,并假装它仍然是加密的。这是依赖于算法的。例如,看到你可以使用ROT-13“加密”来做这件事情是非常繁琐的。寻找强大的加密算法,也允许部分编辑是一个热门的研究课题。 – MSalters 2010-04-15 13:19:59

0

没有办法只用加密文件就可以做到这一点。

我相信你要找的是data redundancy。例如CD有它。尽管事实上很多数据都是从头开始丢失的,但您可以对其中一个进行划分,整个数据仍然可读。

这样做最简单的方法就是将文件存储两次,使用校验和,您可以确定是否修改了其中一个文件。更高级的技术使用交错校验和和奇偶校验位/字节。关于error detection and correction techniques的概述可以在维基百科上找到。

我不建议你自己实现它。仅使用已有的实现就简单多了。 (我确信这里有一些,但我不知道它们。)

1

用外行人的话回答原来的问题;

除非您确切地知道某人对您的加密文件所做的更改,否则您的内容不见了,而且您可能无法取回它。

这就是为什么使用加密文件来保护您的数据;他们真的很难倒退。