本发明涉及互联网通讯,具体涉及一种基于MQTT的消息在数字标牌中传输方法。
背景技术:
目前,很多数字标牌中的终端跟平台之间交互通讯,直接通过HTTP、WEBSERVICE、RESTFUL、WEBSOKET等技术进行通讯,而在通讯中这样就产生了安全隐患,如果有第三方拦截了通讯信息,直接就知道通讯的内容,终端就没有什么秘密可言,第三方就可以完全控制你的终端,来发布自己的广告,或者植入病毒代码,窃取用户信息或者篡改用户信息。可见,安全是非常重要,一旦出现安全问题,所有的努力工作等于零。
MQTT通讯协议是为大量计算能力有限,且工作在低宽带、不可靠的网络的远程传感器或者控制通讯设计的协议,它具有如下特性:
1)使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;
2)对负载内容屏蔽的消息传输;
3)使用TCP/IP提供网络连接;
4)有三种消息发布服务质量:
“至多一次”,消息发布完全依赖底层TCP/IP网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
“至少一次”,确保消息到达,但消息重复可能会发生。
“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
小型传输,开销很小(固定长度的头部是2字节),协议交换最小化,以降低网络流量;
根据MQTT的特性,选择MQTT协议来插播消息是一个非常理想的方法。
DES(Data Encryption Standard)是分组对称密码算法。DES采用了64位的分组长度和56位的密钥长度,它将64位的输入经过一系列变换得到64位的输出。解密则使用了相同的步骤和相同的密钥。DES的密钥长度为64位,由于第n*8(n=1,2,…8)是校验位,因此实际参与加密的长度为56位,密钥空间含有2^56个密钥。
DES算法利用多次组合替代算法和换位算法,分散和错乱的相互作用,把明文编制成密码强度很高的密文,它的加密和解密用的是同一算法。
DES算法,是一种乘积密码,其在算法结构上主要采用了置换、代替、模二相加等函数,通过轮函数迭代的方式来进行计算和工作。
DES算法也会使用到数据置换技术,主要有初始置换IP和逆初始置换IP^-1两种类型。DES算法使用置换运算的目的是将原始明文的所有格式及所有数据全部打乱重排。而在轮加密函数中,即将数据全部打乱重排,同时在数据格式方面,将原有的32位数据格式,扩展成为48位数据格式,目的是为了满足S盒组对数据长度和数据格式规范的要求。
一组数据信息经过一系列的非线性变换以后,很难从中推导出其计算的过程和使用的非线性组合;但是如果这组数据信息使用的是线性变换,计算就容易的多。在DES算法中,属于非线性变换的计算过程只有S盒,其余的数据计算和变换都是属于线性变换,所以DES算法安全的关键在于S盒的安全强度。此外,S盒和置换IP相互配合,形成了很强的抗差分攻击和抗线性攻击能力,其中抗差分攻击能力更强一些。
技术实现要素:
本发明针对上述问题,提供了一种基于MQTT的消息在数字标牌中传输方法。
本发明采用的技术方案是:一种基于MQTT的消息在数字标牌中传输方法,包括以下步骤:
S1,生成密钥apikey;
S2,根据密钥对将要发布的消息进行DES加密处理;
S3,加密后的消息通过HTTP或MQTT通讯协议进行消息传输;
S4,终端接收消息后,在收到的消息是HTTP协议的情况下,则通过从
HTTP请求头获取加解密的apikey,在收到的消息是MQTT协议的情况下,通过主题的终端ID或者用户ID得到加解密的apikey;
S5,通过通讯协议HTTP或MQTT收到消息后,根据加解密apikey对DES加密数据进行解密;
S6,根据解密出来的JSON串中的action值,判断进行哪个业务处理,并返回结果给终端。
进一步地,所述步骤S3中的加密后的消息通过MQTT通讯协议进行消息传输具体为:
S31,连接MQTT:
生成连接字符串:指定消息代理主机的IP地址和MQTT分配的端口号,端口号缺省值为1883;设置连接属性,包括客户机的标识、订阅类型、发送活动消息的间隔时间;
创建MQTT客户机对象;
S32,向代理订阅主题:订阅是由MQTT对象处理,包括两个数组参数,即订阅主题数组、服务质量数组;
S33,向数字标牌发布消息:直接使用MQTT提供的API函数publish,需要提供主题、消息、服务质量等参数;
S34,接收来自代理的消息:为使应用接收到订阅的消息,创建一个回调处理函数,并且在MQTT客户端注册;
用MqttSimpleCallback接口创建简单接口的对象,并实现connectionLost、deliveryComplete和messageArrived三个方法;
当与代理的连接意外终止时,就调用connectionLost方法;如果出现这种情况,则此方法试图重新连接到代理;如果connectionLost方法无法重新连接,则会抛出异常来通知客户机重新连接失败;
messageArrived方法通知系统订阅主题的消息已到达客户端;
deliveryComplete方法表示发送是否完成。
本发明的优点:
本发明在数字标牌应用通讯过程中采用MQTT协议和DES加密协议,在传输过程中即能在低宽带、不可靠的网络中进行传输,而且传输的过程中对传输的信息进行DES加密,接收消息后根据apikey进行解密,解密消息中的action字段值用来判断该消息是作什么处理,处理完后,返回处理结果,整个流程安全可靠、值得信赖的。
除了上面所描述的目的、特征和优点之外,本发明还有其它的目的、特征和优点。下面将参照图,对本发明作进一步详细的说明。
附图说明
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
图1是本发明的一种基于MQTT的消息在数字标牌中传输方法流程图;
图2是本发明的一种基于MQTT的消息在数字标牌中传输方法中的加
密后的消息通过MQTT通讯协议进行消息传输的具体流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参考图1,如图1所示的一种基于MQTT的消息在数字标牌中传输方法,包括以下步骤:
S1,生成密钥apikey;
S2,根据密钥对将要发布的消息进行DES加密处理;
S3,加密后的消息通过HTTP或MQTT通讯协议进行消息传输;
S4,终端接收消息后,在收到的消息是HTTP协议的情况下,则通过从
HTTP请求头获取加解密的apikey,在收到的消息是MQTT协议的情况下,通过主题的终端ID或者用户ID得到加解密的apikey;
S5,通过通讯协议HTTP或MQTT收到消息后,根据加解密apikey对DES加密数据进行解密;
S6,根据解密出来的JSON串中的action值,判断进行哪个业务处理,并返回结果给终端。
所述步骤S3中的加密后的消息通过MQTT通讯协议进行消息传输具体为:
S31,连接MQTT:
生成连接字符串:指定消息代理主机的IP地址和MQTT分配的端口号,端口号缺省值为1883;设置连接属性,包括客户机的标识、订阅类型、发送活动消息的间隔时间;
创建MQTT客户机对象;
S32,向代理订阅主题:订阅是由MQTT对象处理,包括两个数组参数,即订阅主题数组、服务质量数组;
S33,向数字标牌发布消息:直接使用MQTT提供的API函数publish,需要提供主题、消息、服务质量等参数;
S34,接收来自代理的消息:为使应用接收到订阅的消息,创建一个回调处理函数,并且在MQTT客户端注册;
用MqttSimpleCallback接口创建简单接口的对象,并实现connectionLost、deliveryComplete和messageArrived三个方法;
当与代理的连接意外终止时,就调用connectionLost方法;如果出现这种情况,则此方法试图重新连接到代理;如果connectionLost方法无法重新连接,则会抛出异常来通知客户机重新连接失败;
messageArrived方法通知系统订阅主题的消息已到达客户端;
deliveryComplete方法表示发送是否完成。
本发明在数字标牌应用通讯过程中采用MQTT协议和DES加密协议,在传输过程中即能在低宽带、不可靠的网络中进行传输,而且传输的过程中对传输的信息进行DES加密,接收消息后根据apikey进行解密,解密消息中的action字段值用来判断该消息是作什么处理,处理完后,返回处理结果,整个流程安全可靠、值得信赖的。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。