本发明涉及一种蓝牙扫码枪的安全结算方法以及系统。
背景技术:
如图2所示,现有扫码枪技术流程:
(1)扫码枪带有扫描功能和按键功能。
扫描功能用于扫描商品条形码,微信/支付宝/云闪付支付二维码。
按键功能有数字按键用于密码输入、功能按键用于开机、音量大小等。
(2)一旦有数字按键输入或扫描输入,将这些信息传递给扫码枪的输出驱动。
(3)输出驱动通过bthidslave(客户端),将数据通过蓝牙传递给收银机的bthidhost(主机)。
(4)bthidhost将蓝牙数据转换为输入input事件及数据。然后传递给输入驱动。
(5)输入驱动根据数据类型,密码、支付二维码传递给支付结算模块,商品条形码信息传递给文本输出显示商品信息。
(6)完成支付和结算。
其中,hid:humaninterfacedevice定义了蓝牙在人机接口设备中的协议;
bthidslave的角色是:当做为蓝牙输入设备,类似如蓝牙键盘,蓝牙鼠标。
bthidhost的角色是:当做为蓝牙输出设备。类似电脑或手机。
缺点1:
因为采用蓝牙hid协议,数据是透明的,不能加密,因一旦加密完就无法当做标准的输入输出事件。导致蓝牙传输数据空中传输会被窃取。通过协议解析能清楚的知道用户支付二维码信息,用户密码信息等等。
缺点2:
hid协议只能一对一,那么一个收银机只能接一个扫码枪,如果这时还要接蓝牙鼠标或蓝牙键盘则不行。
技术实现要素:
本发明要解决的技术问题,在于提供一种蓝牙扫码枪的安全结算方法以及系统,传输数据格式可自定义和加密,保证了传输过程的信息安全。
本发明之一是这样实现的:一种蓝牙扫码枪的安全结算方法,包括:
步骤1、扫码枪获取输入数据,并通过密钥进行加密形成密文;
步骤2、密文以及密钥通过蓝牙rfcomm协议传递给收银机;
步骤3、收银机收到数据后,通过密钥对密文进行解密,进行结算。
进一步地,所述步骤1进一步具体为:
扫码枪随机生成8位数的秘钥,des和base64算法秘钥一样;
输入数据经过des加密变成des密文;
然后des密文经过base64加密变成base64密文;
进一步地,所述步骤3进一步具体为:收银机收到数据后,通过密钥对密文进行解密,完成支付和结算
收银机通过蓝牙rfcomm协议接收到数据;
解析数据格式,根据密文头部、尾部标志值,判断是否是密文,若不是密文则不需要解密,直接进行结算;
如果符合密文头部、尾部标志值,判断是密文格式,则提取秘钥,和base64密文;
使用秘钥对base64密文进行解析;使用秘钥对des密文进行解析,完成解密,进行结算。
进一步地,所述步骤2进一步具体为:按照设定数据格式对加密数据以及密钥进行封装,封装后通过蓝牙rfcomm协议传递给收银机。
进一步地,所述设定格式为:0x01+key+length+密文+0x02;其中,0x01为密文头部;key为秘钥;length为密文长度;0x02为密文尾部。
本发明之二是这样实现的:一种蓝牙扫码枪的安全结算系统,包括:
加密模块,扫码枪获取输入数据,并通过密钥进行加密形成密文;
传输模块,密文以及密钥通过蓝牙rfcomm协议传递给收银机;
结算模块,收银机收到数据后,通过密钥对密文进行解密,进行结算。
进一步地,所述加密模块进一步具体为:
扫码枪随机生成8位数的秘钥,des和base64算法秘钥一样;
输入数据经过des加密变成des密文;
然后des密文经过base64加密变成base64密文;
进一步地,所述结算模块进一步具体为:收银机通过蓝牙rfcomm协议接收到数据;
解析数据格式,根据密文头部、尾部标志值,判断是否是密文,若不是密文则不需要解密,直接进行结算;
如果符合密文头部、尾部标志值,判断是密文格式,则提取秘钥,和base64密文;
使用秘钥对base64密文进行解析;使用秘钥对des密文进行解析,完成解密,进行结算。
进一步地,所述传输模块进一步具体为:按照设定数据格式对加密数据以及密钥进行封装,封装后通过蓝牙rfcomm协议传递给收银机。
进一步地,所述设定格式为:0x01+key+length+密文+0x02;其中,0x01为密文头部;key为秘钥;length为密文长度;0x02为密文尾部。
本发明具有如下优点:
(1)、rfcomm协议类似串口,传输数据格式可自定义和加密,保证了传输过程的信息安全。
(2)、rfcomm协议比hid协议简单、成熟、稳定。
(3)、fcomm协议可支持在两个bt设备之间同时保持高达60路的通信连接。就是收银机可支持通过btrfcomm连接多台设备或多台扫码枪或其他rfcomm设备,原来的hid传输则只能一对一。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1为本发明方法执行流程图。
图2为现有技术方案的架构图。
图3为本发明具体实施方式的架构图。
图4为本发明具体实施方式的流程图。
具体实施方式
如图1所示,本发明蓝牙扫码枪的安全结算方法,包括:
步骤1、扫码枪随机生成8位数的秘钥,des和base64算法秘钥一样;输入数据经过des加密变成des密文;然后des密文经过base64加密变成base64密文;
步骤2、按照设定数据格式对加密数据以及密钥进行封装,封装后通过蓝牙rfcomm协议传递给收银机,所述设定格式为:0x01+key+length+密文+0x02;其中,0x01为密文头部;key为秘钥;length为密文长度;0x02为密文尾部;
步骤3、收银机通过蓝牙rfcomm协议接收到数据;解析数据格式,根据密文头部、尾部标志值,判断是否是密文,若不是密文则不需要解密,直接进行结算;如果符合密文头部、尾部标志值,判断是密文格式,则提取秘钥,和base64密文;使用秘钥对base64密文进行解析;使用秘钥对des密文进行解析,完成解密,进行结算。
本发明蓝牙扫码枪的安全结算系统,包括:
加密模块,扫码枪随机生成8位数的秘钥,des和base64算法秘钥一样;输入数据经过des加密变成des密文;然后des密文经过base64加密变成base64密文;
传输模块,按照设定数据格式对加密数据以及密钥进行封装,封装后通过蓝牙rfcomm协议传递给收银机,所述设定格式为:0x01+key+length+密文+0x02;其中,0x01为密文头部;key为秘钥;length为密文长度;0x02为密文尾部;
结算模块,收银机通过蓝牙rfcomm协议接收到数据;解析数据格式,根据密文头部、尾部标志值,判断是否是密文,若不是密文则不需要解密,直接进行结算;如果符合密文头部、尾部标志值,判断是密文格式,则提取秘钥,和base64密文;使用秘钥对base64密文进行解析;使用秘钥对des密文进行解析,完成解密,进行结算。
本发明一种具体实施方式:
如图3所示,本发明包括如下步骤:
(1)扫码枪带有扫描功能和按键功能。
扫描功能用于扫描商品条形码,微信/支付宝/云闪付支付二维码。
按键功能有数字按键用于密码输入、功能按键用于开机、音量大小等。
(2)一旦有数字按键输入或扫描输入,将这些信息传递给扫码枪的输出驱动。
(3)输出驱动这边将数据进行加密,将加密数据通过蓝牙rfcomm协议传递给收银机。
(4)收银机收到数据后,对数据进行解密,解密完转化为输入设备事件和数据。然后传递给输入驱动。
(5)输入驱动根据数据类型,密码、支付二维码传递给支付结算模块,商品条形码信息传递给文本输出显示商品信息。
(6)完成支付和结算。
其和现有方案的差别:
(1)无线传输不用蓝牙的hid,而是用蓝牙的rfcomm协议。rfcomm提供基于l2cap协议的串口仿真,因rfcomm只是类似串口用于传输数据,接收端接收到数据后要将数据转化为输入事件。android提供的input事件转换接口:inputmanager.injectinputevent()。
(2)因rfcomm就类似串口传输,传输数据格式我们自己可以客制定义和加密。
数据格式定制及加密
1、rfcomm的信息域原本就只是填充我们要传输的原始输入数据。
2、本方案信息域填充的新的数据格式:
0x01+key+length(4个字节的base64密文长度)+base64密文+0x02
0x01:密文头部
key:固定8位数字秘钥。
length:4字节的base64密文长度
0x02:密文尾部
3、如图4所示,加密解密流程:
扫码枪加密端:
(1)扫码枪驱动这边先动态随机生成8位数的秘钥,des和base64算法秘钥一样;
(2)输入数据经过des加密变成des密文;
(3)然后des密文经过base64加密变成base64密文;
(4)按照数据格式“0x01+key+length(4个字节的base64密文长度)+base64密文+0x02”进行数据封装;
(5)通过蓝牙rfcomm传递给收银机。
收银机解密端:
(1)蓝牙rfcomm接收到有蓝牙数据传入;
(2)解析数据格式,根据密文头部、尾部标志值,判断是否是密文,若不是密文则不需要解密,按照正常无加密的rfcomm数据,直接传递给相关应用;
(3)如果符合密文头部、尾部标志值,判断是密文格式,则提取密文秘钥,和base64密文;
(4)使用秘钥对base64密文进行解析
(5)使用秘钥对des密文进行解析,生成原始输入数据的明文。
(6)输入驱动根据输入数据的类型,密码、支付二维码传递给支付结算模块,商品条形码信息传递给文本输出显示商品信息。这样安全的最终完成结算。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。