OpenPGP标签18/19描述混淆

问题描述:

有人可以为我清除一点MDC和数据加密吗?在RFC 4880,它说:OpenPGP标签18/19描述混淆

数据的明文是 加密通过SHA-1 散列函数过去了, 散列的结果被附加到明文在 修改检测代码包。 散列函数 的输入包括上述的前缀数据 ;它包括所有的 明文,然后还包括两个值为0xD3,0x14的 八位位组。这些 代表 修改检测代码包标签 和20个八比特组的长度字段的编码。

起初,这似乎是MDC(不其报头数据)就是:sha1([data]) -> hash_value

然后第二句到分号使它看起来像sha1(OpenPGP_CFB_extra_data + [data]) -> hash_value

东西分号后使它看起来像我应该做sha1([data] + "\xd3\x14") -> hash_value。 (这没有任何意义,但它似乎是写的东西)

这是怎么回事?

得到正确的MDC后,它做了什么?是不是自己的包,或做?:

tag18_header + encrypt(plaintext + "\xd3\x14" + 20 byte hash) 

阅读RFC 4880GnuPG源代码的部分(g10/cipher.c似乎是在那里,这是处理的地方)后(根据我的理解)这样的事情,我解释它是这样的:

  • 0xd3是MDC数据包标记。
  • 0x14是MDC包长度(20字节)。

的MDC散列计算是这样的:

MCD_hash = SHA-1(OpenPGP_CFB_extra_data + [plaintext] + "\xd3\x14") 

然后这个被附加到明文消息和加密的:

encrypt(OpenPGP_CFB_extra_data + [plaintext] + "\xd3\x14" + MDC_hash) 

在解密时,该散列是通过计算SHA-验证的一切,但在过去的20个字节,并将结果进行比较来的最后20个字节的1中,如RFC 4880中写入(page 50):

在解密期间,明文数据应与SHA-1,包括前缀数据以及所述分组标签长度字段所述改变检测码的数据包被散列。 MDC数据包的主体在解密时与SHA-1哈希的结果进行比较。

+0

非常感谢!我会尽快检查。 – calccrypto 2011-05-25 20:07:50