一种数据处理方法、装置及计算机可读存储介质

文档序号:8311 发布日期:2021-09-17 浏览:55次 英文

一种数据处理方法、装置及计算机可读存储介质

技术领域

本发明涉及读卡器通信

技术领域

,尤其涉及一种数据处理方法、装置及计算机可读存储介质。

背景技术

现有技术中,门禁系统中的读卡器需要与主机进行通信,但现有的读卡器生产厂家采用的通信协议是不同的,而且现有的通信协议是公开的,以及读卡器与主机通信过程中的传输数据都是明文传输的,从而数据会很容易被监控窃取,因此,如何保证读卡器与主机通信过程中所传输的数据的安全性成为亟待解决的问题。

发明内容

为了解决现有技术中存在的问题,本申请实施例提供了一种数据处理方法、装置及计算机可读存储介质,能够有效防范通信数据被监听窃取和篡改,从而保证了传输数据的安全性。

一方面,本申请实施例提供的一种数据处理方法包括:

步骤101、读卡器等待接收主机发送的数据包,当接收到主机发送的符合第一数据结构式的数据包时,执行步骤102;

步骤102、所述读卡器解析接收到的数据包,判断数据包中的第一预设字段与所述读卡器的地址是否相同,是则执行步骤103,否则返回步骤101;

步骤103、所述读卡器根据数据包中的第二预设字段确定数据包校验方式,根据所述数据包校验方式对数据包进行校验,若校验通过则执行步骤104,否则返回步骤101;

步骤104、所述读卡器根据所述第二预设字段确定数据包中是否包含安全数据,是则执行步骤105,否则执行步骤107;

步骤105、所述读卡器根据数据包中第五预设字段获取第一加密数据和第一加密数据校验值,获取存储的第一校验密钥、第一消息认证密钥、第二消息认证密钥和第一数据密钥,根据第一预设算法对所述第一校验密钥、所述第一消息认证密钥、所述第二消息认证密钥、所述第一加密数据和第一加密数据长度进行计算得到第二加密数据校验值,判断所述第二加密数据校验值和所述第一加密数据校验值是否相同,是则根据第二预设算法对所述第一校验密钥进行计算得到第三校验密钥,根据所述第三校验密钥、所述第一数据密钥和所述第一加密数据长度对所述第一加密数据进行计算得到明文数据,执行步骤106,否则返回步骤101;

步骤106、所述读卡器根据数据包中第四预设字段确定命令类型,根据所述命令类型和所述明文数据执行相应的操作,向主机返回符合第一数据结构式的响应数据包,返回步骤101;

步骤107、所述读卡器根据数据包中第四预设字段确定命令类型,根据所述命令类型执行相应的操作,向主机返回符合第一数据结构式的响应数据包,返回步骤101。

另一方面,本申请实施例提供的一种数据处理装置包括:

接收解析模块,用于接收主机发送的数据包,解析接收到的数据包;

判断模块,用于判断数据包中第一预设字段与所述读卡器的地址是否相同;

校验模块,用于根据数据包中第二预设字段确定数据包校验方式,根据所述数据包校验方式对数据包进行校验;

第一确定模块,用于根据所述第二预设字段确定数据包中是否包含安全数据;

处理模块,用于根据数据包中第五预设字段获取第一加密数据和第一加密数据校验值,获取存储的第一校验密钥、第一消息认证密钥、第二消息认证密钥和第一数据密钥,根据第一预设算法对所述第一校验密钥、所述第一消息认证密钥、所述第二消息认证密钥、所述第一加密数据和第一加密数据长度进行计算得到第二加密数据校验值,判断所述第二加密数据校验值和所述第一加密数据校验值是否相同,是则根据第二预设算法对所述第一校验密钥进行计算得到第三校验密钥,根据所述第三校验密钥、所述第一数据密钥和所述第一加密数据长度对所述第一加密数据进行计算得到明文数据;

第二确定模块,用于根据数据包中第四预设字段确定命令类型,根据所述命令类型和所述明文数据执行相应的操作,向主机返回符合第一数据结构式的响应数据包;

第三确定模块,用于根据数据包中第四预设字段确定命令类型,根据所述命令类型执行相应的操作,向主机返回符合第一数据结构式的响应数据包。

又一方面,本申请实施例提供一种电子设备,包括:存储器,用于存储非暂时性计算机可读指令;以及处理器,用于运行所述计算机可读指令,使得所述计算机可读指令被所述处理器执行时实现数据处理方法的操作。

本申请实施例还提供一种计算机可读存储介质,用于存储非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时,使得所述计算机执行数据处理方法的操作。

本申请实施例提供的技术方案的有益效果是:本申请中读卡器与主机之间通过传输符合预设数据结构式的数据进行通信传输,在通讯过程中可对数据通过数据密钥进行加密处理,同时根据校验密钥对加密数据进行验证,可有效防范通信数据被监听窃取和篡改,从而保证了传输数据的安全性。

