2

警告:这个问题已经过大量编辑。我尽力猜测原作者的意图。请查看原版


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

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

测试
你好世界  
我的安全事情。

这就是我加密文件的方式:

gpg --symmetric File.txt 

这给了我一个新的加密文件:File.txt.gpg

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

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

即使有人修改了文件,我如何才能获取文件的内容?

4

4 回答 4

4

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

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

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

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

于 2010-04-15T13:16:26.840 回答
1

用外行的话回答原始问题;

除非您确切知道某人对您的加密文件进行了哪些更改,否则您的内容就会消失,并且您可能无法取回它。

这就是为什么使用加密文件来保护您的数据的原因;他们真的,真的很难向后工作。

于 2010-04-15T13:25:15.167 回答
0

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

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

您无法加密文件,然后对其进行修改并假装仍然有效加密。

于 2010-04-15T08:50:48.190 回答
0

仅使用加密文件是无法做到这一点的。

我相信您正在寻找的是数据冗余。例如 CD 就有它。您可以在其中进行划痕,整个数据仍然可读,尽管大量数据因划痕而丢失。

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

我不建议您自己实现它。仅使用现有的实现会更简单、更安全。(我确定那里有一些,但我不认识它们。)

于 2010-04-15T13:00:37.433 回答