一种密钥获得方法及系统与流程

文档序号:14993321发布日期:2018-07-20 22:56阅读:244来源:国知局

本申请涉及通信技术领域,特别涉及一种密钥获得方法及系统。



背景技术:

在通信网络中,设备1与设备2之间发送数据时,常常对所需要发送的数据进行加密,以提高设备通信过程的安全性。对数据进行加密后,即便恶意窃听者截取到加密后的数据,也不容易从该加密后的数据中解密出原来的数据。

现有技术中,对数据进行加密时,设备1通常采用与设备2预先约定的加密算法对数据进行加密,并将加密后的数据发送至设备2。设备2接收到设备1发送的加密后的数据之后,采用与上述加密算法对应的解密算法对该数据进行解密,获得原来的数据。其中,对数据进行加密和解密时,均需要用到通信设备之间约定好的关键内容——密钥。为了保障密钥不泄露,通常在设备出厂之前将密钥内置在设备中。

采用上述数据加密方法可以较好地保证通信过程中数据的安全性。但是,一旦知道密钥的人员将密钥泄露出去,被恶意窃听者获取到,那么采用上述数据加密方法所加密的数据就可能被恶意窃听者破解,因此通信过程中数据的安全性不高。



技术实现要素:

本申请实施例的目的在于提供了一种密钥获得方法及系统,以提高通信过程中数据的安全性。具体的技术方案如下。

为了达到上述目的,本申请公开了一种密钥获得方法,应用于第一设备,所述方法包括:

接收第二设备发送的第一加密串,所述第一加密串为:所述第二设备以第二密钥对第一密钥进行加密后得到的加密串;所述第一密钥和第二密钥为所述第二设备确定的密钥;

确定第三密钥,并以所述第三密钥对所述第一加密串进行加密,获得第二加密串,并发送所述第二加密串至所述第二设备;

接收所述第二设备发送的第一信息串,所述第一信息串为:所述第二设备以所述第二密钥对所述第二加密串进行解密后得到的信息串;

以所述第三密钥对所述第一信息串进行解密,获得第二信息串,并将所述第二信息串作为所述第一设备进行数据加密、数据解密的第四密钥。

可选的,

所述第一密钥为所述第二设备随机确定的密钥;和/或,

所述第二密钥为所述第二设备随机确定的密钥;和/或,

所述第三密钥为所述第一设备随机确定的密钥。

可选的,所述方法还包括:

向所述第二设备发送针对所述第四密钥的回应消息,以使所述第二设备根据所述回应消息确定所述第一设备已获得密钥。

可选的,所述向所述第二设备发送针对所述第四密钥的回应消息的步骤,包括:

以所述第四密钥对预先约定的第一特征字进行加密,获得第三加密串;

生成针对所述第四密钥的回应消息,所述回应消息携带所述第三加密串;

发送所述回应消息至所述第二设备,以使所述第二设备根据所述第三加密串确定所述第一设备已获得密钥。

可选的,所述第四密钥包括第一部分的m字节数据和第二部分的m字节数据,所述第一部分的m字节数据为:各字节数据分别与所述m取余后余数互不相同的数据。

可选的,所述方法还包括:

以所述第四密钥对待发送至所述第二设备的第一数据进行加密,获得第一加密结果;

发送所述第一加密结果至所述第二设备,以使所述第二设备以所述第一密钥对所述第一加密结果进行解密并获得所述第一数据。

可选的,所述方法还包括:

接收所述第二设备发送的第二加密结果,所述第二加密结果为:所述第二设备以所述第一密钥对待发送至所述第一设备的第二数据进行加密后得到的加密结果;

以所述第四密钥对所述第二加密结果进行解密,获得所述第二数据。

可选的,所述以所述第四密钥对待发送至所述第二设备的第一数据进行加密,获得第一加密结果的步骤,包括:

以所述m字节为划分单位,将待发送至所述第二设备的第一数据划分成数据段;

以所述第四密钥对每一个数据段进行处理,获得处理后的数据段;

按照预设排列顺序,对各个处理后的数据段进行排序,获得第一加密结果;

其中,所述以所述第四密钥对每一个数据段进行处理,获得处理后的数据段的步骤,包括:

按照以下方式,对每一个数据段进行处理:

从所述第四密钥的第一部分中确定与目标数据段中的各个字节数据对应的移位因子,从所述第四密钥的第二部分中确定与所述目标数据段中的各个字节数据对应的异或因子;所述目标数据段为所述数据段中的任一个;

根据确定的移位因子和异或因子,对所述目标数据段中对应的各个字节数据进行移位处理和异或处理,获得处理后的目标数据段。

可选的,所述以所述m字节为划分单位,将待发送至所述第二设备的第一数据划分成数据段的步骤,包括:

获得待发送至所述第二设备的第一数据的总字节数量m;

判断所述m是否为所述m的整数倍;

如果否,则确定d字节个数据,将所述d字节个数据填充至所述第一数据中的指定位置,所述d是根据以下公式确定的:d=m-(mmodm);其中,所述mod为取余运算符号;

以所述m字节为划分单位,将填充数据后的第一数据划分成数据段。

为了达到上述目的,本申请公开了另一种密钥获得方法,应用于第二设备,所述方法包括:

确定第一密钥和第二密钥;

以所述第二密钥对所述第一密钥进行加密,获得第一加密串,并发送所述第一加密串至第一设备;

接收所述第一设备发送的第二加密串,所述第二加密串为:所述第一设备以确定的第三密钥对所述第一加密串进行加密后得到的信息串;

以所述第二密钥对所述第二加密串进行解密,获得第一信息串,并发送所述第一信息串至所述第一设备,以使所述第一设备获得用于进行数据加密、解密的第四密钥,其中,所述第四密钥为:所述第一设备以所述第三密钥对所述第一信息串进行解密后得到的第二信息串。

可选的,

所述第一密钥为所述第二设备随机确定的密钥;和/或,

所述第二密钥为所述第二设备随机确定的密钥;和/或,

所述第三密钥为所述第一设备随机确定的密钥。

可选的,所述方法还包括:

接收所述第一设备发送的针对所述第四密钥的回应消息;

根据所述回应消息确定所述第一设备已获得密钥。

可选的,所述根据所述回应消息确定所述第一设备已获得密钥的步骤,包括:

获得所述回应消息携带的第三加密串,所述第三加密串为:所述第一设备以所述第四密钥对预先约定的第一特征字进行加密后得到的加密串;

以所述第一密钥对所述第三加密串进行解密,获得第三信息串;

判断所述第三信息串与自身存储的第一特征字是否相同;

如果是,则确定所述第一设备已获得密钥。

可选的,所述第一密钥包括第一部分的m字节数据和第二部分的m字节数据;所述确定第一密钥和第二密钥的步骤,包括:

确定第二密钥,并采用以下方式确定第一密钥:

确定所述第一部分的m字节数据,其中,所述第一部分的m字节数据为:各字节数据分别与所述m取余后余数互不相同的数据;

确定所述第二部分的m字节数据;

将所述第一部分的m字节数据置于所述第二部分的m字节数据前方或后方之后得到的数据确定为第一密钥。

可选的,所述方法还包括:

接收所述第一设备发送的第一加密结果,所述第一加密结果为:所述第一设备以所述第四密钥对待发送至所述第二设备的第一数据进行加密后得到的加密结果;

以所述第一密钥对所述第一加密结果进行解密,获得所述第一数据。

可选的,所述方法还包括:

以所述第一密钥对待发送至所述第一设备的第二数据进行加密,获得第二加密结果;

