【问题标题】:Error calculating MAC on Thales Payshield 9000 HSM在 Thales Payshield 9000 HSM 上计算 MAC 时出错
【发布时间】:2020-04-05 02:59:13
【问题描述】:

HSM Payshield 9000 3.4C 固件中的 M6 命令有一个奇怪的问题。对于某些消息,我收到错误代码 15 - 即使消息长度是 8 个字节的乘积。

在通话期间,我发送: 1. 模式标志:0
2.输入格式标志:0
3. MAC 大小:1
4. MAC 算法:3
5. 填充方法:0(我也用 0、1、3 进行了测试,但为了简化,让我们专注于填充模式 0。为了测试,我准备了字节数组,其大小是 8 的乘积,因此不需要填充) .
6.密钥类型:008

我创建了一个简单的测试,在循环中我正在构建大小从 8 到 1000 的“1”字节数组和 mac 这样的数组。每个数组的长度是 8 的乘积 (8,16,24, ...)

对于某些数组长度,我收到错误代码 15 输入数据无效(格式无效、字符无效或提供的数据不足)。您可以在下面找到我收到此类错误的数组大小范围。 ( 表示我收到了长度从 160(包括)到 248(包括)的数组的错误,它们是 8 的倍数(160、168、176、....248)





对于该范围内的其他所有其他尺寸(例如,从 256-408 为 8 的倍数,我收到正确的响应并计算出 MAC

对于长度为 160 的字节数组(返回错误),我在此测试中发送的示例命令是(十六进制格式):

00d33f3f3f3f4d3630303133303030385544324241464236353835433642303735334334363645393434424338423837353030613031313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131

返回正确响应的示例命令(对于 152 大小的数组):

00cb3f3f3f3f4d363030313330303038554432424146423635383543364230373533433436364539343442433842383735303039383131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131

这种行为的原因是什么?

【问题讨论】:

    标签: hsm


    【解决方案1】:

    我终于解决了。问题出在消息长度标签中。当以 4 位 Hex 表示的消息长度包含字母时,应以大写形式发送,即。 00A0 而不是 00a0

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-14
      • 2019-01-01
      • 2020-03-04
      • 1970-01-01
      • 2022-08-24
      • 1970-01-01
      • 2018-06-27
      相关资源
      最近更新 更多