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'。你需要 考虑两件事情:
- 确保您的“X-邮件”作为一个Unicode字符串计算CRC。 ASCII会给你一个不同的 结果。
- 确保您使用MS-OXRTFCP指定的算法 部分3.1.3.2和3.1.4使用预先计算的查找表 包括 和相应的算法 伪代码。
如果你按照这些,你会得到 正确的结果。
让我知道你是否能够得到 这个工作。
的问候,汤姆JEBO高级支持 升级工程师微软DS 协议团队