发送所述第二加密结果至所述第一设备,以使所述第一设备以所述第四密钥对所述第二加密结果进行解密并获得第二数据。

可选的,所述以所述第一密钥对待发送至所述第一设备的第二数据进行加密,获得第二加密结果的步骤,包括:

以所述m字节为划分单位,将待发送至所述第一设备的第二数据划分成数据段;

以所述第一密钥对每一个数据段进行处理,获得处理后的数据段;

按照预设排列顺序,对各个处理后的数据段进行排序,获得第二加密结果;

其中,所述以所述第一密钥对每一个数据段进行处理,获得处理后的数据段的步骤,包括:

按照以下方式,对每一个数据段进行处理:

从所述第一密钥的第一部分中确定与目标数据段中的各个字节数据对应的移位因子,从所述第一密钥的第二部分中确定与所述目标数据段中的各个字节数据对应的异或因子;所述目标数据段为所述数据段中的任一个;

根据确定的移位因子和异或因子,对所述目标数据段中对应的各个字节数据进行移位处理和异或处理,获得处理后的目标数据段。

可选的,所述以所述m字节为划分单位,将待发送至所述第一设备的第二数据划分成数据段的步骤,包括:

获得待发送至所述第一设备的第二数据的总字节数量m;

判断所述m是否为所述m的整数倍;

如果否,则确定d字节个数据,将所述d字节个数据填充至所述第二数据中的指定位置,所述d是根据以下公式确定的:d=m-(mmodm);其中,所述mod为取余运算符号;

以所述m字节为划分单位,将填充数据后的第二数据划分成数据段。

为了达到上述目的,本申请公开了一种密钥获得系统,所述系统包括:第一设备和第二设备;

其中,所述第二设备,用于确定第一密钥和第二密钥,以所述第二密钥对所述第一密钥进行加密,获得第一加密串,并发送所述第一加密串至第一设备;

所述第一设备,用于在接收到第二设备发送的第一加密串时,确定第三密钥,以所述第三密钥对所述第一加密串进行加密,获得第二加密串,并发送所述第二加密串至所述第二设备;

所述第二设备,用于接收所述第一设备发送的第二加密串,以所述第二密钥对所述第二加密串进行解密,获得第一信息串,并发送所述第一信息串至所述第一设备;

所述第一设备,用于接收所述第二设备发送的第一信息串,以所述第三密钥对所述第一信息串进行解密,获得第二信息串,并将所述第二信息串作为所述第一设备进行数据加密、数据解密的第四密钥。

可选的,所述第一密钥为所述第二设备随机确定的密钥;和/或,

所述第二密钥为所述第二设备随机确定的密钥;和/或,

所述第三密钥为所述第一设备随机确定的密钥。

可选的,所述第一设备,还用于向所述第二设备发送针对所述第四密钥的回应消息;

所述第二设备,还用于接收所述第一设备发送的所述回应消息,并根据所述回应消息确定所述第一设备已获得密钥。

可选的,所述第一设备,具体用于以所述第四密钥对预先约定的第一特征字进行加密,获得第三加密串,并生成针对所述第四密钥的回应消息,所述回应消息携带所述第三加密串;发送所述回应消息至所述第二设备;

所述第二设备,具体用于在接收到所述第一设备发送的所述回应消息时,获得所述回应消息携带的第三加密串,以所述第一密钥对所述第三加密串进行解密,获得第三信息串;判断所述第三信息串与自身存储的第一特征字是否相同,如果是,则确定所述第一设备已获得密钥。

可选的,所述第一密钥包括第一部分的m字节数据和第二部分的m字节数据;

所述第二设备,具体用于确定所述第一部分的m字节数据,其中,所述第一部分的m字节数据为:各字节数据分别与所述m取余后余数互不相同的数据;确定所述第二部分的m字节数据;将所述第一部分的m字节数据置于所述第二部分的m字节数据前方或后方之后得到的数据确定为第一密钥。

可选的,所述第一设备,还用于以所述第四密钥对待发送至所述第二设备的第一数据进行加密,获得第一加密结果,并发送所述第一加密结果至所述第二设备;

所述第二设备,还用于接收所述第一设备发送的第一加密结果,并以所述第一密钥对所述第一加密结果进行解密,获得所述第一数据。

可选的,所述第二设备,还用于以所述第一密钥对待发送至所述第一设备的第二数据进行加密,获得第二加密结果,并发送所述第二加密结果至所述第一设备;

所述第一设备,还用于接收所述第二设备发送的第二加密结果,并以所述第四密钥对所述第二加密结果进行解密,获得所述第二数据。

可选的,所述第二设备,具体用于以所述m字节为划分单位,将待发送至所述第一设备的第二数据划分成数据段;从所述第一密钥的第一部分中确定与每一个数据段中的各个字节数据对应的移位因子,从所述第一密钥的第二部分中确定与每一个数据段中的各个字节数据对应的异或因子;根据确定的移位因子和异或因子,对每一个数据段中对应的各个字节数据进行移位处理和异或处理,获得各个处理后的数据段;按照预设排列顺序,对各个处理后的数据段进行排序,获得第二加密结果。

可选的,所述第二设备,具体用于获得待发送至所述第一设备的第二数据的总字节数量m;判断所述m是否为所述m的整数倍;如果否,则确定d字节个数据,将所述d字节个数据填充至所述第二数据中的指定位置,所述d是根据以下公式确定的:d=m-(mmodm);其中,所述mod为取余运算符号;以所述m字节为划分单位,将填充数据后的第二数据划分成数据段。

由上述技术方案可见,本申请实施例提供的方案中,作为执行主体的第一设备接收第二设备发送的第一加密串,第一加密串为第二设备以第二密钥对第一密钥进行加密后得到的加密串,并且第一密钥和第二密钥均为第二设备确定的密钥。在接收到第一加密串之后,第一设备确定第三密钥,并以第三密钥对第一加密串进行加密,获得第二加密串,并发送第二加密串至所述第二设备。然后,第一设备接收第二设备发送的第一信息串,第一信息串为第二设备以第二密钥对第二加密串进行解密后得到的信息串。最后,第一设备以第三密钥对第一信息串进行解密,获得第二信息串,并将第二信息串作为第一设备进行数据加密、数据解密的第四密钥。

也就是说,在本申请实施例提供的方案中,第一设备用于进行数据加密、数据解密的密钥,是从对端的第二设备处获得的,并不是人工预先内置在第一设备内部的,这样可以避免相关人员将密钥泄露出去。而且,第一设备获得的密钥是第二设备临时确定的密钥,并不是固定不变的密钥,因此第一设备获得的密钥相比于固定的密钥安全性更高。在第一设备从第二设备处获得密钥的过程中,所发送的密钥经过两次加密和两次解密过程最终由第一设备获得,该过程中所发送的数据均是经过加密的,并不是通过明文发送的,其安全性更高。因此,应用本申请实施例提供的方案来获得用于数据加密、数据解密的密钥,能够提高通信过程中数据的安全性。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种密钥获得方法的流程示意图;

图2为第一电子设备获得密钥时与第二电子设备交互的一种流程示意图;

图3a为本申请实施例提供的对第一数据进行加密的一种流程示意图;

图3b为图3a中步骤s105的一种流程示意图;

图4为本申请实施例提供的另一种密钥获得方法的流程示意图;

图5为本申请实施例提供的确定第一密钥的一种流程示意图;

图6为本申请实施例提供的一种密钥获得系统的结构示意图。

具体实施方式

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

