具体实施方式
为了解决相关技术不适合数据量较大的加密传输以及不适合多方通讯的问题,本发明提供了一种消息中间件的数据加密传输方法和系统,其中,方法包括:发送装置使用随机生成的公共密钥加密所要发送的实体数据得到实体数据密文以及使用第一密钥加密公共密钥得到第一密文,并将实体数据密文和第一密文发送给数据交换服务器;数据交换服务器使用第一密钥对接收到的第一密文进行解密,得到公共密钥;数据交换服务器使用第二密钥对解密得到的公共密钥进行加密,并将加密得到的第二密文以及接收到的实体数据密文发送给接收装置;接收装置使用第二密钥解密接收到的第二密文得到公共密钥,并使用公共密钥解密实体数据密文得到实体数据。本发明的数据加密传输方法和系统对于实体数据的加密和解密的速度很快,适合特大数据量数据的加密传输,且数据交换服务器只对小数量的公共密钥进行解密和加密操作,避免了在数据交换服务器对大数据量的实体数据进行加密和解密操作而引起的性能问题。此外,为企业应用系统之间的数据交换提供了点对点、一点对多点、广播方式等多种加密传输方式,提高了数据在网络上传输的保密性和安全性。
下面将参考附图并结合实施例,来详细说明本发明。
图1示出了根据本发明实施例的消息中间件的数据加密传输方法的流程图,包括以下步骤:
步骤S101,发送装置使用随机生成的公共密钥加密所要发送的实体数据得到实体数据密文以及使用第一密钥加密公共密钥得到第一密文,并将实体数据密文和第一密文发送给数据交换服务器;
步骤S102,数据交换服务器使用第一密钥对接收到的第一密文进行解密,得到公共密钥;
步骤S103,数据交换服务器使用第二密钥对解密得到的公共密钥进行加密,并将加密得到的第二密文以及接收到的实体数据密文发送给接收装置;
步骤S104,接收装置使用第二密钥解密接收到的第二密文得到公共密钥,并使用公共密钥解密实体数据密文得到实体数据。
该实施例由于通过数据交换服务器转发加密的实体数据和加密的公共密钥,每次发送数据均随机生成一个公共密钥,使用该公共密钥加密要发送的实体数据,数据交换服务器只需对小数量的公共密钥进行解密和加密操作,且对实体数据的加密是采用对称加密算法进行加密,加密、解密速度快,从而解决了相关技术不适合数据量较大的加密传输以及不适合多方通讯的问题。
该实施例实现了在消息中间件领域的加密传输方案,每一次发送实体数据均生成一个新的随机密钥作为公共密钥,保证实体数据每次加密密钥都是唯一的;发送端和接收端之间的公共密钥交换通过系统自动完成,避免了密钥交换的麻烦;数据交换服务器只对小数量的公共密钥进行加密和解密操作,避免了在数据交换服务器对大数据量的实体数据进行加密和解密操作而引起的性能问题;同时由于对实体数据本身的加密是采用对称加密算法进行加密,对于数据的加密和解密的速度很快,适合特大数据量数据的加密传输。
优选地,在存储装置的数据库或者磁盘文件中预先存储有用户信息,用户信息包括用户名和登录口令。
上述步骤S101中的第一密钥为发送用户的登录口令,步骤S101包括:发送装置随机生成一个字符串作为公共密钥;发送装置使用公共密钥对所要发送的实体数据进行加密得到实体数据密文;发送装置使用发送用户输入的发送用户的登录口令对公共密钥进行加密得到第一密文;发送装置将实体数据密文、第一密文以及发送用户指定的发送方式的信息发送给数据交换服务器。
其中,发送方式的信息包括:点对点、一点对多点或者广播发送方式;当发送方式为点对点或者一点对多点发送方式时,发送方式的信息还包括接收用户的用户名或者用户名列表。通过提供多种发送方式为企业应用系统之间的数据交换提供了点对点(单播)、一点对多点(多播)、广播方式等多种加密传输方式,提高了数据在网络上传输的保密性和安全性。
步骤S102包括:数据交换服务器从存储装置中查找到发送用户的登录口令;数据交换服务器使用发送用户的登录口令解密第一密文,得到公共密钥。
上述步骤S103中的第二密钥为接收用户的登录口令,步骤S103包括:数据交换服务器根据接收到的发送方式的信息以及预先设置的消息路由规则获得路由表;数据交换服务器依次遍历路由表中的各个接收用户,根据当前的接收用户的用户名从存储装置中查找到当前的接收用户的登录口令,并使用当前的接收用户的登录口令加密公共密钥,得到第二密文;根据路由表将第二密文以及接收到的实体数据密文发送给当前的接收用户对应的接收装置。当发送方式为一点到多点或广播方式时,路由表中的接收用户可能是多个,此时,需要依次使用每一个接收用户的登录口令加密公共密钥,并将加密后得到的第二密文发送给每一个接收用户对应的接收装置。
步骤S104包括:接收装置使用接收用户输入的接收用户的登录口令对接收到的第二密文进行解密,得到公共密钥;接收装置使用公共密钥对接收到的实体数据密文进行解密得到实体数据。
上述优选实施例提供了本发明的消息中间件的数据加密传输方法的具体实施方案。通过数据交换服务器访问存储装置,从存储装置中查找预先存储的用户的密码信息,来对公共密钥进行加密和解密。数据交换服务器只对小数量的公共密钥进行加密和解密操作,避免了在数据交换服务器对大数据量的实体数据进行加密和解密操作而引起的性能问题。
上述的存储装置也可以由数据交换服务器实现。用户信息(包括用户名和登录口令)可以预先存储在数据交换服务器以外的另一个装置中,也可以存储在数据交换服务器中,即由数据交换服务器来实现存储装置的功能。
图2示出了根据本发明实施例的消息中间件的数据加密传输系统的示意图,包括:
发送装置10,用于使用随机生成的公共密钥加密所要发送的实体数据得到实体数据密文以及使用第一密钥加密公共密钥得到第一密文,并将实体数据密文和第一密文发送给数据交换服务器;
数据交换服务器20,用于使用第一密钥对接收到的第一密文进行解密,得到公共密钥;还用于使用第二密钥对解密得到的公共密钥进行加密,并将加密得到的第二密文以及接收到的实体数据密文发送给接收装置;
接收装置30,用于使用第二密钥解密接收到的第二密文得到公共密钥,并使用公共密钥解密实体数据密文得到实体数据。
优选地,上述的系统还包括:存储装置40,用于在其数据库或者磁盘文件中预先存储用户信息,用户信息包括用户名和登录口令。
优选地,第一密钥为发送用户的登录口令,发送装置10包括:
公共密钥生成模块101,用于随机生成一个字符串作为公共密钥;
第一加密模块102,用于使用公共密钥生成模块101生成的公共密钥对所要发送的实体数据进行加密得到实体数据密文;还用于使用发送用户输入的发送用户的登录口令对公共密钥进行加密得到第一密文;
第一发送模块103,用于将实体数据密文、第一密文以及发送用户指定的发送方式的信息发送给数据交换服务器。
优选地,数据交换服务器20包括:
第二接收模块201,用于接收实体数据密文、第一密文以及发送方式的信息;
第二解密模块202,用于从存储装置40中查找到发送用户的登录口令;还用于使用发送用户的登录口令解密第一密文,得到公共密钥。
优选地,第二密钥为接收用户的登录口令,数据交换服务器20还包括:
第二发送模块203,用于根据第二接收模块接收到的发送方式的信息以及预先设置的消息路由规则获得路由表;还用于根据路由表将第二密文以及第二接收模块接收到的实体数据密文发送给路由表中的所有接收用户对应的接收装置;
第二加密模块204,用于依次遍历路由表中的各个接收用户,根据当前的接收用户的用户名从存储装置中查找到当前的接收用户的登录口令,并使用当前的接收用户的登录口令加密公共密钥,得到第二密文。
接收装置30包括:
第三接收模块301,用于接收第二密文以及实体数据密文;
第三解密模块302,用于使用接收用户输入的接收用户的登录口令对第三接收模块301接收到的第二密文进行解密,得到公共密钥;还用于使用公共密钥对第三接收模块301接收到的实体数据密文进行解密得到实体数据。
图3示出了根据本发明优选实施例的数据加密传输系统的基本框架示意图,接收装置可以有多个(如图中的接收装置A和接收装置B),支持单播、多播和广播等多种数据加密传输方式,其包括:发送装置、数据交换服务器、接收装置。
如图4所示,整体的工作流程包括如下步骤:
步骤401,发送用户将要发送的实体数据传给发送装置,并指定消息发送方式。如此处指定要发送的数据为一个长度为4096字节的字节数组data,发送方式为广播消息。
步骤402,发送装置利用公共密钥生成模块生成一个30个字符长度的随机字符串“I8T7OZ91KCCHZ3LKH5UYX273EM4141”作为对实体数据进行加密的公共密钥。
步骤403,发送装置利用生成的公共密钥“I8T7OZ91KCCHZ3LKH5UYX273EM4141”作为密码对指定的实体数据data进行加密、得到实体数据密文encdata。
步骤404,发送装置利用发送用户的登录口令(此处假定为123456)对公共密钥“I8T7OZ91KCCHZ3LKH5UYX273EM4141”进行加密,得到发送方公共密钥密文(即上述的第一密文)“pRmMgM2B5gsK2zB3jVpohdBZlbAEx+J7/nP3XQF9J22dCPuXadFttIUd3KZMdG0AXNKew6ZFy5SkUcWbMVzC8g==”。
步骤405,发送装置将实体数据密文encdata和发送方公共密钥密文“pRmMgM2B5gsK2zB3jVpohdBZlbAEx+J7/nP3XQF9J22dCPuXadFttIUd3KZMdG0AXNKew6ZFy5SkUcWbMVzC8g==”组装成数据包,并将该数据包发送到数据交换服务器。
步骤406,数据交换服务器接收发送装置发送的数据包,从数据包中得到实体数据密文encdata和发送方公共密钥密文“pRmMgM2B5gsK2zB3jVpohdBZlbAEx+J7/nP3XQF9J22dCPuXadFttIUd3KZMdG0AXNKew6ZFy5SkUcWbMVzC8g==”;数据交换服务器根据消息路由规则得到路由表,此处假定路由结果有两个接收用户App1和App2。
步骤407,数据交换服务器从存储装置中查找得到发送用户的登录口令(此处为123456),并使用该登录口令对发送方公共密钥密文“pRmMgM2B5gsK2zB3jVpohdBZlbAEx+J7/nP3XQF9J22dCPuXadFttIUd3KZMdG0AXNKew6ZFy5SkUcWbMVzC 8g==”进行解密,得到公共密钥的明文“I8T7OZ91KCCHZ3LKH5UYX273EM4141”。
步骤408,数据交换服务器从存储装置中得到接收用户App1的登录密码,此处假定为abc123,使用该登录密码对公共密钥“I8T7OZ91KCCHZ3LKH5UYX273EM4141”进行加密,得到接收方公共密钥密文(即上述的第二密文)“kK7yvzY+I0HNyoQgfe5nhTVx85Js2zfbee8Uc7npuD4RL1XXlUh2g5tImkMbjvHgK/oQ38AcY0kgY1UUVOw0GA==”。
步骤409,数据交换服务器将步骤406中得到的实体数据密文encdata和步骤408中得到的接收方公共密钥密文“kK7yvzY+I0HNyoQgfe5nhTVx85Js2zfbee8Uc7npuD4RL1XXlUh2g5tImkMbjvHgK/oQ38AcY0kgY1UUVOw0GA==”组装成新的数据包发送到接收用户App1对应的接收装置A。数据交换服务器根据步骤406得到的路由表对App2重复步骤408和步骤409,直到将数据发送给路由表的每一个接收用户。
步骤410,接收装置A收到数据交换服务器的数据包后从数据包中得到实体数据密文encdata和接收方公共密钥密文“kK7yvzY+I0HNyoQgfe5nhTVx85Js2zfbee8Uc7npuD4RL1XXlUh2g5tImkMbjvHgK/oQ38AcY0kgY1UUVOw0GA==”。
步骤411,接收装置A使用接收用户App1的登录口令(此处为abc123)对接收方公共密钥密文“kK7yvzY+I0HNyoQgfe5nhTVx85Js2zfbee8Uc7npuD4RL1XXlUh2g5tImkMbjvHgK/oQ38AcY0kgY1UUVOw0GA==”进行解密得到公共密钥“I8T7OZ91KCCHZ3LKH5UYX273EM4141”。
步骤412,接收装置A使用公共密钥“I8T7OZ91KCCHZ3LKH5UYX273EM4141”对步骤410中得到的实体数据密文encdata进行解密,得到发送端传输的真实数据data,完成一次加密数据传输过程。
图5示出了根据本发明优选实施例的发送装置的工作流程图,包括以下步骤:
步骤S501,发送装置接收发送用户要发送的实体数据以及发送用户指定的点对点、一点对多点或广播等消息发送方式;
步骤S502,发送装置生成一个随机字符串作为对实体数据进行加密的公共密钥;
步骤S503,发送装置利用公共密钥对指定的实体数据进行加密、得到实体数据密文;
步骤S504,发送装置利用发送用户的登录口令对公共密钥进行加密,得到发送方公共密钥密文;
步骤S505,发送装置将实体数据密文和发送方公共密钥密文组装成数据包,并将该数据包发送到数据交换服务器。
图6示出了根据本发明优选实施例的数据交换服务器的工作流程图,包括以下步骤:
步骤S601,数据交换服务器接收到发送装置发送的数据包后,从数据包中得到实体数据密文和发送方公共密钥密文;
步骤S602,数据交换服务器从存储装置中得到发送用户的登录口令,并使用该登录口令对发送方公共密钥密文进行解密,得到公共密钥;
步骤S603,数据交换服务器根据消息路由规则得到路由表,交换服务器从路由表得到接收端列表;
步骤S604,数据交换服务器从存储装置中得到接收用户的登录口令,并使用该登录口令对公共密钥进行加密,得到接收方公共密钥密文;
步骤S605,数据交换服务器将得到的实体数据密文和接收方公共密钥密文组装成新的数据包发送到接收装置;
步骤S606,数据交换服务根据得到的路由表判断是否已将公共密钥加密并将加密的公共密钥和实体数据密文转发给所有接收用户,若否,则继续对下一个接收端重复步骤S604和步骤S605,直到将加密的公共密钥和实体数据密文发送给路由表中的每一个接收用户。
图7示出了根据本发明优选实施例的接收装置的工作流程图,包括以下步骤:
步骤S701,接收装置收到数据交换服务器的数据包后从数据包中得到实体数据密文和接收方公共密钥密文;
步骤S702,接收装置使用接收用户的登录口令对接收方公共密钥密文进行解密得到公共密钥;
步骤S703,接收装置使用公共密钥对实体数据密文进行解密,得到发送端传输的真实数据,完成一次加密传输过程。
采用本发明的数据加密传输方法和系统能够提高应用系统之间的数据传输安全性和数据传输性能,可以保证数据在网络上传输加密后的数据,防止非法用户拦截传输的数据后用于非法目的,保证数据传输的安全性。
从以上的描述中,可以看出,本发明上述的实施例实现了如下技术效果:
(1)对每一次消息均生成一个新的随机密钥作为公共密钥,保证实体数据每次加密密钥都是唯一的;发送端和接收端之间的公共密钥交换通过系统自动完成,避免了密钥交换的麻烦;
(2)数据交换服务器只对小数量的公共密钥进行解密和加密操作,避免了在数据交换服务器对大数据量的实体数据进行加密和解密操作而引起的性能问题;
(3)对于实体数据的加密和解密的速度很快,适合特大数据量数据的加密传输;
(4)提供多种发送方式为企业应用系统之间的数据交换提供了点对点、一点对多点、广播方式等多种加密传输方式,提高了数据在网络上传输的保密性和安全性。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。