附图说明

图1是本申请实施例1提供的一种数据处理方法流程图;

图2和图3是本申请实施例2提供的一种数据处理方法流程图;

图4是本申请实施例3提供的一种数据处理装置框图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

实施例1

本申请实施例提供了一种数据处理方法,该方法适用于包括读卡器、主机和卡片的门禁系统中,其中,与主机进行通信的读卡器可以有多个;

如图1所示,该方法包括:

步骤101、读卡器等待接收主机发送的数据包,当接收到主机发送的符合第一数据结构式的数据包时,执行步骤102;

在本实施例中,读卡器接收到的数据包符合第一数据结构格式;

具体地,第一数据结构格式中至少包括数据头、第一预设字段、数据长度字段、第二预设字段、第三预设字段、第四预设字段;

其中,第一预设字段表示读卡器物理地址;

数据长度字段表示数据包所包括的字节长度;

第二预设字段表示控制信息字段;

第三预设字段表示数据包校验值;

第四预设字段表示命令码;

可选地,上述第一数据结构格式中还可包括第五预设字段、第六预设字段;其中,第五预设字段表示密文数据块;第六预设字段表示明文数据块;

例如,以上字段的长度和数值具体为:

数据头为1个字节,其对应的值为0x53;

读卡器物理地址为1个字节,其对应值的范围包括0x00-0x7E;

数据长度字段为2个字节;

控制信息字段为1个字节,其中,控制信息字段包括三部分数据,其中,该字节的第一位和第二位是消息序列号,该消息序列号用于消息传递确认和错误校验;该字节的第三位是校验方式,校验方式包括校验和方式和CRC校验方式;该字节的第四位是安全设置项;

命令码具体用于轮询请求、获取读卡器设备信息请求、获取读卡器功能请求、本地状态报告请求、读卡器输入/输出状态报告请求、防拆状态报告请求、输出控制、控制读卡器LED、控制蜂鸣器、读卡器通信配置请求、建立安全通道请求、会话密钥协商请求、验证密钥请求、扫描并发送生物识别数据请求、扫描并比对生物识别数据请求、设置主机可接收最大字节、扩展数据写入请求;

步骤102、读卡器解析接收到的数据包,判断数据包中第一预设字段与读卡器的地址是否相同,是则执行步骤103,否则返回步骤101;

在本实施例中,读卡器解析接收到的数据包具体包括:读卡器将数据包中的数据从数据高位至数据低位按照字节划分,将第一字节作为标志数据,将第二字节作为数据头,将第三字节作为第一预设字段,将第四字节作为数据长度的高位,将第五字节作为数据长度的低位,将第六字节作为第二预设字段,将第七字节作为安全数据的长度,将第八字节作为安全数据的类型,根据第七字节确定第五预设字段所占字节,第五预设字段所占字节在第八字节之后,将第五预设字段的第一字节作为第九字节,将第五预设字段所占字节之后的一个字节作为第四预设字段,将第四预设字段所占字节之后的一个字节作为第六预设字段,将第六预设字段所占字节之后的两个字节作为第三预设字段。

步骤103、读卡器根据数据包中第二预设字段确定数据包校验方式,根据确定的数据包校验方式对数据包进行校验,若校验通过则执行步骤104,否则返回步骤101;

在本实施例中,可选地,根据数据包中第二预设字段确定数据包校验方式具体为:读卡器获取第二预设字段中的第一预设位,根据第一预设位判断数据包校验方式;

可选地,根据确定的数据包校验方式对数据包进行校验具体为:读卡器根据确定的数据包校验方式对数据包进行计算得到数据包校验值,判断计算得到数据包校验值与数据包中的第三预设字段是否相同,是则执行步骤104,否则向主机返回包括错误信息的响应数据,返回步骤101。

步骤104、读卡器根据第二预设字段确定数据包中是否包含安全数据,是则执行步骤105,否则执行步骤110;

在本实施例中,可选地,读卡器根据第二预设字段确定数据包中是否包含安全数据具体包括:读卡器获取第二预设字段中的第二预设位,根据第二预设位判断数据包中是否包含安全数据。

步骤105、读卡器根据数据包中第五预设字段获取第一加密数据和第一加密数据校验值,获取存储的第一校验密钥、第一消息认证密钥、第二消息认证密钥和第一数据密钥;

在本实施例中,第一加密数据和第一加密数据校验值是由主机生成的。

步骤106、读卡器根据第一预设算法对第一校验密钥、第一消息认证密钥、第二消息认证密钥、第一加密数据和第一加密数据长度进行计算得到第二加密数据校验值;

在本实施例中,第一预设算法具体为:AES加解密算法。

步骤107、读卡器判断第二加密数据校验值和第一加密数据校验值是否相同,是则执行步骤108,否则返回步骤101;

步骤108、读卡器根据第二预设算法对第一校验密钥进行计算得到第三校验密钥,根据第三校验密钥和第一数据密钥对第一加密数据和第一加密数据长度进行计算得到明文数据,执行步骤109;