本申请实施例提供了一种密钥获得方法及系统,应用于电子设备,该电子设备可以包括交换机、路由器、服务器等网络设备,也可以包括计算机、平板电脑、智能手机等个人设备。应用本申请实施例提供的方案来获得密钥,能够提高通信过程中数据的安全性。“密钥”是现代密码学的常用语。通常,加密过程或解密过程涉及密钥和算法内容,算法可以是公共的,但密钥一定要保密。并且算法的安全性均基于密钥的安全性。因此,提高密钥的安全性具有重要意义。下面通过具体实施例,对本申请进行详细说明。

图1为本申请实施例提供的一种密钥获得方法的流程示意图,应用于第一设备,该第一设备为电子设备。该方法包括如下步骤s101~步骤s104:

步骤s101:接收第二设备发送的第一加密串。所述第一加密串为:所述第二设备以第二密钥对第一密钥进行加密后得到的加密串。所述第一密钥和第二密钥为所述第二设备确定的密钥。

其中,第一设备和第二设备可以为通信链路中能够相互通信的两台设备。

需要说明的是,本实施例具体是由第一设备执行的。第一设备可以向第二设备发送密钥获取指令,第二设备接收到第一设备发送的密钥获取指令之后,向第一设备发送第一加密串,第一设备接收第二设备发送的第一加密串。具体的,第一设备可以在每次需要进行数据加密或数据解密之前向第二设备发送密钥获取指令,也可以按照预设周期向第二设备发送密钥获取指令。当然,第一设备也可以不向第二设备发送密钥获取指令,而是被动地接收第二设备发送的第一加密串。

在第一设备获得密钥之后,与第一设备之间进行数据传输的设备,可以是第二设备,也可以是其他设备,本申请对此不做具体限定。

具体的,第二设备确定第一密钥和第二密钥时,可以按照预设规则生成第一密钥和第二密钥,也可以从第二设备自身存储的密钥库中选择第一密钥和第二密钥。其中,第一密钥和第二密钥的确定过程可以是相同的,也可以是不同的。

作为一种具体实施例,由于第一密钥是第一设备需要获得的目标密钥,因此,为了进一步提高密钥的安全性,第一密钥可以为所述第二设备随机确定的密钥。也就是说,随机确定的密钥是由随机数组成的,随机数可以理解为一种动态变化的数据序列,其产生不可预测,其序列没有周期性、规律性。可以理解的是,采用随机方式确定的密钥,对相关的开发工程师来说该密钥都是未知的,因此这种方式可以从源头上避免密钥泄露,提高密钥的保密性。

需要说明的是,第二密钥是为了加密、解密第一密钥而确定的密钥,因此,第二密钥的安全性会直接影响第一密钥的安全性。作为一种具体实施方式,为了进一步提高第一密钥的安全性,上述第二密钥也可以为第二设备随机确定的密钥。

具体的,第二设备以第二密钥对第一密钥进行加密时,可以以第二密钥作为密钥,采用预先约定的第一加密算法对第一密钥进行加密,上述第一加密算法可以为数据加密标准(dataencryptionstandard,des)、高级加密标准(advancedencryptionstandard,aes)或sm4算法等,当然也可以采用其他算法,本实施例对此不做具体限定。上述第一加密算法是指第一设备和第二设备之间预先约定的算法。

步骤s102:确定第三密钥,并以所述第三密钥对所述第一加密串进行加密,获得第二加密串,并发送所述第二加密串至所述第二设备。

具体的,作为执行主体的第一设备确定第三密钥时,可以按照预设规则生成第三密钥,也可以从第一设备自身存储的密钥库中选择第三密钥。需要说明的是,第三密钥也是为了加密、解密第一密钥而确定的密钥,第三密钥的安全性也会直接影响第一密钥的安全性。为了进一步提高第一密钥的安全性,上述第三密钥可以为第一设备随机确定的密钥。

具体的,第一设备以第三密钥对第一加密串进行加密时,可以包括:以第三密钥作为密钥,采用上述预先约定的第一加密算法对第一加密串进行加密。

步骤s103:接收所述第二设备发送的第一信息串,所述第一信息串为:所述第二设备以所述第二密钥对所述第二加密串进行解密后得到的信息串。

具体的,第一设备发送第二加密串至第二设备时,第二设备接收第一设备发送的第二加密串,然后第二设备以第二密钥对第二加密串进行解密,并将解密得到的第一信息串发送至第一设备,第一设备便可以接收第二设备发送的第一信息串。

作为一种具体实施方式,第二设备以第二密钥对第二加密串进行解密时,可以包括:以第二密钥作为密钥,采用与上述预先约定的第一加密算法对应的解密算法对第二加密串进行解密。

步骤s104:以所述第三密钥对所述第一信息串进行解密,获得第二信息串,并将所述第二信息串作为所述第一设备进行数据加密、数据解密的第四密钥。

作为一种具体实施方式,第一设备以第三密钥对第一信息串进行解密时,可以以第三密钥作为密钥,采用与上述预先约定的第一加密算法对应的解密算法对第一信息串进行解密。可以理解的是,解密后获得的第二信息串应与第一密钥相同。至此,第一设备即获得了用于进行数据加密、数据解密的第四密钥。

在本实施例中,第一设备获得密钥的过程遵循“第二设备加密—第一设备加密—第二设备解密—第一设备解密”的交互过程。第一设备最后解密得到的密钥通常等于第二设备加密之前的密钥。

由上述内容可知,本实施例提供的方案中,作为执行主体的第一设备接收第二设备发送的第一加密串,第一加密串为第二设备以第二密钥对第一密钥进行加密后得到的加密串,并且第一密钥和第二密钥均为第二设备确定的密钥。在接收到第一加密串之后,第一设备确定第三密钥,并以第三密钥对第一加密串进行加密,获得第二加密串,并发送第二加密串至所述第二设备。然后,第一设备接收第二设备发送的第一信息串,第一信息串为第二设备以第二密钥对第二加密串进行解密后得到的信息串。最后,第一设备以第三密钥对第一信息串进行解密,获得第二信息串,并将第二信息串作为第一设备进行数据加密、数据解密的第四密钥。

也就是说,在本实施例提供的方案中,第一设备用于进行数据加密、数据解密的密钥,是从对端的第二设备处获得的,并不是人工预先内置在第一设备内部的,这样可以避免相关人员将密钥泄露出去。而且,第一设备获得的密钥是第二设备临时确定的密钥,并不是固定不变的密钥,因此第一设备获得的密钥相比于固定的密钥安全性更高。在第一设备从第二设备处获得密钥的过程中,所发送的密钥经过两次加密和两次解密过程最终由第一设备获得,该过程中所发送的数据均是经过加密的,并不是通过明文发送的,其安全性更高。因此,应用本实施例提供的方案来获得用于数据加密、数据解密的密钥,能够提高通信过程中数据的安全性。

同时,本实施例中,第二密钥和第三密钥也是动态确定的。即便是用于加密和解密的算法被泄露或公开,在缺少第二密钥和第三密钥的情况下,恶意攻击者想要通过截听通信链路的通信包破译出动态确定的第一密钥,其过程也将是非常困难的。由于第一设备获得的密钥是动态确定的,并且是开发工程师都不知道的,因此开发工程师离职也不会影响产品的保密性以及其后的持续开发。并且,本实施例在算法实现上比较容易,实现代码可以在100行左右,计算速度快。本实施例提供的密钥获得方法不仅适用于高速cpu设备,同样也适用于低速cpu设备,具有较广泛的适应性。

基于图1所示实施例的一种具体实施方式中,在第一设备获得第四密钥之后,所述方法还可以包括:向所述第二设备发送针对所述第四密钥的回应消息,以使所述第二设备根据所述回应消息确定所述第一设备已获得密钥。

