MSG流ID计算

问题描述:

我正在尝试计算MSG文件的命名属性部分的流名称,特别是字符串命名的属性。该ID被作为产生的MSG file format specificationsays如下:MSG流ID计算

Stream ID = 0x100m ((ID XOR (GUID index << 1 | 1)) MOD 0x1f

当ID值是 “的Unicode名称标识符” 的CRC-32。我也确信0x100m实际上是0x1000

这在某种程度上映射'x-mailer'0x100f当GUID指数为3。ID值是0x894e50ff(因为它是存储在另一个位置),但如何'x-mailer'地转化为价值?

(这些属性存储在"__nameid_version1.0"下,部分在"__substg1.0_00040102"流内)。

下面是从微软工程师的answer

卢克嗨,

对不起了这么久才回到 你这一点。我验证了CRC-32 的计算结果,并确实为0xff504e89值 产生了字符串 'x-mailer'。你需要 考虑两件事情:

  1. 确保您的“X-邮件”作为一个Unicode字符串计算CRC。 ASCII会给你一个不同的 结果。
  2. 确保您使用MS-OXRTFCP指定的算法 部分3.1.3.2和3.1.4使用预先计算的查找表 包括 和相应的算法 伪代码。

如果你按照这些,你会得到 正确的结果。

让我知道你是否能够得到 这个工作。

的问候,汤姆JEBO高级支持 升级工程师微软DS 协议团队