在本实施例中,预设算法具体为:取反计算;

可选地,根据第三校验密钥、第一数据密钥和第一加密数据长度对第一加密数据和进行计算得到明文数据具体为:读卡器按照第一预设算法通过第三校验密钥、第一数据密钥和第一加密数据长度对第一加密数据进行解密得到明文数据;

在本实施例中,第一预设算法具体为:AES加解密算法。

步骤109、读卡器根据数据包中第四预设字段确定命令类型,根据命令类型和明文数据执行相应的操作,向主机返回符合第一数据结构式的响应数据包,返回步骤101;

可选地,命令类型具体为扩展写数据;

具体地,根据命令类型和明文数据执行相应的操作具体为:读卡器将明文数据写入卡片中。

在本实施例中,根据命令类型和明文数据执行相应的操作,向主机返回符合第一数据结构格式的响应数据包具体为:读卡器根据命令类型和明文数据执行相应的操作得到第一结果数据,将第二加密数据校验值作为第五校验密钥,根据第二预设算法对所述第五校验密钥进行计算得到第七校验密钥,根据第七校验密钥和第一数据密钥对第一结果数据和第一结果数据长度进行计算得到第二加密数据,根据第五校验密钥、第三消息认证密钥、第四消息认证密钥、第二加密数据和第二加密数据长度进行计算得到第三加密数据校验值,根据第三加密数据校验值、第二加密数据和操作命令对应的回复码组织得到符合第一数据结构式的响应数据包。

具体地,根据第三加密数据校验值、第二加密数据和操作命令对应的回复码组织得到符合第一数据结构式的响应数据包具体包括:读卡器获取标志数据和数据头,将读卡器地址作为第一预设字段,计算响应数据包长度得到长度值作为数据包长度字段,将控制字段作为第二预设字段,将第三加密数据校验值和第二加密数据作为第五预设字段,计算第五预设字段的数据长度作为安全数据长度字段,将操作命令对应的回复码作为第四预设字段,计算得到响应数据包的校验值,将校验值作为第三预设字段,按照预设方式根据标志数据、数据头、第一预设字段、数据包长度字段、第二预设字段、第三预设字段、第四预设字段、第五预设字段、安全数据长度字段组织得到符合第一数据结构式的数据包。

步骤110、读卡器根据数据包中第四预设字段确定命令类型,根据命令类型执行相应的操作,向主机返回符合第一数据结构式的响应数据包,返回步骤101。

在本实施例中,第四预设字段具体为命令码;

其中,命令类型包括:轮询请求,对应的命令码为0x60;获取读卡器设备信息请求,对应的命令码为0x61;获取读卡器功能请求,对应的命令码为0x62;本地状态报告请求,对应的命令码为0x64;读卡器输入状态报告请求,对应的命令码为0x65;读卡器输出状态报告请求,对应的命令码为0x66;读卡器防拆状态报告请求,对应的命令码为0x67;输出控制命令,对应的命令码为0x68;其中,输出控制命令中包括:数据块;数据块中具体包括输出对应的编号、控制方式对应的控制码和定时时间;控制读卡器LED命令,命令码对应的值为0x69;控制蜂鸣器命令,命令码对应的值为0x6A;读卡器通信配置命令,命令码对应的值为0x6E;建立安全通道命令,命令码对应的值为0X75;会话密钥协商命令,命令码对应的值为0x76;验证密钥命令,命令码对应的值为0x77;扫描并发送生物识别数据命令,命令码对应的值为0x73;扫描并比对生物识别数据命令,命令码对应的值为0x74;设置主机可接收最大字节命令,命令码对应的值为0x7B;扩展写数据命令,命令码对应的值为0xA1;

在本实施例中,根据命令类型执行相应的操作,向主机返回符合第一数据结构格式的数据包具体为:读卡器根据命令类型执行相应的操作得到第一结果数据,获取标志数据和数据头,将读卡器地址作为第一预设字段,计算数据包长度得到长度值作为数据包长度字段,将控制字段作为第二预设字段,将操作命令对应的回复码作为第四预设字段,将第一结果数据作为第六预设字段,计算得到数据包的校验值,将校验值作为第三预设字段,按照预设方式根据标志数据、数据头、第一预设字段、数据包长度字段、第二预设字段、第三预设字段、第四预设字段和第六预设字段组织得到符合第一数据结构式的数据包;

可选地,按照预设方式根据标志数据、数据头、第一预设字段、数据包长度字段、第二预设字段、第三预设字段、第四预设字段、第六预设字段组织得到符合第一数据结构式的数据包具体为:将标志数据作为第一字节,将数据头作为第二字节,将第一预设字段作为第三字节,将数据长度的高位作为第四字节,将数据长度的低位作为第五字节,将第二预设字段作为第六字节,将第四预设字段作为第十字节,将第六预设字段作为第十一字节,将第七字节至第九字节、第十二字节至第十六字节置位0,将第一字节至第十六字节顺序拼接得到符合第一数据结构式的数据包。向主机返回符合第一数据结构格式的数据包;