为了进一步使第二设备确定第一设备获得的第四密钥是否与第一密钥相同,作为一种具体实施方式,向所述第二设备发送针对所述第四密钥的回应消息的步骤,可以包括以下步骤1~步骤3:

步骤1:以所述第四密钥对预先约定的第一特征字进行加密,获得第三加密串。

具体的,第一设备以所述第四密钥对预先约定的第一特征字进行加密时,可以包括:以第四密钥作为密钥,采用上述预先约定的第一加密算法对预先约定的第一特征字进行加密。

其中,预先约定的第一特征字可以理解为第一设备与第二设备之间预先约定的特征字。具体的,在约定第一特征字时,第一设备可以预先向第二设备发送第一特征字,并标记该第一特征字用于验证设备是否获得正确的密钥。然后,第二设备接收第一设备发送的第一特征字,并存储上述第一特征字。也可以是,第二设备预先向第一设备发送第一特征字,并标记第一特征字的用途。然后,第一设备接收第二设备发送的第一特征字,并存储上述第一特征字。

步骤2:生成针对所述第四密钥的回应消息,所述回应消息携带所述第三加密串。

步骤3:发送所述回应消息至所述第二设备,以使所述第二设备根据所述第三加密串确定所述第一设备已获得密钥。

具体的,第一设备发送所述回应消息至第二设备,第二设备在接收到第一设备发送的上述回应消息后,可以从回应消息中获得第三加密串。进而,由于第三加密串是第一设备以第四密钥对第一特征字进行加密后得到的加密串,因此第二设备可以根据第三加密串以及第二设备自身存储的第一特征字确定第一设备已获得密钥。如果第二设备确定第一设备并没有获得对应的密钥,则可以向第一设备再次发送第一加密串,第一设备即重新执行步骤s101~步骤s104,直至第二设备确定第一设备已获得密钥。

为了更清楚地说明上述交互过程,图2给出了第一设备与第二设备之间交互过程的流程示意图。其中,第一设备确定第三密钥,第二设备确定第一密钥和第二密钥。第一密钥、第二密钥、第三密钥、第四密钥分别以kx、ka、kb、kx′表示,第一加密算法以及对应的解密算法分别以encrypt、decrypt表示,在encrypt(x1,x2)函数中,参数x1为待加密数据,参数x2为所采用的密钥,在decrypt(y1,y2)函数中,参数y1为待解密数据,参数y2为所采用的密钥。第一加密串、第二加密串、第一信息串、第二信息串分别以c1、d1、e1、kx′表示。第一特征字以mx表示,第三加密串以f1表示。在第一设备和第二设备协商确定密钥之后,可以按确定的密钥kx进行加密通信。

综上,在本实施方式中,第一设备在获得第四密钥之后向第二设备发送回应消息,以使第二设备根据该回应消息确定第一设备已获得密钥,从而提高所获得的密钥的准确性。

基于图1所示实施例的一种具体实施方式中,所述第四密钥可以包括第一部分的m字节数据和第二部分的m字节数据,第一部分的m字节数据可以为:各字节数据分别与所述m取余后余数互不相同的数据;第一部分的m字节数据也可以为m个互不相同的随机数,或为0~m-1之间的随机数,或为0~255之间的随机数。m取正整数。第二部分的m字节数据也可以为0~255之间的随机数。当第一部分的m字节数据为各字节数据分别与所述m取余后余数互不相同的数据时,作为一个例子,m取5,第一部分的5字节数据分别为kx1,kx2,kx3,kx4和kx5,并且kx1mod5,kx2mod5,kx3mod5,kx4mod5和kx5mod5互不相同,其中,mod为取余运算符号。

在第一设备与第二设备的交互过程中,如果双方设备均正确地加密、解密,并且均采用相同的加密算法和解密算法,则第一密钥与第四密钥应是相同的,因此第一密钥也可以具有上述结构。作为一种具体实施方式,第二密钥和第三密钥也可以具体与第四密钥相同的结构,并且可以是采用与第四密钥相同的方式确定的。

下面结合具体实例对第一设备获得密钥的过程再做详细说明。

首先,作为通信主叫方的第二设备(又称为上位机)采用密钥生成算法在内部产生2个动态密钥,一个是第二密钥ka,一个是第一密钥kx。两个密钥中所包含的随机数可以由第二设备中的随机数生成函数来生成。取m=8,则第一密钥和第二密钥的长度均为16字节。例如:

ka={81h,12h,0ch,03h,b6h,97h,38h,a5h,edh,bdh,a4h,d1h,5eh,88h,d9h,f8h};

kx={47h,04h,5bh,bdh,50h,27h,c1h,22h,4ah,b3h,c0h,f5h,12h,90h,72h,9ch};

然后,第二设备用ka作为密钥,采用第一加密算法对kx进行加密,得到第一加密串c1:

c1=encrypted(kx,ka)={fbh,a0h,05h,6ch,89h,dfh,2ch,aah,f7h,17h,9eh,24h,cbh,68h,9fh,14h};

第二设备启动一次通信握手命令,采用握手命令字cmd1向作为通信被叫方的第一设备(又称为下位机)发起第一个握手包,把第一加密串c1发送至第一设备。第一设备监听到第一个握手包,根据握手命令字cmd1,进入握手包处理程序:首先,采用密钥生成算法产生一个动态密钥kb,作为第三密钥。该密钥所包含的随机数可以由第一设备中的随机数生成函数来生成。取m=8,则第三密钥的长度为16字节。例如:

kb={a4h,42h,40h,bbh,95h,39h,4eh,57h,8ah,2dh,84h,77h,1ch,41h,a6h,3fh};

其后,第一设备获得第一个握手包中的第一加密串c1,并以kb作为密钥,采用第一加密算法对c1进行加密,得到第二加密串d1:

d1=encrypt(c1,kb)={e7h,24h,8fh,1bh,c8h,f2h,8ah,95h,ebh,93h,14h,53h,8ah,45h,39h,2bh};

第一设备将该d1作为回应包携带的信息,将回应包发送至第二设备。第二设备接收到第一设备的回应包后,以ka作为密钥,采用与第一加密算法对应的解密算法对d1进行解密,获得第一信息串e1:

e1=decrypt(d1,ka)={5ah,80h,d1h,cah,11h,0ah,67h,1dh,56h,37h,4ah,82h,53h,bdh,d4h,a3h};

第二设备启动通信二次握手命令,采用握手命令字cmd2向第一设备发起第二个握手包,把第一信息串e1发送至第一设备。第一设备监听到第二个握手包,从中获得第一信息串e1,并以kb作为密钥,采用与第一加密算法对应的解密算法对e1进行解密,得到kx′=decrypt(e1,kb)。

根据本申请实施例的密钥获得方法,该kx′应等同于第一次握手时由第二设备产生的动态密钥kx。第一设备得到这个动态密钥kx′(即kx)后,可以用kx作为密钥,采用第一加密算法对预先约定的第一特征字(例如goodluck)进行加密,获得第三加密串f1,生成针对第二次握手包的回应包(即上述回应消息),并将该回应包发送至第二设备。第二设备在收到针对第二次握手包的回应包后,从f1中解密出第三信息串h1,判断h1是否与自身存储的第一特征字goodluck相同,如果相同,则确定第一设备已获得了正确的密钥,此次密钥协商成功;如果不相同,则重新执行一遍上述握手过程。

若双方密钥协商成功,则可以利用本次协商得到的动态密钥,进行后续数据加密,或者将得到的密钥用作其他加密机制的密钥。

