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

基于Bouncy Castle的C# SCP-03会话密钥生成实现问题排查

问题排查与修复建议

1. 派生常量传入错误

SCP03对不同用途的派生定义了固定的常量值,常见取值:

  • 0x03:生成会话MAC密钥
  • 0x05:生成卡片密码
    如果生成卡片密码时传入的常量不是0x05,或生成会话密钥时传错常量,必然导致结果不匹配。

2. Context参数不符合规范

生成卡片密码时,Context字段通常要求是**主机挑战(8字节) + 卡片挑战(8字节)**的拼接数据;生成会话密钥时的Context也有对应格式要求。如果传入的msg参数内容、顺序或长度不符合SCP03定义,生成的结果会错误。

3. 密钥参数错误

确认传入的key是正确的密钥:

  • 生成会话密钥时,应使用Issuer Security Domain的母密钥(ENC/MAC/DEK)
  • 生成卡片密码时,应使用协商后的会话MAC密钥
    若传入错误的密钥,结果必然无法验证。

4. Bouncy Castle版本差异

不同版本的Bouncy Castle库在KDF/CMAC的实现细节上可能存在差异,建议使用与GlobalPlatformPro依赖版本逻辑一致的Bouncy Castle版本。

5. 隐性字节拼接错误

检查msg参数是否存在字节序错误(如小端/大端混淆),或是否遗漏了SCP03要求的字段(如长度前缀、特定标识字节)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 05:52:02