Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Encryption 即使有人修改了加密文件,我也可以解密它吗?_Encryption_Gnupg - Fatal编程技术网

Encryption 即使有人修改了加密文件,我也可以解密它吗?

Encryption 即使有人修改了加密文件,我也可以解密它吗?,encryption,gnupg,Encryption,Gnupg,警告:此问题已被大量编辑。我尽力猜测原作者的意图。请查看 我不确定如何使用GPG命令行工具,我们用它来加密文件 File.txt是一个简单的文本文件: Testing hello world My security things. 这给了我一个新的加密文件:file.txt.gpg 如果其他人现在修改了加密文件,我将无法再解密它 $ gpg --decrypt File.txt.gpg gpg: no valid OpenPGP data found. gpg: decrypt_mess

警告:此问题已被大量编辑。我尽力猜测原作者的意图。请查看


我不确定如何使用GPG命令行工具,我们用它来加密文件

File.txt是一个简单的文本文件:

Testing hello world My security things. 这给了我一个新的加密文件:file.txt.gpg

如果其他人现在修改了加密文件,我将无法再解密它

$ gpg --decrypt File.txt.gpg 
gpg: no valid OpenPGP data found.
gpg: decrypt_message failed: eof

即使有人修改了我的文件,我怎样才能获得它的内容?

您应该制作并分发加密文件的摘要以及加密文件本身

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


你不能加密一个文件,然后修改它并假装它仍然是有效的加密文件。

你不可能只对加密文件进行加密

我相信你要找的是。例如CD就有。您可以在其中一个上做一个划痕,而整个数据仍然是可读的,尽管有很多数据在划痕中丢失了

最简单的方法是只存储文件两次,使用校验和可以确定其中一个文件是否已被修改。更高级的技术使用交错校验和和和奇偶校验位/字节。在维基百科上可以找到有关的概述


我不建议你自己实施。仅仅使用一个已经存在的实现就更简单、更安全。(我肯定有一些,但我不知道。)

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

一个块的长度通常为128到256位。如果块中的任何位损坏,则无法解密整个块。如果不是这样,那么即使没有键,也可以获得有关块内容的一些信息。任何好的加密算法的一个重要部分是,明文或明文中单个位的更改都可能导致相应的明文或明文中任意数量的位的更改

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


如果加密一个块的结果会影响以下块的加密方式,则损坏单个块中的单个位将导致该块后面的其余密码文本无法恢复。

用外行术语回答原始问题

除非您确切知道有人对您的加密文件做了哪些更改,否则您的内容将丢失,并且您可能无法将其取回


这就是为什么加密文件被用来保护你的数据;它们真的很难反向工作。

你需要全部内容还是只是寻找部分内容(未被修改的内容)?我想要修改前存在的内容。实际上,你不能对文件进行GPG加密、修改并假装它仍然加密。这取决于算法。例如,看到您可以使用ROT-13“加密”来实现这一点是很琐碎的。寻找同时允许部分编辑的强加密算法是一个热门的研究课题。
$ gpg --decrypt File.txt.gpg 
gpg: no valid OpenPGP data found.
gpg: decrypt_message failed: eof