具体地,第一数据结构格式中至少包括数据头、第一预设字段、数据长度字段、第二预设字段、第三预设字段、第四预设字段;

其中,第四预设字段具体为响应码;

响应码具体用于轮询请求响应、读卡器设备信息响应、读卡器功能响应、本地状态报告响应、读卡器输出/输入状态报告响应、防拆状态报告响应、输出控制响应、控制读卡器LED响应、控制蜂鸣器响应、读卡器通信配置响应、建立安全通道响应、会话密钥协商响应、验证密钥响应、扫描并发送生物识别数据响应、扫描并比对生物识别数据响应、设置主机可接收最大字节响应;

其中,响应类型包括:轮询请求响应,对应的响应码为:0x40;读卡器设备标识响应,对应的响应码为:0x45;读卡器功能响应,对应的响应码为:0x46;本地状态报告响应,对应的响应码为:0x48;输出/输入状态报告响应,对应的响应码为:0x49/0x4A;读卡器通信配置响应,对应的响应码为:0x54;建立安全通道响应,对应的响应码为:0x40;会话密钥协商响应,对应的响应码为:0x76;验证密钥响应对应,对应的响应码为:0x78;

可选地,在本实施例中,步骤110中,命令类型具体为建立安全通道命令;

优选的,根据命令类型执行相应的操作具体包括:读卡器根据数据包中第五预设字段获取基础密钥,保存基础密钥。

可选地,在本实施例中,步骤110中,命令类型具体为会话密钥协商命令;

优选的,根据命令类型执行相应的操作具体包括:读卡器根据第五预设字段获取第一随机数,生成第二随机数,根据第一随机数、第二随机数和基础密钥生成第一数据密钥、第一消息认证密钥、第二消息认证密钥,根据第一随机数、第二随机数和第一数据密钥生成第一主机密钥和第一读卡器密钥,获取读卡器标识,将读卡器标识、第二随机数、第一读卡器密钥和会话密钥协商命令对应的回复码组织得到符合第一数据结构的响应数据包。

可选地,在本实施例中,步骤110中,命令类型具体为验证密钥命令;

优选的,根据命令类型执行相应的操作具体包括:读卡器根据第五预设字段获取第二主机密钥,判断第二主机密钥与自身生成的第一主机密钥是否相同,是则根据第一消息认证密钥、第二消息认证密钥和第一主机密钥生成第一校验密钥,将第一校验密钥和验证密钥命令对应的回复码组织得到符合第一数据结构的响应数据包。

具体地,在本实施例中,读卡器与主机生成数据密钥后,读卡器和主机分别各自都存储有相同的校验密钥,下文中将读卡器中的校验密钥作为第一校验密钥,将主机中的校验密钥作为第二校验密钥;在之后的通信过程中,主机和读卡器会根据自身存储的校验密钥得到当前校验密钥,根据生成的数据密钥对数据进行加解密处理,并通过校验密钥对加密处理后的数据做摘要得到校验值以使接收方对数据进行验证。

实施例2

本申请实施例提供了一种数据处理方法,该方法适用于包括读卡器、主机和卡片的门禁系统中,其中,与主机进行通信的读卡器可以有多个;

如图2、图3所示,该方法包括:

步骤201、读卡器等待接收主机发送的数据包,当接收到主机发送的符合第一数据结构式的数据包时,执行步骤202;

步骤202、读卡器解析接收到的数据包,判断数据包中第一预设字段与读卡器的地址是否相同,是则执行步骤203,否则返回步骤201;

在本实施例中,读卡器接收到的数据包符合第一数据结构格式;

具体地,第一数据结构格式中至少包括数据头、第一预设字段、数据长度字段、第二预设字段、第三预设字段、第四预设字段;

其中,第一预设字段对应的值表示读卡器物理地址;

数据长度字段对应的值表示数据包所包括的字节长度;

第二预设字段对应的值表示控制信息字段;

第三预设字段对应的值表示数据包校验值;

第四预设字段对应的值表示命令码;

可选地,第一数据结构格式中还可包括第五预设字段、第六预设字段;其中,第五预设字段对应的值表示安全数据块;第六预设字段对应的值表示明文数据块;

例如,以上字段的长度和数值具体为:数据头为1个字节,其对应的值为0x53;

读卡器物理地址为1个字节,其对应值的范围包括0x00-0x7E;

数据长度字段为2个字节;

控制信息字段为1个字节,其中,控制信息字段包括三部分数据,其中,该字节的第一位和第二位是消息序列号,该消息序列号用于消息传递确认和错误校验;该字节的第三位是校验方式,校验方式包括校验和方式和CRC校验方式;该字节的第四位是安全数据设置项;

在本实施例中,命令类型包括:

