我是HSM的新手,我使用TCP连接与'safenet ProtectHost EFT‘HSM进行通信。因此,作为一个开始,我试图通过发送以下消息来调用'HSM_STATUS‘方法。
完整消息(带有标头) :
0000 0001 0000 0001 0001 1001 1011 1111 0000 0000 0000 0001 0000 0001
这条消息可以按如下方式分解(按反向顺序排列):
消息:
0000 0001是1字节长的命令:'01‘( HSM_STATUS方法的函数代码是'01')
安全网头:
0000 0000 0000 0001是消息的2字节长:'1‘(函数调用'0000 0001’的长度为'1')0001 1001 1011 1111是2字节长的序列号(请求消息中的任意值与响应消息一起返回,不被ProtectHost EFT解释)。0000 0001是1字节长版本号(二进制1,如手册中所示)。0000 0001是头字符的1字节长的ASCII开始(十六进制01)
但是HSM没有为此消息提供任何输出。
,谁能告诉我这是什么原因吗?我在形成这条消息时做错了什么吗?
发布于 2018-03-12 11:16:51
甚至我也面临着同样的问题,并解决了it.The的根本原因,这是因为HSM期望用户提供准确的输入长度。
也就是说,SOH值需要精确的长度为1字节,当输入为4字节时,length.So的以下输入将为您提供正确的输出:
String command = "01"// SOH + "01"// version + "00"// arbitary value
+ "00"// arbitary value + "00"// length + "01"// length + "01" ; // function call希望这会有所帮助:)
https://stackoverflow.com/questions/45830254
复制相似问题