第一设备通过图1所示实施例的方法获得密钥之后,可以使用获得的密钥与其他设备进行数据通信。其中,其他设备可以是第二设备,也可以是除第二设备以外、已获得上述密钥的设备。下面以第一设备与第二设备进行数据通信为例介绍本实施例的其他实施方式。

基于图1所示实施例的一种具体实施方式中,所述方法还可以包括以下步骤1和步骤2所示的数据发送过程:

步骤1:以所述第四密钥对待发送至所述第二设备的第一数据进行加密,获得第一加密结果。

在本实施方式中,第一设备以第四密钥对待发送至所述第二设备的第一数据进行加密时,可以包括:以第四密钥作为密钥,采用预先约定的第二加密算法对待发送至所述第二设备的第一数据进行加密。其中,第二加密算法与第一加密算法可以相同,也可以不同。

步骤2:发送所述第一加密结果至所述第二设备,以使所述第二设备以所述第一密钥对所述第一加密结果进行解密并获得所述第一数据。

具体的,第一设备发送第一加密结果至第二设备,第二设备接收第一设备发送的第一加密结果,然后第二设备以第一密钥对第一加密结果进行解密并获得第一数据。进一步的,第二设备以第一密钥对第一加密结果进行解密,可以包括:以第一密钥作为密钥,采用与第二加密算法对应的解密算法对第一加密结果进行解密。

综上,在本实施方式中,第一设备可以以第四密钥对待发送至第二设备的数据进行加密,并将加密结果发送至第二设备,以使第二设备接收到第一设备发送的数据。第一设备在主动向第二设备发送数据时,所发送的数据是经过第四密钥加密的。

当第四密钥包括第一部分的m字节数据和第二部分的m字节数据时,上述实施方式中的步骤1,即以所述第四密钥对待发送至所述第二设备的第一数据进行加密,获得第一加密结果的步骤,可以按照图3a所示的第一数据加密流程图来执行,具体包括以下步骤s105~步骤s107:

步骤s105:以所述m字节为划分单位,将待发送至所述第二设备的第一数据划分成数据段。

在本实施例中,当第一数据的字节数量不是m的整数倍时,无法将第一数据划分成均为m字节的数据段,这时可以为第一数据进行数据填充,将填充数据后的第一数据划分成数据段,使得到的数据段均为m字节。

作为一种具体实施方式,步骤s105可以按照图3b所示的第一数据划分流程图来执行,具体包括以下步骤s105a~s105e:

步骤s105a:获得待发送至所述第二设备的第一数据的总字节数量m。

步骤s105b:判断所述m是否为所述m的整数倍,如果否,则执行步骤s105c;如果是,则执行步骤s105e。

步骤s105c:确定d字节个数据,将所述d字节个数据填充至所述第一数据中的指定位置。所述d是根据以下公式确定的:d=m-(mmodm);其中,所述mod为取余运算符号。

具体的,确定d字节个数据,可以包括:随机确定d字节个数据,或从预设的字符串中确定d字节个数据。例如,预设的字符串为80h|00h|…|00h,可以从该十六进制字符串中截取d字节个数据。上述指定位置可以是第一数据的起始位置,也可以是第一数据的末尾位置,当然也可以是第一数据中间的某个位置。本申请对此不做具体限定。

步骤s105d:以所述m字节为划分单位,将填充数据后的第一数据划分成数据段。在步骤s105d之后执行步骤s106。

步骤s105e:以所述m字节为划分单位,直接将第一数据划分成数据段。在步骤s105e之后执行步骤s106。

步骤s106:以所述第四密钥对每一个数据段进行处理,获得处理后的数据段。

具体的,步骤s106包括,按照以下方式,对每一个数据段进行处理:

从所述第四密钥的第一部分中确定与目标数据段中的各个字节数据对应的移位因子,从所述第四密钥的第二部分中确定与所述目标数据段中的各个字节数据对应的异或因子,所述目标数据段为所述数据段中的任一个;

根据确定的移位因子和异或因子,对所述目标数据段中对应的各个字节数据进行移位处理和异或处理,获得处理后的目标数据段。

其中,第一部分的m字节数据可以理解为m个移位因子,第二部分的m字节数据可以理解为m个异或因子。具体的,确定一个移位因子即是从第一部分的m字节数据中确定一个字节数据。可以理解的是,一个数据段中包含m个字节数据,第四密钥的第一部分也包含m字节数据,在确定移位因子时,数据段中的字节数据与第一部分中的字节数据可以是一一对应的,也可以不是一一对应的。

在数据段中的字节数据与第一部分中的字节数据是一一对应的情况下,在确定数据段的每个字节数据与第一部分的每个字节数据之间的一一对应关系时,可以按照字节数据的相同编号进行对应,也可以按照预设的第一编号对应顺序进行对应,这都是可行的。例如,一个数据段中包含编号分别为d1,d2,d3,d4四个字节数据,第四密钥的第一部分包含编号分别为k1,k2,k3,k4的四个字节数据,那么在确定移位因子时,可以按照字节数据的相同编号进行对应,即按照d1—k1,d2—k2,d3—k3,d4—k4的编号对应关系确定移位因子;也可以按照预设的第一编号对应顺序进行对应,即可以按照d1—k2,d2—k3,d3—k4,d4—k1的编号对应关系确定移位因子。

在数据段中的字节数据与第一部分中的字节数据不是一一对应的情况下,在确定数据段的每个字节数据所对应的移位因子时,可以按照预设的第二编号对应顺序进行确定。沿用上段的例子进行说明,可以按照d1—k2,d2—k2,d3—k4,d4—k4的编号对应关系确定移位因子。

同样的,确定一个异或因子即是从第二部分的m字节数据中确定一个字节数据。可以理解的是,一个数据段中包含m个字节数据,第四密钥的第二部分也包含m字节数据,在确定异或因子时,数据段中的字节数据与第二部分中的字节数据可以是一一对应的,也可以不是一一对应的。

在数据段中的字节数据与第二部分中的字节数据是一一对应的情况下,在确定数据段的每个字节数据与第二部分的每个字节数据之间的一一对应关系时,可以按照字节数据的相同编号进行对应,也可以按照预设的编号对应顺序进行对应,这都是可行的。例如,一个数据段中包含编号分别为d1,d2,d3,d4四个字节数据,第四密钥的第二部分包含编号分别为r1,r2,r3,r4的四个字节数据,那么在确定异或因子时,可以按照字节数据的相同编号进行对应,即按照d1—r1,d2—r2,d3—r3,d4—r4的编号对应关系确定异或因子,也可以按照预设的编号对应顺序进行对应,即按照d1—r3,d2—r1,d3—r4,d4—r2的编号对应关系确定异或因子。

在数据段中的字节数据与第二部分中的字节数据不是一一对应的情况下,在确定数据段的每个字节数据所对应的异或因子时,可以按照预设的第三编号对应顺序进行确定。沿用上段的例子进行说明,可以按照d1—r3,d2—r4,d3—r4,d4—r1的编号对应关系确定异或因子。

上述第一编号对应顺序、第二编号对应顺序和第三编号对应顺序可以彼此相同,也可以彼此不同。

具体的,根据确定的移位因子和异或因子,对所述目标数据段中对应的各个字节数据进行移位处理和异或处理时,可以包括:先根据确定的移位因子对目标数据段中对应的各个字节数据进行移位处理,然后根据确定的异或因子对移位处理后的各个字节数据进行异或处理。也可以包括:先根据确定的异或因子对目标数据段中对应的各个字节数据进行异或处理,然后根据确定的移位因子对异或处理后的各个字节数据进行移位处理。