第一命令为轮询请求;对应的命令码为0x60;

第二命令为获取读卡器设备信息请求;对应的命令码为0x61;

第三命令为获取读卡器功能请求;对应的命令码为0x62;

第四命令为本地状态报告请求;对应的命令码为0x64;

第五命令为读卡器输入状态报告请求;对应的命令码为0x65;

第六命令为读卡器输出状态报告请求;对应的命令码为0x66;

第七命令为读卡器状态报告请求;对应的命令码为0x67;

第八命令为输出控制命令;对应的命令码为0x68;其中,输出控制命令中包括:数据块;数据块中具体包括输出对应的编号、控制方式对应的控制码和定时时间;

第九命令为控制读卡器LED命令;命令码对应的值为0x69;

第十命令为控制蜂鸣器命令;命令码对应的值为0x6A;

第十一命令为读卡器通信配置命令;命令码对应的值为0x6E;

第十二命令为建立安全通道命令;命令码对应的值为0X75;

第十三命令为会话密钥协商命令,命令码对应的值为0x76;

第十四命令为验证密钥命令;命令码对应的值为0x77;

第十五命令为扫描并发送生物识别数据命令;命令码对应的值为0x73;

第十六命令为扫描并比对生物识别数据命令;命令码对应的值为0x74;

第十七命令为设置主机可接收最大字节命令;命令码对应的值为0x7B;

命令码具体用于轮询请求、获取读卡器设备信息请求、获取读卡器功能请求、本地状态报告请求、读卡器输入/输出状态报告请求、防拆状态报告请求、输出控制、控制读卡器LED、控制蜂鸣器、读卡器通信配置请求、建立安全通道请求、会话密钥协商请求、验证密钥请求、扫描并发送生物识别数据请求、扫描并比对生物识别数据请求、设置主机可接收最大字节。

步骤203、读卡器根据数据包中第二预设字段确定数据包校验方式,根据确定的数据包校验方式对数据包进行校验,若校验通过则执行步骤204,否则返回步骤201;

在本实施例中,可选地,根据数据包中第二预设字段确定数据包校验方式具体为:读卡器获取第二预设字段中的第一预设位,根据第一预设位判断数据包校验方式;

可选地,根据确定的数据包校验方式对数据包进行校验具体为:读卡器根据确定的数据包校验方式对数据包进行计算得到数据包校验值,获取数据包中第三预设字段,判断计算得到数据包校验值与获取的第三预设字段是否相同,是则执行步骤204,否则向主机返回包括错误信息的响应数据,返回步骤201;

例如,第二预设字段中的第一预设位为1表示数据包校验方式为校验和方式,第二预设字段中的第一预设位为0表示数据包校验方式为CRC校验方式。

步骤204、读卡器根据第二预设字段确定数据包中是否包含安全数据,若否则执行步骤205,若是则执行步骤206;

在本实施例中,步骤204具体为:读卡器获取第二预设字段中的预设位,根据预设位对应的值判断数据包中是否包含安全数据;

例如,第二预设字段中的预设位对应的值为1表示包含安全数据,第二预设字段中的预设位对应的值为0表示包含安全数据;

步骤205、读卡器根据数据包中第四预设字段确定命令类型,根据命令类型执行相应的操作,向主机返回符合第一数据结构式的响应数据包,返回步骤201;

在本实施例中,执行步骤205之前还包括:读卡器判断数据包中是否含有第六预设字段,若是则获取第六预设字段中的数据,根据数据包中第四预设字段确定命令类型,根据命令类型和第六预设字段中的数据执行相应的操作,向主机返回符合第一数据结构式的响应数据包,返回步骤201,否则执行步骤205;

在本实施例中,可选的,当命令类型具体为建立安全通道命令时,根据命令类型执行相应的操作具体为:获取并保存第六预设字段中的数据;具体地,第六预设字段中的数据为基础密钥。

例如,建立安全通道命令对应的命令码为:0x75;

基础密钥为:0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a0x3b 0x3c 0x3d 0x3e 0x3f;

具体的,基础密钥具体是主机生成的;进一步的,主机根据基础密钥、命令码组织得到符合第一数据结构式的响应数据包发送给读卡器。

在本实施例中,可选的,当命令类型具体为会话密钥协商命令时,根据命令类型执行相应的操作具体为:获取第六预设字段中的第一随机数,生成第二随机数,根据第一随机数、第二随机数和基础密钥生成第一数据密钥、第一消息认证密钥、第二消息认证密钥,根据第一随机数、第二随机数和第一数据密钥生成第一主机密钥和第一读卡器密钥,获取读卡器标识,将读卡器标识、第二随机数、第一读卡器密钥和会话密钥协商命令对应的回复码组织得到符合第一数据结构的响应数据包。

例如,会话密钥协商命令对应的命令码为:0x76;

会话密钥协商命令对应的回复码为:0x76;

例如,第一随机数为:0x40 0xC0 0x9F 0x61 0xCC 0x6E 0x09 0x0A;

