You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TR-31版本B密钥块明文密钥提取失败,寻求技术帮助

TR-31解密实现问题排查建议

关键数据整理

KBPK:          33333333333333334444444444444444
TR-31 Key block:   B0080P0TD00S00003A74E0769701C712CC87ECB93E9455CC2BF16C71B30F507E524F535F42B56027
TR-31 Header:      B0080P0TD00S0000
TR-31 Encrypted key:   3A74E0769701C712CC87ECB93E9455CC2BF16C71B30F507E
TR-31 MAC:     524F535F42B56027
Plain Key:     94892FF715E992BC4AC4E56116582AE6

核心错误点排查

  1. KBEK生成规则错误
    TR-31规范中,KBEK是通过KBPK对固定ASCII字符串TR-31 KBEK计算3DES CMAC得到的16字节密钥,而非基于Header或加密密钥数据。
  • 验证方式:用在线3DES CMAC工具,输入KBPK(十六进制)和字符串TR-31 KBEK(ASCII),确认生成的KBEK是否正确。错误的KBEK会直接导致解密失败。
  1. 解密IV使用错误
    当前使用TR-31 MAC作为CBC模式的IV不符合TR-31规范,正确做法是使用**全0字节数组(16字节0x00)**作为IV进行3DES CBC解密。

  2. 3DES模式与密钥格式验证
    确保使用**3DES EDE(加密-解密-加密)**模式,KBEK为双长度3DES密钥(16字节),注意处理密钥的奇偶校验位(部分库会自动处理,需确认实现是否兼容)。

  3. MAC验证前置步骤(可选但关键)
    解密前建议先验证MAC,确保密钥块未被篡改:

  • 用KBPK对固定ASCII字符串TR-31 KBMK计算CMAC得到KBMK;
  • 用KBMK对Header + Encrypted Key的十六进制数据计算CMAC,取最后8字节与提供的MAC对比,一致则数据有效。

验证步骤示例

  1. 生成KBEK:KBPK=33333333333333334444444444444444 → CMAC(TR-31 KBEK) → 得到正确KBEK;
  2. 3DES CBC解密:IV=全0,密钥=KBEK,密文=3A74E0769701C712CC87ECB93E9455CC2BF16C71B30F507E → 解密结果应匹配明文密钥94892FF715E992BC4AC4E56116582AE6。

若仍失败,检查代码中十六进制字符串与字节数组的转换逻辑(如字节序、奇偶校验位处理)。

内容的提问来源于stack exchange,提问作者etna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 04:14:57