在进行移位处理时,可以对数据进行左移,也可以对数据进行右移,本申请实施例对此不做具体限定。

步骤s107:按照预设排列顺序,对各个处理后的数据段进行排序,获得第一加密结果。

其中,预设排列顺序可以是各个数据段在第一数据中的排列顺序,也可以是与各个数据段在第一数据中的排列顺序不同的排列顺序,本实施例对此不做具体限定。

可以理解的是,对各个处理后的数据段进行排序,并将排序后的各个数据段串联起来,即获得第一加密结果。

综上,在本实施方式提供的方案中,作为执行主体的第一电子设备以第四密钥中移位因子和异或因子的字节数量m作为划分单位,将第一数据划分成数据段,并以第四密钥中的移位因子和异或因子对每一个数据段进行移位处理和异或处理,然后按照预设排列顺序对各个处理后的数据段进行排序,获得第一加密结果。这种加密算法实现上比较容易,代码编程也很简单。为了使表述更清楚,现将本申请实施例提供的上述加密算法即图3所示加密算法,称为“第三加密算法”。上述内容提及的第一加密算法和第二加密算法均可以包括第三加密算法。即在第一设备为了获得密钥而与第二设备交互的过程中,可以采用第三加密算法进行加密。在第一设备获得第四密钥之后,第一设备与第二设备之间采用协商的密钥对数据进行加密时,也可以采用第三加密算法进行加密。

上述内容介绍了第一设备以第四密钥、第三加密算法对待发送至第二设备的第一数据进行加密的过程。第一设备还可以以第四密钥、第三加密算法对接收到的第二设备发送的加密结果进行解密,以获得第二设备发送的数据。

基于图2所示实施例的一种具体实施方式中,所述方法还可以包括以下步骤1~步骤2所示的数据接收过程:

步骤1:接收所述第二设备发送的第二加密结果,所述第二加密结果为:所述第二设备以所述第一密钥对待发送至所述第一设备的第二数据进行加密后得到的加密结果。

具体的,第二设备以第一密钥对待发送至所述第一设备的第二数据进行加密,获得第二加密结果,并发送第二加密结果至第一设备,第一设备接收第二设备发送的第二加密结果。

在本实施方式中,第二设备以第一密钥对待发送至所述第一设备的第二数据进行加密时,可以包括:以第一密钥作为密钥,采用第三加密算法对待发送至第一设备的第二数据进行加密。当然,第二设备也可以采用其他加密算法对待发送至第一设备的第二数据进行加密。

步骤2:以所述第四密钥对所述第二加密结果进行解密,获得所述第二数据。

具体的,当第四密钥包括第一部分的m字节数据和第二部分的m字节数据时,上述步骤2,即以所述第四密钥对所述第二加密结果进行解密,获得所述第二数据的步骤,可以包括以下步骤2a~步骤2c:

步骤2a:以所述m字节为划分单位,将第二加密结果划分成数据段。

具体的,在上述步骤2a之前,还可以包括:获得第二加密结果的总字节数量n,判断n是否为m的整数倍,如果是,则执行步骤2a;如果否,则说明情况异常,不予处理即可。

步骤2b:按照以下方式,对将第二加密结果划分得到的每一个数据段进行处理:

从所述第四密钥的第一部分中确定与目标数据段中的各个字节数据对应的移位因子,从所述第四密钥的第二部分中确定与所述目标数据段中的各个字节数据对应的异或因子,所述目标数据段为将第二加密结果划分得到的数据段中的任一个;

根据确定的移位因子和异或因子,对所述目标数据段中对应的各个字节数据进行移位处理和异或处理,获得处理后的目标数据段。

需要说明的是,在解密时,对数据进行移位时移位的方向应与加密时移位的方向相反。如果加密时对数据进行左移,解密时则对该数据进行右移。

步骤2c:按照预设排列顺序,对各个处理后的数据段进行排序,获得第二数据。

需要说明的是,解密时所按照的排列顺序,应与对数据加密时所采用的排列顺序相对应。如果加密时所采用的排列顺序是按照数据段编号顺次排列,那么解密时也按照数据段编号顺次排列各个处理后的数据段。如果加密时所采用的排列顺序是按照数据段编号倒序排列,那么解密时所采用的排列顺序也按照数据段编号倒序排列各个处理后的数据段。这样,才能从第二加密结果解密出第二数据。

综上,在本实施方式中,第一设备可以以第四密钥对第二设备发送的加密结果进行解密,以获得第二设备发送的数据。第一设备在被动接收第二设备发送的数据时,接收的数据是经过第一密钥加密的,第一设备可以通过第四密钥对其解密。

图4为本申请实施例提供的另一种密钥获得方法的流程示意图,应用于第二设备,该第二设备为电子设备。该方法包括如下步骤s401~步骤s404:

步骤s401:确定第一密钥和第二密钥。

需要说明的是,本实施例具体是由第二设备执行的。第一设备和第二设备可以为通信链路中能够相互通信的两台设备。第二设备可以在接收到第一设备发送的密钥获取指令之后,确定第一密钥和第二密钥。当然,也可以在接收到其他指令后,或者在预设周期到来时,确定第一密钥和第二密钥。本实施例对此不做具体限定。

步骤s402:以所述第二密钥对所述第一密钥进行加密,获得第一加密串,并发送所述第一加密串至第一设备。

步骤s403:接收所述第一设备发送的第二加密串,所述第二加密串为:所述第一设备以确定的第三密钥对所述第一加密串进行加密后得到的信息串。

步骤s404:以所述第二密钥对所述第二加密串进行解密,获得第一信息串,并发送所述第一信息串至所述第一设备,以使所述第一设备获得用于进行数据加密、解密的第四密钥,其中,所述第四密钥为:所述第一设备以所述第三密钥对所述第一信息串进行解密后得到的第二信息串。

由上述内容可见,在本实施例提供的方案中,第一设备用于进行数据加密、数据解密的密钥,是从对端的第二设备处获得的,并不是人工预先内置在第一设备内部的,这样可以避免相关人员将密钥泄露出去。而且,第一设备获得的密钥是第二设备临时确定的密钥,并不是固定不变的密钥,因此第一设备获得的密钥相比于固定的密钥安全性更高。在第一设备从第二设备处获得密钥的过程中,所发送的密钥经过两次加密和两次解密过程最终由第一设备获得,该过程中所发送的数据均是经过加密的,并不是通过明文发送的,其安全性更高。因此,应用本实施例提供的方案来获得用于数据加密、数据解密的密钥,能够提高通信过程中数据的安全性。

基于图4所示实施例的一种具体实施方式中,在第二设备发送第一信息串至第一设备之后,所述方法还可以包括以下步骤1和步骤2:

步骤1:接收所述第一设备发送的针对所述第四密钥的回应消息。

步骤2:根据所述回应消息确定所述第一设备已获得密钥。

具体的,第二设备根据所述回应消息确定第一设备已获得密钥时,可以包括多种实施方式,可以根据回应消息携带的特定字确定第一设备已获得密钥,也可以采用以下步骤2a~步骤2c所示的方式确定第一设备已获得密钥:

步骤2a:获得所述回应消息携带的第三加密串,所述第三加密串为:所述第一设备以所述第四密钥对预先约定的第一特征字进行加密后得到的加密串。

步骤2b:以所述第一密钥对所述第三加密串进行解密,获得第三信息串。

步骤2c:判断所述第三信息串与自身存储的第一特征字是否相同,如果是,则确定所述第一设备已获得密钥,如果否,则确定所述第一设备没有获得密钥。第二设备在确定第一设备没有获得密钥时,可以再次发送所述第一加密串至第一设备。