第二随机数为:0x1B 0x22 0x48 0xD3 0xD0 0x3C 0xB6 0x04;

根据第一随机数、第二随机数和基础密钥生成的一组密钥包括:

第一数据密钥为:0x23 0x0F 0xA4 0x1F 0xCD 0x49 0x1D 0xB4 0xD2 0xEF 0x860x1A 0x9A 0x84 0xC5 0x81;

第一消息认证密钥:0xE4 0x07 0xA0 0x89 0x35 0x96 0x7B 0xD3 0x33 0xD10x6E 0x98 0xA1 0xA4 0xF5 0x61;

第二消息认证密钥:0xB7 0xAD 0x75 0xBB 0xF4 0x13 0xF5 0x5D 0x15 0x590x40 0x60 0xFF 0x94 0x86 0x5B;

第一主机密钥:0x38 0xDA 0x67 0xF1 0xD5 0x5A 0x14 0x06 0xD3 0xC5 0xB80x84 0x53 0x05 0x9B 0xCC;

第一读卡器密钥:0x64 0xBC 0xE0 0x2E 0xAB 0xF1 0x89 0xB5 0x8A 0x0D 0x860x8C 0x90 0x67 0x52 0xDF;

具体的,第一随机数具体是主机生成的;进一步的,主机根据第一随机数、命令码组织得到符合第一数据结构式的响应数据包发送给读卡器;

更进一步的,主机接收到读卡器发送的会话密钥协商命令对应的响应数据包之后还包括:主机根据第一随机数、第二随机数和基础密钥生成第二数据密钥、第三消息认证密钥、第四消息认证密钥,根据第一随机数、第二随机数和第二数据密钥生成第二主机密钥和第二读卡器密钥,根据第二主机密钥和验证密钥命令对应的命令码组织得到符合第一数据结构的响应数据包,并发送给读卡器。

例如,第二数据密钥为:0x23 0x0F 0xA4 0x1F 0xCD 0x49 0x1D 0xB4 0xD2 0xEF0x86 0x1A 0x9A 0x84 0xC5 0x81;

第三消息认证密钥:0xE4 0x07 0xA0 0x89 0x35 0x96 0x7B 0xD3 0x33 0xD10x6E 0x98 0xA1 0xA4 0xF5 0x61;

第四消息认证密钥:0xB7 0xAD 0x75 0xBB 0xF4 0x13 0xF5 0x5D 0x15 0x590x40 0x60 0xFF 0x94 0x86 0x5B;

第二主机密钥:0x38 0xDA 0x67 0xF1 0xD5 0x5A 0x14 0x06 0xD3 0xC5 0xB80x84 0x53 0x05 0x9B 0xCC;

第二读卡器密钥:0x64 0xBC 0xE0 0x2E 0xAB 0xF1 0x89 0xB5 0x8A 0x0D 0x860x8C 0x90 0x67 0x52 0xDF;

在本实施例中,可选的,当命令类型具体为验证密钥命令时,根据命令类型执行相应的操作具体为:获取第六预设字段中的第二主机密钥,判断第二主机密钥与自身生成的第一主机密钥是否相同,是则根据第一消息认证密钥、第二消息认证密钥和第一主机密钥生成第一校验密钥,将第一校验密钥和验证密钥命令对应的回复码组织得到符合第一数据结构的响应数据包。

例如,验证密钥命令对应的命令码为:0x77;

根据第一消息认证密钥、第二消息认证密钥和第一主机密钥生成第一校验密钥为:0x39 0x97 0x2F 0x9F 0x3F 0x56 0x28 0x36 0x91 0x71 0x5F 0x27 0x48 0xAC 0x710x60;

验证密钥命令对应的回复码为:0x78;

具体的,第二主机密钥具体是主机生成的;进一步的,主机接收到读卡器发送的验证密钥命令响应数据包后,还包括:主机获取数据包中的第一校验密钥,根据第三消息认证密钥、第四消息认证密钥和第二主机密钥生成第二校验密钥,判断第二校验密钥与第一校验密钥是否相同,是则保存第二校验密钥。

例如,根据第三消息认证密钥、第四消息认证密钥和第二主机密钥生成第二校验密钥为:0x39 0x97 0x2F 0x9F 0x3F 0x56 0x28 0x36 0x91 0x71 0x5F 0x27 0x48 0xAC0x71 0x60;

具体地,在本实施例中,读卡器与主机生成数据密钥后,读卡器和主机分别各自都存储有相同的校验密钥,下文中将读卡器中的校验密钥作为第一校验密钥,将主机中的校验密钥作为第二校验密钥;在之后的通信过程中,主机和读卡器会根据自身存储的校验密钥得到当前校验密钥,根据生成的数据密钥对数据进行加解密处理,并通过校验密钥对加密处理后的数据做摘要得到校验值以使接收方对数据进行验证。

