Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Encryption 实现OSDP加密问题_Encryption - Fatal编程技术网

Encryption 实现OSDP加密问题

Encryption 实现OSDP加密问题,encryption,Encryption,我在Arduino上实现OSDP协议的加密部分时遇到问题。 我已经成功地完成了协商部分,通过解密数据并与明文进行比较,验证了RMAC-I响应。我一直关注的是数据包的加密。根据规范,我使用RMAC-I响应作为aes128 CBC的ICV,并使用S-MAC2密钥加密数据包。 我的投票数据包(十六进制)如下: 53 01 0e 00 0c 02 15 60 这会被填充 53 01 0e 00 0c 02 15 60 80 00 00 这将使用ICV进行异或,然后使用S-MAC2作为密钥进行加密。 结

我在Arduino上实现OSDP协议的加密部分时遇到问题。

我已经成功地完成了协商部分,通过解密数据并与明文进行比较,验证了RMAC-I响应。我一直关注的是数据包的加密。根据规范,我使用RMAC-I响应作为aes128 CBC的ICV,并使用S-MAC2密钥加密数据包。
我的投票数据包(十六进制)如下:
53 01 0e 00 0c 02 15 60
这会被填充
53 01 0e 00 0c 02 15 60 80 00 00
这将使用ICV进行异或,然后使用S-MAC2作为密钥进行加密。
结果的前4个字节存储在数据包中并发送
53 01 0e 00 0c 02 15 60 91 86 b9 3d 4a 29
不幸的是,读取器使用NAK 06拒绝轮询命令

我假设我的MAC值没有正确计算,因为我已经将我的数据包与HID DTK工具进行了比较(显然MAC和CRC值是唯一的区别)。有人能验证我的流程吗?

似乎我的流程是正确的,但由于实施(一个错误)而失败。

似乎我的流程是正确的,但由于实施(一个错误)而失败。

2.1.7是当前的SIA规范。IEC 60839-11-5应该很快就会发布。(IEC标准版本)


您描述的处理是针对MAC后缀,而不是有效负载加密。MAC2,因为它只有一个数据块长(否则您将使用MAC1和MAC2)。OSDP使用AES加密整个消息的一次性副本,然后使用最后一个密码块的一些字节作为传输的MAC。OSDP加密有效负载(如果有)。在现代AES实现中,您传入一个IV、一个密钥和一个缓冲区,这样人们就不会将其视为将IV与明文异或。

2.1.7是当前的SIA规范。IEC 60839-11-5不久将推出。(IEC标准版本)

您描述的处理是针对MAC后缀,而不是有效负载加密。MAC2,因为它只有一个数据块长(否则您将使用MAC1和MAC2)。OSDP使用AES加密整个消息的一次性副本,然后使用最后一个密码块的一些字节作为传输的MAC。OSDP加密有效负载(如果有)。在现代AES实现中,您传入一个IV、一个密钥和一个缓冲区,这样就不会将其视为使用明文对IV进行xoring