如果我“解密”明文,我会得到什么?

信息安全 解密
2021-08-10 18:59:49

如果使用相应的密钥对加密文本进行解密,我们将得到明文。但是,如果我要解密纯文本怎么办?结果会怎样?一个错误或一些无意义的数字?

4个回答

“加密”是一个很大的术语。总的来说,加密在可能的输入消息的某个空间中获取输入消息;通常具有各种长度限制的任意“位序列”,例如“位长度必须是 8 的倍数”(即输入必须是字节序列),或“长度不得超过 245 字节”(典型的非对称加密在 PKCS#1 v1.5 模式下使用 RSA,使用 2048 位 RSA 密钥)。输出是一些可能的输出消息空间的一部分。

计算机是计算机,输入和输出消息最终都以位序列编码,因此输入和输出消息空间可能会重叠,在这种情况下,您可以在概念上将输入消息(“明文”)解释为输出消息,并尝试解密它。这不一定是可能的:例如,使用 RSA 非对称加密 (PKCS#1 v1.5) 和 2048 位密钥,输入消息(明文)是 0 到 245 字节(含)的任意序列,而输出消息(密文)是正好 256 个字节的序列,因此在这种情况下,尝试“解密明文”是不可能的:可能的明文不够长,无法提供给解密引擎。

当您可以“解密明文”时,会发生什么取决于加密系统。通常,当解密完全起作用时,你得到的基本上是随机的胡说八道。在某些情况下,加密是一种对合(例如,流密码,如 RC4,通过与密钥相关的流对消息进行异或运算来工作),这意味着解密和加密实际上是相同的操作,因此通过“解密”明文你实际上是加密它。

然而,也可能发生并非所有正确长度的位序列都是有效的密文。例如,考虑CBC 模式中的分组密码。要加密消息m,您必须:

  1. 通过在 1 到n个字节(n是块大小)之间附加一些特定内容,将消息填充到块大小的长度倍数。

  2. 生成与块大小相同大小的新随机 IV。

  3. 使用该 IV 对填充的消息应用 CBC 加密。

  4. 输出是 IV 和加密结果的连接。

在这种情况下,解密时,不仅长度必须是块大小的非零倍数,而且在解密之后,必须找到有效的填充。如果使用通常的“PKCS#7 填充”(当添加k字节时,所有添加的字节的值都恰好为k),则具有兼容长度的明文实际上解密为具有有效填充的内容的概率约为 1/255。在这种情况下,“解密明文”将在 99.61% 的时间内产生解密错误,在剩余的 0.39% 的情况下会产生一些看似随机的垃圾。

好的加密系统包括一个MAC,在这种情况下,尝试解密不是使用相同密钥加密结果的东西应该会导致以压倒性的概率及时报告解密错误。

总结:当你尝试做一些没有意义的事情时,你可以获得各种结果。

这取决于您使用的密码。例如,使用著名且非常安全的(讽刺ROT13算法,加密和解密是相同的操作。如果你解密一个明文,实际上,你只是加密了它。

使用像 AES 这样的更现代的密码,您可能会得到一个很大的无意义数字。我认为大多数密码都是一样的。

解密只是使用密钥将算法应用于数据集。从广义上讲,这与加密相同,尽管加密和解密的算法可能不同。事实上,对于一些加密算法来说,加密和解密是同一个算法。

因此,从广义上讲,如果您将“解密”算法应用于明文,您将获得使用解密算法加密的密文。

当然,这可能并不总是有效,具体取决于加密方案。尝试此操作时可能会返回错误。例如,我不相信这将适用于 RSA 算法。

对这个密文应用“加密”是否会让你恢复明文取决于加密方案。

请不要解密纯文本。会发生非常糟糕的事情。您可能会导致服务器故障堆栈溢出或激怒超级用户有可能什么都不会发生,也有可能没有什么不好的事情发生。这取决于您尝试解密的文本。

例如,《战争与和平》可能会突然使您的 PC 变成机器人僵尸希特勒的转世,因为它实际上是经过 1000 次加密的《我的奋斗》同时,由于互联网完全相信他,解密圣经可能会带来一个真正的猛禽耶稣。

更有可能的情况是,您会在计算机中导致某种物理崩溃,可能会释放出虚假的粒子或波,例如中子波贡或白痴。我们不需要一波又一波的虚假白痴!

绝对最坏的情况:您的计算机除以零,您的房子最终看起来像这样:

在此处输入图像描述

如果你看不出来,从表面上回答这个问题有点幽默,前面的内容不必当真。就像其他人所说的那样,有很多变量在起作用,即加密/解密的类型以及使用的具体方法和算法。如果您将纯文本放入解密函数中,说真的,您可能会得到某种乱码。

但是,可以创建一种算法或函数来隐藏纯文本中的消息,该消息可以被解密为另一个纯文本消息。但是,这只是另一种加密形式,更有可能加密单词而不是字符。在这种情况下,单词像英语单词而不是计算机科学单词。