在本实施例中,读卡器向主机返回的响应数据为符合第一数据结构式的数据包;

具体地,第一数据结构格式中至少包括数据头、第一预设字段、数据长度字段、第二预设字段、第三预设字段、第四预设字段其中,第四预设字段表示响应码;

其中,轮询请求响应对应的值为:0x40;

读卡器设备标识响应对应的值为:0x45;

读卡器功能响应对应的值为:0x46;

本地状态报告响应对应的值为:0x48;

输出/输入状态报告响应对应的值为:0x49/0x4A;

读卡器通信配置响应对应的值为:0x54;

建立安全通道响应对应的值为:0x40;

会话密钥协商响应对应的值为:0x76;

验证密钥响应对应的值为:0x78;

响应码具体用于轮询请求响应、读卡器设备信息响应、读卡器功能响应、本地状态报告响应、读卡器输出/输入状态报告响应、防拆状态报告响应、输出控制响应、控制读卡器LED响应、控制蜂鸣器响应、读卡器通信配置响应、建立安全通道响应、会话密钥协商响应、验证密钥响应、扫描并发送生物识别数据响应、扫描并比对生物识别数据响应、设置主机可接收最大字节响应。

步骤206、读卡器获取存储的第一校验密钥、第一消息认证密钥、第二消息认证密钥和第一数据密钥,获取数据包中第五预设字段中的第一加密数据和第一加密数据校验值;

在本实施例中,第一加密数据和第一加密数据校验值是由主机生产的;

具体的,主机获取存储的第二校验密钥、第三消息认证密钥、第四消息认证密钥、第二数据密钥,根据预设算法对第二校验密钥进行计算得到第四校验密钥,根据第四校验密钥和第二数据密钥对待加密数据和待加密数据长度进行计算得到第一加密数据,根据第二校验密钥、第三消息认证密钥、第四消息认证密钥、第一加密数据和第一加密数据长度进行计算得到第一加密数据校验值,根据第一加密数据校验值、第一加密数据和操作命令码组织得到符合第一数据结构式的数据包,并发送给读卡器;

例如,存储的第一校验密钥为:0x6A 0x92 0x87 0xB8;

第一消息认证密钥为:0xE4 0x07 0xA0 0x89 0x35 0x96 0x7B 0xD3 0x33 0xD10x6E 0x98 0xA1 0xA4 0xF5 0x61;

第二消息认证密钥为:0xB7 0xAD 0x75 0xBB 0xF4 0x13 0xF5 0x5D 0x15 0x590x40 0x60 0xFF 0x94 0x86 0x5B;

第一数据密钥为:0x23 0x0F 0xA4 0x1F 0xCD 0x49 0x1D 0xB4 0xD2 0xEF 0x860x1A 0x9A 0x84 0xC5 0x81;

第一加密数据为:0xAD 0x23 0x6F 0x28 0xB6 0xE9 0x7B 0x97 0x47 0x0F 0xA20xC1 0x9A 0x96 0xC1 0x3C 0x08 0x27 0x1D 0x88 0xEF 0x4E 0xD6 0x98 0xE4 0x8F0x4E 0x4C 0x6A 0x31 0x30 0x6B。

步骤207、读卡器根据第一预设算法对第一校验密钥、第一消息认证密钥、第二消息认证密钥、加密数据和加密数据长度进行计算得到第二加密数据校验值;

例如,加密数据长度为:32字节;

计算得到第二加密数据校验值为:0x6A 0x92 0x87 0xB8。

步骤208、读卡器判断第二加密数据校验值和所述第一加密数据校验值是否相同,是则执行步骤209,否则返回步骤201;

步骤209、读卡器根据第二预设算法对第一校验密钥进行计算得到第三校验密钥,根据第三校验密钥、第一数据密钥和第一加密数据长度对第一加密数据进行计算得到明文数据,执行步骤210;

例如,计算得到的明文数据为:0x01 0x10 0xEA 0x5B 0x59 0x87 0x85 0x000xDB 0x73 0xAD 0x60 0xF9 0x9A 0xD5 0xB9 0x94 0x95 0x80 0x00 0x000x000x000x000x000x000x000x000x000x000x000x00。

步骤210、读卡器根据数据包中第四预设字段确定命令类型,根据命令类型和明文数据执行相应的操作得到第一结果数据,执行步骤211;

步骤211、读卡器将第二加密数据校验值作为第五校验密钥,根据第二预设算法对第五校验密钥进行计算得到第七校验密钥;

在本实施例中,第二预设算法具体为:取反计算;

例如,第五校验密钥为:0x6A 0x92 0x87 0xB8;

第七校验密钥为:0x3C 0xBA 0x41 0xE0。

步骤212、读卡器根据第七校验密钥和第一数据密钥对第一结果数据和第一结果数据长度进行计算得到第二加密数据;

步骤213、读卡器根据第五校验密钥、第三消息认证密钥、第四消息认证密钥、第二加密数据和第二加密数据长度进行计算得到第三加密数据校验值;