综上可知,在本实施方式提高的方案中,第二设备在接收到第一设备发送的针对第四密钥的回应消息之后,可以根据该回应消息确定第一设备已获得密钥,从而保证第一设备成功获得密钥。

基于图4所示实施例的一种具体实施方式中,所述第一密钥包括第一部分的m字节数据和第二部分的m字节数据。在步骤s401中,在确定第一密钥时可以采用图5所示的流程示意图,其具体包括步骤s501~步骤s503:

步骤s501:确定所述第一部分的m字节数据,其中,所述第一部分的m字节数据为:各字节数据分别与所述m取余后余数互不相同的数据。

具体的,确定所述第一部分的m字节数据时,可以包括:在第一预设数值范围内,随机确定m个随机数,判断上述m个随机数分别与m取余后余数是否互不相同,如果是,则将确定的m个随机数作为第一部分的m字节数据;如果否,则返回执行在第一预设数值范围内,随机确定m个随机数的步骤。第一部分的各个字节数据又称为移位因子,用于对待加密数据进行移位操作。

第一预设随机数值范围可以为0~m-1,也可以为0~255,当然也可以为其他任何数值范围,本申请对此不做具体限定。

步骤s502:确定所述第二部分的m字节数据。

具体的,确定所述第二部分的m字节数据时,可以包括,在第二预设随机数值范围内,随机确定m个随机数,作为第二部分的m字节数据。第二预设随机数值范围可以为0~255,也可以为其他任何数值范围,本申请对此不做具体限定。第二部分的各个字节数据又称为异或因子,用于对待加密数据进行异或操作。

步骤s503:将所述第一部分的m字节数据置于所述第二部分的m字节数据前方或后方之后得到的数据确定为第一密钥。

也就是说,将第一部分作为一个整体置于第二部分整体的前方或后方,两部分串联后得到第一密钥。

类似的,第二密钥也可以包括第一部分的m字节数据和第二部分的m字节数据。在确定第二密钥时,第二设备也可以按照步骤s501~步骤s503确定第二密钥。同样的,第三密钥也可以包括第一部分的m字节数据和第二部分的m字节数据,在确定第三密钥时,第一设备也可以按照步骤s501~步骤s503确定第三密钥。

综上可知,本实施方式中,将第一密钥划分为第一部分的移位因子和第二部分的异或因子,其中第一部分的m个移位因子分别与m取余后余数互不相同,这两部分分别用于对待加密数据进行移位操作和异或操作。步骤s501~步骤s503可以理解为本申请实施例提供的一种密钥生成算法。

当第二设备确定第一设备已获得密钥之后,第二设备可以使用第一密钥与第二设备进行数据通信。

基于图4所示实施例的一种具体实施方式中,所述方法还可以包括以下步骤1~步骤2所示的数据接收过程:

步骤1:接收所述第一设备发送的第一加密结果,所述第一加密结果为:所述第一设备以所述第四密钥对待发送至所述第二设备的第一数据进行加密后得到的加密结果。

步骤2:以所述第一密钥对所述第一加密结果进行解密,获得所述第一数据。

作为一种具体实施方式,当第一密钥包括第一部分的m字节数据和第二部分的m字节数据时,上述步骤2,即以所述第一密钥对所述第一加密结果进行解密,获得所述第一数据的步骤,可以包括以下步骤2a~步骤2c:

步骤2a:以所述m字节为划分单位,将第一加密结果划分成数据段。

具体的,在上述步骤2a之前,还可以包括:获得第一加密结果的总字节数量n,判断n是否为m的整数倍,如果是,则执行步骤2a;如果否,则说明情况异常,不予处理即可。

步骤2b:按照以下方式,对将第一加密结果划分得到的每一个数据段进行处理:

从所述第一密钥的第一部分中确定与目标数据段中的各个字节数据对应的移位因子,从所述第一密钥的第二部分中确定与所述目标数据段中的各个字节数据对应的异或因子,所述目标数据段为将第一加密结果划分得到的数据段中的任一个;

根据确定的移位因子和异或因子,对所述目标数据段中对应的各个字节数据进行移位处理和异或处理,获得处理后的目标数据段。

需要说明的是,在解密时,对数据进行移位时移位的方向应与加密时移位的方向相反。如果加密时对数据进行左移,解密时则对该数据进行右移。

步骤2c:按照预设排列顺序,对各个处理后的数据段进行排序,获得第一数据。

需要说明的是,解密时所按照的排列顺序,应与对数据加密时所采用的排列顺序相对应。如果加密时所采用的排列顺序是按照数据段编号顺次排列,那么解密时也按照数据段编号顺次排列各个处理后的数据段。如果加密时所采用的排列顺序是按照数据段编号倒序排列,那么解密时所采用的排列顺序也按照数据段编号倒序排列各个处理后的数据段。这样,才能从第一加密结果解密出第一数据。

可见,在该实施方式提供的方案中,第二设备可以以第一密钥对第一设备发送的加密结果进行解密,从而获得第一设备所发送的数据。

基于图4所示实施例的一种具体实施方式中,所述方法还可以包括步骤1~步骤2所示的数据发送过程:

步骤1:以所述第一密钥对待发送至所述第一设备的第二数据进行加密,获得第二加密结果。

步骤2:发送所述第二加密结果至所述第一设备,以使所述第一设备以所述第四密钥对所述第二加密结果进行解密并获得第二数据。

可见,在该实施方式提供的方案中,第二设备可以以第一密钥对待发送至第一设备的数据进行加密,并将加密结果发送至第一设备,以使第一设备解密出第二设备所发送的数据。

作为一种具体实施方式,当第一密钥包括第一部分的m字节数据和第二部分的m字节数据时,上述步骤1,即以所述第一密钥对待发送至所述第一设备的第二数据进行加密,获得第二加密结果的步骤,可以包括以下步骤1a~步骤1c:

步骤1a:以所述m字节为划分单位,将待发送至所述第一设备的第二数据划分成数据段。

具体的,本步骤1a可以包括:首先,获得待发送至所述第一设备的第二数据的总字节数量m;然后,判断所述m是否为所述m的整数倍;如果是,则直接执行步骤1b,如果否,则确定d字节个数据,将所述d字节个数据填充至所述第二数据中的指定位置;最后,以所述m字节为划分单位,将填充数据后的第二数据划分成数据段。所述d是根据以下公式确定的:d=m-(mmodm);其中,所述mod为取余运算符号。

步骤1b:以所述第一密钥对每一个数据段进行处理,获得处理后的数据段。其中,本步骤具体包括:

按照以下方式,对每一个数据段进行处理:

从所述第一密钥的第一部分中确定与目标数据段中的各个字节数据对应的移位因子,从所述第一密钥的第二部分中确定与所述目标数据段中的各个字节数据对应的异或因子;所述目标数据段为所述数据段中的任一个;

根据确定的移位因子和异或因子,对所述目标数据段中对应的各个字节数据进行移位处理和异或处理,获得处理后的目标数据段。

步骤1c按照预设排列顺序,对各个处理后的数据段进行排序,获得第二加密结果。

需要指出的是,图1所示实施例与图4所示实施例是基于同一个发明构思得到的实施例,两个实施例的内容可以相互参照。

图6为本申请实施例提供的一种密钥获得系统,该系统实施例与图1所示方法实施例和图4所示方法实施例相对应。所述系统包括:第一设备601和第二设备602。

其中,所述第二设备602,用于确定第一密钥和第二密钥,以所述第二密钥对所述第一密钥进行加密,获得第一加密串,并发送所述第一加密串至第一设备601;

