在Thales Payshield 9000 HSM

时间:2020-04-04 07:35:58

标签: hsm

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

在通话中,我正在发送: 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>表示我收到的长度数组从160(包括)到248(包括)的错误,该长度是8(160、168、176,.... 248)的倍数。

<160-248>
<416-504>
<672-760>
<928-1000>

对于该范围内的其他所有其他大小(例如256-408的8的倍数,我使用计算出的MAC收到正确的响应

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

00d33f3f3f3f4d3630303133303030385544324241464236353835433642303735334334363645393434424338423837353030613031313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131

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

00cb3f3f3f3f4d363030313330303038554432424146423635383543364230373533433436364539343442433842383735303039383131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131

这种行为的原因是什么?

1 个答案:

答案 0 :(得分:0)

我终于解决了。问题出在消息长度标签中。当以4位十六进制表示的消息长度包含字母时,应以大写形式发送它们。 00A0代替00a0

相关问题