步骤214、读卡器根据第三加密数据校验值、第二加密数据和操作命令对应的回复码组织得到符合第一数据结构式的数据包,将数据包发送给主机,返回步骤201。

在本实施例中,组织得到符合第一数据结构式的数据包具体包括:读卡器获取标志数据和数据头,将读卡器地址作为第一预设字段,计算数据包长度得到长度值作为数据包长度字段,将控制字段作为第二预设字段,将第三加密数据校验值和第二加密数据作为第五预设字段,计算第五预设字段的数据长度作为安全数据长度字段,将操作命令对应的回复码作为第四预设字段,计算得到数据包的校验值,将校验值作为第三预设字段,按照预设方式根据标志数据、数据头、第一预设字段、数据包长度字段、第二预设字段、第三预设字段、第四预设字段、第五预设字段、安全数据长度字段组织得到符合第一数据结构式的数据包;

可选地,按照预设方式根据标志数据、数据头、第一预设字段、数据包长度字段、第二预设字段、第三预设字段、第四预设字段、第五预设字段、安全数据长度字段组织得到符合第一数据结构式的数据包具体为:将标志数据作为第一字节,将数据头作为第二字节,将第一预设字段作为第三字节,将数据长度的高位作为第四字节,将数据长度的低位作为第五字节,将第二预设字段作为第六字节,将安全数据的长度作为第七字节,将安全数据的类型作为第八字节,将第五预设字段作为第九字节,将第四预设字段作为第十字节,将第十一字节至第十六字节置位0,将第一字节至第十六字节顺序拼接得到符合第一数据结构式的数据包。

在本实施例中,具体的,主机接收到读卡器发送的数据包之后,还包括:主机获取数据包中的第二加密数据和第三加密数据校验值,将存储的第一加密数据校验值作为第六校验密钥,获取第三消息认证密钥、第四消息认证密钥和第二数据密钥,根据第一预设算法对第六校验密钥、第三消息认证密钥、第四消息认证密钥、第二加密数据和第二加密数据长度得到第四加密数据校验值,判断第四加密数据校验值和第三加密数据校验值是否相同,是则根据预设算法对第六校验密钥进行计算得到第八校验密钥,根据第八校验密钥、第二数据密钥和第二加密数据长度对第二加密数据进行计算得到明文数据。

本申请中读卡器与主机之间通过传输符合预设数据结构式的数据进行通信传输,在通讯过程中可对数据通过数据密钥进行加解密处理,同时根据校验密钥对加解密数据进行验证,可有效防范通信数据被监听窃取和篡改,从而保证了传输数据的安全性。

实施例3

基于上述本申请所提供的一种数据处理方法的技术方案,本申请对应提供了一种数据处理装置的结构示意图,如图4所示,本申请的一种数据处理装置300可以包括:

接收解析模块301,用于接收主机发送的数据包,解析接收到的数据包;

判断模块302,用于判断数据包中第一预设字段与读卡器的地址是否相同;

校验模块303,用于根据数据包中第二预设字段确定数据包校验方式,根据数据包校验方式对数据包进行校验;

第一确定模块304,用于根据第二预设字段确定数据包中是否包含安全数据;

处理模块305,用于根据数据包中第五预设字段获取第一加密数据和第一加密数据校验值,获取存储的第一校验密钥、第一消息认证密钥、第二消息认证密钥和第一数据密钥,根据第一预设算法对第一校验密钥、第一消息认证密钥、第二消息认证密钥、第一加密数据和第一加密数据长度进行计算得到第二加密数据校验值,判断第二加密数据校验值和第一加密数据校验值是否相同,是则根据第二预设算法对第一校验密钥进行计算得到第三校验密钥,根据第三校验密钥、第一数据密钥和第一加密数据长度对第一加密数据进行计算得到明文数据;

第二确定模块306,用于根据数据包中第四预设字段确定命令类型,根据命令类型和明文数据执行相应的操作得到第一结果数据,向主机返回符合第一数据结构式的响应数据包;

第三确定模块307,用于根据数据包中第四预设字段确定命令类型,根据命令类型执行相应的操作,向主机返回符合第一数据结构式的响应数据包。

本申请实施例提供了一种电子设备,包括:存储器,用于存储非暂时性计算机可读指令;以及处理器,用于运行所述计算机可读指令,使得所述计算机可读指令被所述处理器执行时实现数据处理方法的操作。

本申请提供了一种计算机可读存储介质,用于存储非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时,使得所述计算机执行数据处理方法的操作。

本申请提供的计算机可读存储介质,适用于上述的数据处理方法的任一实施例,在此不再赘述。

以上对本申请所提供的一种数据处理方法、装置及可读存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上,本申请说明书内容不应理解为对本发明的限制。

完整详细技术资料下载
上一篇:石墨接头机器人自动装卡簧、装栓机
下一篇:数据处理方法和装置、电子设备以及计算机可读存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!