所述第一设备601,用于在接收到第二设备发送的第一加密串时,确定第三密钥,以所述第三密钥对所述第一加密串进行加密,获得第二加密串,并发送所述第二加密串至所述第二设备602;

所述第二设备602,用于接收所述第一设备发送的第二加密串,以所述第二密钥对所述第二加密串进行解密,获得第一信息串,并发送所述第一信息串至所述第一设备601;

所述第一设备601,用于接收所述第二设备发送的第一信息串,以所述第三密钥对所述第一信息串进行解密,获得第二信息串,并将所述第二信息串作为所述第一设备601进行数据加密、数据解密的第四密钥。

基于图6所示实施例的一种具体实施方式中,所述第一密钥为所述第二设备602随机确定的密钥;和/或,

所述第二密钥为所述第二设备602随机确定的密钥;和/或,

所述第三密钥为所述第一设备601随机确定的密钥。

基于图6所示实施例的一种具体实施方式中,所述第一设备601,还用于向所述第二设备602发送针对所述第四密钥的回应消息;

所述第二设备602,还用于接收所述第一设备601发送的所述回应消息,并根据所述回应消息确定所述第一设备601已获得密钥。

基于图6所示实施例的一种具体实施方式中,所述第一设备601,具体用于以所述第四密钥对预先约定的第一特征字进行加密,获得第三加密串,并生成针对所述第四密钥的回应消息,所述回应消息携带所述第三加密串;发送所述回应消息至所述第二设备602;

所述第二设备602,具体用于接收所述第一设备601发送的所述回应消息,然后获得所述回应消息携带的第三加密串,以所述第一密钥对所述第三加密串进行解密,获得第三信息串;判断所述第三信息串与自身存储的第一特征字是否相同,如果是,则确定所述第一设备601已获得密钥。

基于图6所示实施例的一种具体实施方式中,所述第一密钥包括第一部分的m字节数据和第二部分的m字节数据;

所述第二设备602,具体用于确定所述第一部分的m字节数据,其中,所述第一部分的m字节数据为:各字节数据分别与所述m取余后余数互不相同的数据;确定所述第二部分的m字节数据;将所述第一部分的m字节数据置于所述第二部分的m字节数据前方或后方之后得到的数据确定为第一密钥。

在第一设备和第二设备均正确地加密、解密,并且均采用相同的加密算法和解密算法的情况下,第一密钥与第四密钥应是相同的,因此第四密钥也可以包括第一部分的m字节数据和第二部分的m字节数据,所述第一部分的m字节数据为:各字节数据分别与所述m取余后余数互不相同的数据。

基于图6所示实施例的一种具体实施方式中,所述第一设备601,还用于以所述第四密钥对待发送至所述第二设备602的第一数据进行加密,获得第一加密结果,并发送所述第一加密结果至所述第二设备602;

所述第二设备602,还用于接收所述第一设备601发送的第一加密结果,并以所述第一密钥对所述第一加密结果进行解密,获得所述第一数据。

基于图6所示实施例的一种具体实施方式中,所述第二设备602,还用于以所述第一密钥对待发送至所述第一设备的第二数据进行加密,获得第二加密结果,并发送所述第二加密结果至所述第一设备601;

所述第一设备601,还用于接收所述第二设备602发送的第二加密结果,并以所述第四密钥对所述第二加密结果进行解密,获得所述第二数据。

基于图6所示实施例的一种具体实施方式中,所述第一设备601,具体用于以所述m字节为划分单位,将待发送至所述第二设备602的第一数据划分成数据段;从所述第四密钥的第一部分中确定与每一个数据段中的各个字节数据对应的移位因子,从所述第四密钥的第二部分中确定与每一个数据段中的各个字节数据对应的异或因子;根据确定的移位因子和异或因子,对每一个数据段中对应的各个字节数据进行移位处理和异或处理,获得各个处理后的数据段;按照预设排列顺序,对各个处理后的数据段进行排序,获得第一加密结果。

基于图6所示实施例的一种具体实施方式中,所述第二设备602,具体用于以所述m字节为划分单位,将待发送至所述第一设备601的第二数据划分成数据段;从所述第一密钥的第一部分中确定与每一个数据段中的各个字节数据对应的移位因子,从所述第一密钥的第二部分中确定与每一个数据段中的各个字节数据对应的异或因子;根据确定的移位因子和异或因子,对每一个数据段中对应的各个字节数据进行移位处理和异或处理,获得各个处理后的数据段;按照预设排列顺序,对各个处理后的数据段进行排序,获得第二加密结果。

基于图6所示实施例的一种具体实施方式中,所述第一设备601,具体用于获得待发送至所述第二设备602的第一数据的总字节数量m;判断所述m是否为所述m的整数倍;如果否,则确定d字节个数据,将所述d字节个数据填充至所述第一数据中的指定位置,所述d是根据以下公式确定的:d=m-(mmodm);其中,所述mod为取余运算符号;以所述m字节为划分单位,将填充数据后的第一数据划分成数据段。

基于图6所示实施例的一种具体实施方式中,所述第二设备602,具体用于获得待发送至所述第一设备601的第二数据的总字节数量m;判断所述m是否为所述m的整数倍;如果否,则确定d字节个数据,将所述d字节个数据填充至所述第二数据中的指定位置,所述d是根据以下公式确定的:d=m-(mmodm);其中,所述mod为取余运算符号;以所述m字节为划分单位,将填充数据后的第二数据划分成数据段。

基于图6所示实施例的一种具体实施方式中,所述第一设备601,具体用于以所述m字节为划分单位,将第二加密结果划分成数据段;从所述第四密钥的第一部分中确定与每一个数据段中的各个字节数据对应的移位因子,从所述第四密钥的第二部分中确定与每一个数据段中的各个字节数据对应的异或因子;根据确定的移位因子和异或因子,对每一个数据段中对应的各个字节数据进行移位处理和异或处理,获得各个处理后的数据段;按照预设排列顺序,对各个处理后的数据段进行排序,获得第二数据。

基于图6所示实施例的一种具体实施方式中,所述第二设备602,具体用于以所述m字节为划分单位,将第一加密结果划分成数据段;从所述第一密钥的第一部分中确定与每一个数据段中的各个字节数据对应的移位因子,从所述第一密钥的第二部分中确定与每一个数据段中的各个字节数据对应的异或因子;根据确定的移位因子和异或因子,对每一个数据段中对应的各个字节数据进行移位处理和异或处理,获得各个处理后的数据段;按照预设排列顺序,对各个处理后的数据段进行排序,获得第一数据。

由上述内容可见,在本实施例提供的方案中,第一设备用于进行数据加密、数据解密的密钥,是从对端的第二设备处获得的,并不是人工预先内置在第一设备内部的,这样可以避免相关人员将密钥泄露出去。而且,第一设备获得的密钥是第二设备临时确定的密钥,并不是固定不变的密钥,因此第一设备获得的密钥相比于固定的密钥安全性更高。在第一设备从第二设备处获得密钥的过程中,所发送的密钥经过两次加密和两次解密过程最终由第一设备获得,该过程中所发送的数据均是经过加密的,并不是通过明文发送的,其安全性更高。因此,应用本实施例提供的方案来获得用于数据加密、数据解密的密钥,能够提高通信过程中数据的安全性。

对于系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本领域普通技术人员可以理解,上述实施方式中的全部或部分步骤是能够通过程序指令相关的硬件来完成的,所述的程序可以存储于计算机可读取存储介质中。这里所称存储介质,是指rom/ram、磁碟、光盘等。

以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本申请的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1