一种分组模式加密方法、解密方法及其装置、设备与流程

文档序号:30918075发布日期:2022-07-29 22:27阅读:253来源:国知局
一种分组模式加密方法、解密方法及其装置、设备与流程

1.本发明涉及信息保护技术领域,特别涉及一种分组模式加密方法、解密方法及其装置、设备。


背景技术:

2.目前,在信息技术领域中,有大量的信息数据需要传输及保存,而数据加密是计算机系统对信息进行保护的一种最可靠的办法,它利用密码技术对信息进行加密,提高了信息系统及数据的安全性和保密性,防止秘密数据被外部破译,实现信息隐蔽,从而起到保护信息的安全的作用。
3.在实际应用中,对数据库中的信用卡号、身份证号等敏感数据进行加密是非常必要的,然而使用传统的分组密码通常会扩展数据,使数据长度和类型发生变化,需要修改数据库结构或应用程序来适应这些变化,成本非常高。为了解决这类问题,因此,出现了加密后的密文和加密前的明文格式一致的加密算法,使得加密后的密文和加密前的明文的长度、字符类型一样的保留格式加密算法,也称为fpe(format-preserving encryption)算法。
4.但传统的分组加密算法的工作模式如ecb、cbc、pcbc、cfb、ofb、ctr等是对128比特的明文输入和128比特的加密密钥进行处理,生成128比特的密文输出,因此输入的明文及输出的密文都是属于二进制的,而保留格式加密算法需要保留原格式,而原明文的格式常常是多进制的,因此,不能保留格式加密算法不适用于传统的分组加密算法的工作模式。
5.且,传统的分组加密方式也存在一定的问题,如ctr模式将计数器加密后再与明文分组异或得到密文分组,但该种方式所产生的问题是,若随机产生的初始向量iv的数值过近,密文被破解的可能性会大大提高。如,第一次随机生成的初始向量iv的计数器的值为1000,若第二次产生的初始向量iv的计数器的值为1002,由于是计数器模式,那么,第一次产生的第三组的计数器为1002,与第二次产生的初向量iv的计数器的结果相同,因此,破译者可以通过将第一次第三组及以后的数据与第二次第一组及以后的数据进行对比,导致明文被破解的风险大大提高。
6.因此,如何针对保留格式加密算法设计出合理的分组工作模式对其加密,且即使随机产生的初始向量iv过近,也不易被破解,是一个需要解决的技术问题。


技术实现要素:

7.本发明实施例公开了一种分组模式加密方法、解密方法及其装置、设备,用于解决现有技术中采用分组模式加密时,无法保留原明文格式的技术问题,且即使随机产生的初始向量iv相近,也不易被破解,提高了加密的安全性。
8.第一方面,本发明实施例提供了一种分组加密方法,包括:
9.将待加密明文按分组长度n分成t组明文组;
10.获取初始向量iv,所述初始向量iv的长度与所述分组长度n相同,所述初始向量iv
与所述明文组属于同一字符集合;
11.根据所述初始向量iv及预设的扰码序列生成算法,生成扰码序列s={s0,s1,
……st
},所述预设的扰码序列生成算法使所述扰码序列s中的任一元素si及s0与所述分组长度n相同,所述任一元素si及s0与所述明文组属于同一字符集合;
12.迭代执行:根据所述扰码序列s中的元素s
i-1
,采用第一加密方式对所述第i组明文组pi加密,获得第i组明文组pi的加扰明文组pi`,采用第二加密方式,对所述第i组的加扰明文组pi`加密,获得密文组ci;
13.其中,1≤i≤t,所述t为所述待加密明文的明文组的数量,所述i为大于等于1的整数,所述n为大于等于1的整数,所述元素s
i-1
在所述扰码序列s中的编号i,与明文组序号i具有对应关系,所述第一加密方式与所述第二加密方式均采用保留格式加密算法,所述第一加密方式与所述第二加密方式彼此不同。
14.本发明实施例的技术方案,根据初始向量iv及预设的扰码序列生成算法单独生成有扰码序列,即使初始向量iv相近,所产生的扰码序列也大不相同,因此,即使随机生成的初始向量iv相近,破解者也无法通过对比此前已加密的密文方式来破解明文,且即使破解者获得了初始向量iv,但只要未获取扰码序列生成算法的情况下也无法破解,大大提高了加密的安全性,本发明实施例的分组模式加密方法,保留有原明文的格式及长度,适用于各种保留格式加密算法的场景,为保留格式加密算法的工作模式提供了一种新的方法,利于保留格式加密算法的推广。
15.在一些实施例中,所述根据所述初始向量iv及预设的扰码序列生成算法,生成扰码序列s,具体包括:
16.根据所述初始向量iv及获取的密钥k,采用预设的保留格式加密算法,确定所述扰码序列中的元素s0;
17.根据所述元素s0,采用保留格式加密算法确定元素si。
18.在一些实施例中,所述根据确定的元素s0,采用保留格式加密算法确定元素si,具体包括:
19.确定i等于1时,根据所述元素s0及所述密钥k,采用预设的保留格式加密算法,确定s1;
20.确定i为大于等于2的整数时,根据所述扰码序列s中的元素s
i-1
及元素s
i-2
,采用保留格式加密算法确定si。
21.本发明实施例的技术方案,根据初始向量iv及预设的扰码序列生成算法,生成扰码序列s,确保扰码序列中的每个元素与明文组的长度相同,与明文组属于同一字符集合,为后序的加密过程提供扰码用于加密,使得加密后的密文不易被破解,提高加密的安全性;且扰码序列中的每个元素与明文组的长度相同,与明文组属于同一字符集合,可应用于保留格式加密算法。
22.在一些实施例中,所述根据所述扰码序列s中的元素s
i-1
及元素s
i-2
,采用保留格式加密算法确定si,具体包括:
23.所述保留格式加密算法为字符模加运算,或字符模减运算;
24.所述字符模加运算符合以下公式:
25.y1=(a+b)%m,
26.所述字符模减运算符合以下公式:
27.y2=(a-b+m)%m,
28.其中,y1表示字符模加后的运算结果,y2表示字符模减后的运算结果,a、b属于同一字符集合中的任一字符,且表示参与运算的参数,m表示所述同一字符集合中字符的数量,%表示取m的余数;
29.确定所述保留格式加密算法为所述字符模加运算时,利用如下公式确定所述扰码序列中的元素si:
[0030][0031]
其中,所述符号表示字符模加运算;
[0032]
确定所述保留格式加密算法为所述字符模减运算时,利用如下公式确定所述扰码序列中的元素si:
[0033][0034]
其中,所述符号表示字符模减运算。
[0035]
在一些实施例中,所述采用保留格式加密算法确定si之后,还包括:
[0036]
获取密钥k,根据所述密钥k及保留格式加密算法,对所述元素si加密,获得加密元素si`。
[0037]
本发明实施例的技术方案,通过密钥k对产生的元素再次加密,使扰码序列中产生的元素值的结果不可预测,即使初始向量iv相近,生成的扰码序列也完全不同,增加扰码序列的混乱程度,进而使得后续加密过程所产生的加密结果变得不可预测,相对的提高了加密的安全性,破解难度大大提高。
[0038]
在一些实施例中,所述第一加密方式为字符模加运算,所述字符模加运算符合以下公式:
[0039]
y1=(a+b)%m,
[0040]
或,所述第一加密方式为字符模减运算,所述字符模减运算符合以下公式:
[0041]
y2=(a-b+m)%m,
[0042]
其中,y1表示字符模加后的运算结果,y2表示字符模减后的运算结果,a、b属于同一字符集合中的任一字符,且表示参与运算的参数,m表示所述同一字符集合中字符的数量,%表示取m的余数。
[0043]
在一些实施例中,所述根据所述扰码序列s中的元素s
i-1
,采用第一加密方式对所述第i组明文组pi加密,获得第i组明文组pi的加扰明文组pi`,具体包括:
[0044]
确定第一加密方式为字符模加时,所述加扰明文组pi`的生成方式符合以下公式:
[0045][0046]
其中,符号表示字符模加运算;
[0047]
确定第一加密方式为字符模减时,所述加扰明文组pi`的生成方式符合以下公式:
[0048][0049]
其中,符号表示字符模减运算。
[0050]
本发明的实施例,生成扰码序列过程与加密过程为并行的过程,不必等到所有扰
码序列中的元素si全部生成成功后才开始其加密,只需要确定所需要使用的扰码序列s中的元素si生成后即可以开始加密的流程,因此,提高了加密速度,相对的提高了加密的效率。
[0051]
在一些实施例中,所述采用第二加密方式,对所述第i组的加扰明文组pi`加密,获得密文组ci,具体包括:
[0052]
获取密钥k;
[0053]
根据所述密钥k及保留格式加密算法,对所述加扰明文组pi`加密,获得密文组ci。
[0054]
在一些实施例中,在获得密文组ci后,还包括:
[0055]
根据所述扰码序列s中的元素si,采用所述第一加密方式对所述第i组密文组ci加密,获得加扰密文组ci`。
[0056]
本发明实施例的技术方案,利用生成的扰码序列,以字符模加或字符模减的方式生成加扰的明文组,再以密钥的方式对加扰的明文组再次加密,生成密文组,再利用扰码序列,以字符模加或字符模减少的方式再次扰乱密文组得到最终的密文的三重加密形式,将明文完全打乱,可有效防止破译者从重复密文中探寻明文信息而被破解,且,即使破译者获得了密钥也无法破解其技术方案,大大提高了加密的安全性,为分组密码的保留格式加密提供了一种新的工作模式。
[0057]
第二方面,本发明实施例提供了一种分组解密方法,包括:
[0058]
获取待解密的密文长度s及分组长度n,确定分成t组密文组;
[0059]
获取初始向量iv,所述初始向量iv的长度与所述分组长度n相同,所述初始向量iv与所述明文组属于同一字符集合;
[0060]
根据所述初始向量iv及预设的扰码序列生成算法,生成扰码序列s={s0,s1,
……st
},所述预设的扰码序列生成算法使所述扰码序列s中的任一元素si及s0与所述分组长度n相同,所述任一元素si及s0与所述明文组属于同一字符集合;
[0061]
迭代执行:采用第二加密方式对应的解密方式,对所述第i组的密文组ci解密,获得解密后的第i组加扰明文组pi`,根据所述扰码序列s中的元素s
i-1
,采用第一加密方式对应的解密方式对所述第i组加扰明文组pi`解密,获得第i组的明文组pi;
[0062]
其中,1≤i≤t,所述t为所述待加密明文的明文组的数量,所述i为大于等于1的整数,所述n为大于等于1的整数,所述元素s
i-1
在所述扰码序列s中的编号i,与明文组序号i具有对应关系,所述第一加密方式与所述第二加密方式均采用格式保留加密算法,所述第一加密方式与所述第二加密方式彼此不同。
[0063]
本发明实施例的技术方案,根据获取的密文长度s及分组长度n,根据t=s/n,确定分成t组密文组,计算得到的t为小数而非整数时,确定可能待解密的密文的数据被破坏,或是其它原因导致接收的待解密数据丢失而不必再解密,相对在一定程度上侧面的验证了数据的完整性,节省了因数据丢失而导致解密失败而产生的资源浪费,且本发明实施例的技术方案,解密时间短,不受待加密字符长短的限制,即使待解密的数据较多较长,解密的时间和速度依然不受影响,适用场景广泛,利于保留加密算法的推广。
[0064]
在一些实施例中,所述根据所述初始向量iv及预设的扰码序列生成算法,生成扰码序列s,具体包括:
[0065]
根据所述初始向量iv及获取的密钥k,采用保留格式加密算法,确定所述扰码序列
中的元素s0;
[0066]
根据所述元素s0,采用保留格式加密算法确定元素si。
[0067]
在一些实施例中,所述根据确定的元素s0,采用保留格式加密算法确定元素si,具体包括:
[0068]
确定i等于1时,根据所述元素s0及所述密钥k,采用预设的保留格式加密算法,确定s1;
[0069]
确定i为大于等于2的整数时,根据所述扰码序列s中的元素s
i-1
及元素s
i-2
,采用格式保留加密算法确定si。
[0070]
在一些实施例中,所述根据所述扰码序列s中的元素s
i-1
及元素s
i-2
,采用格式保留加密算法确定si,具体包括:
[0071]
所述保留格式加密算法为字符模加运算,或字符模减运算;
[0072]
所述字符模加运算符合以下公式:
[0073]
y1=(a+b)%m,
[0074]
所述字符模减运算符合以下公式:
[0075]
y2=(a-b+m)%m,
[0076]
其中,y1表示字符模加后的运算结果,y2表示字符模减后的运算结果,a、b属于同一字符集合中的任一字符,且表示参与运算的参数,m表示所述同一字符集合中字符的数量,%表示取m的余数;
[0077]
确定所述保留格式加密算法为所述字符模加运算时,利用如下公式确定所述扰码序列中的元素si:
[0078][0079]
其中,所述符号表示字符模加运算;
[0080]
确定所述保留格式加密算法为所述字符模减运算时,利用如下公式确定所述扰码序列中的元素si:
[0081][0082]
其中,所述符号表示字符模减运算。
[0083]
在一些实施例中,所述采用保留格式加密算法确定si之后,还包括:
[0084]
获取密钥k,根据所述密钥k及保留格式加密算法,对所述元素si加密,获得加密元素si`。
[0085]
在一些实施例中,确定所述第一加密方式为字符模加运算时,所述第一加密方式对应的解密方式为字符模减运算,确定所述第一加密方式为字符模减运算时,所述第一加密方式对应的解密方式为字符模加运算;
[0086]
所述字符模加运算符合以下公式:
[0087]
y1=(a+b)%m,
[0088]
所述字符模减运算符合以下公式:
[0089]
y2=(a-b+m)%m,
[0090]
其中,y1表示字符模加后的运算结果,y2表示字符模减后的运算结果,a、b属于同一字符集合中的任一字符,且表示参与运算的参数,m表示所述同一字符集合中字符的数
量,%表示取m的余数。
[0091]
在一些实施例中,所述根据所述扰码序列s中的元素s
i-1
,采用第一加密方式对应的解密方式对所述第i组加扰明文组pi`解密,获得第i组的明文组pi,具体包括:
[0092]
确定第一加密方式为字符模加时,利用如下公式确定第i组的明文组pi:
[0093][0094]
其中,符号表示字符模减运算;
[0095]
确定第一加密方式为字符模减时,利用如下公式确定第i组的明文组pi:
[0096][0097]
其中,符号表示字符模加运算。
[0098]
本发明实施例的技术方案,解密过程与生成扰码序列过程为并行的过程,即在获得了扰码序列中的所需元素si以后,就可以对当前密文分组ci开始解密,而不必等到所有扰码序列中的元素si全部生成成功后才开始其解密过程,解密速度快。
[0099]
在一些实施例中,所述采用第二加密方式对应的解密方式,对所述第i组的密文组ci解密,获得解密后的第i组加扰明文组pi`,具体包括:
[0100]
获取密钥k;
[0101]
根据所述密钥k及保留格式加密算法,对所述第i组的密文组ci解密,获得解密后的第i组加扰明文组pi`。
[0102]
在一些实施例中,在所述采用第二加密方式对应的解密方式,对所述第i组的密文组ci解密之前,还包括:
[0103]
根据所述扰码序列s中的元素si,采用所述第一加密方式对所述第i组密文组ci解密。
[0104]
第三方面,本发明实施例还提供了一种数据加密装置,所述装置包括:
[0105]
初始化模块,用于将待加密明文按分组长度n分成t组明文组;
[0106]
加扰模块,用于获取初始向量iv,所述初始向量iv的长度与所述分组长度n相同,所述初始向量iv与所述明文组属于同一字符集合;还用于,根据所述初始向量iv及预设的扰码序列生成算法,生成扰码序列s={s0,s1,
……st
},所述预设的扰码序列生成算法使所述扰码序列s中的任一元素si及s0与所述分组长度n相同,所述任一元素si及s0与所述明文组属于同一字符集合;
[0107]
加密模块,用于迭代执行:根据所述扰码序列s中的元素s
i-1
,采用第一加密方式对所述第i组明文组pi加密,获得第i组明文组pi的加扰明文组pi`,采用第二加密方式,对所述第i组的加扰明文组pi`加密,获得密文组ci;
[0108]
其中,1≤i≤t,所述t为所述待加密明文的明文组的数量,所述i为大于等于1的整数,所述n为大于等于1的整数,所述元素s
i-1
在所述扰码序列s中的编号i,与明文组序号i具有对应关系,所述第一加密方式与所述第二加密方式均采用保留格式加密算法,所述第一加密方式与所述第二加密方式彼此不同。
[0109]
第四方面,本发明实施例提供了一种解密装置,所述装置包括:
[0110]
初始化模块:用于获取待解密的密文长度s及分组长度n,确定分成t组密文组;
[0111]
加扰模块:用于获取初始向量iv,所述初始向量iv的长度与所述分组长度n相同,
所述初始向量iv与所述明文组属于同一字符集合;还用于,根据所述初始向量iv及预设的扰码序列生成算法,生成扰码序列s={s0,s1,
……st
},所述预设的扰码序列生成算法使所述扰码序列s中的任一元素si及s0与所述分组长度n相同,所述任一元素si及s0与所述明文组属于同一字符集合;
[0112]
解密模块:用于迭代执行:采用第二加密方式对应的解密方式,对所述第i组的密文组ci解密,获得解密后的第i组加扰明文组pi`,根据所述扰码序列s中的元素s
i-1
,采用第一加密方式对应的解密方式对所述第i组加扰明文组pi`解密,获得第i组的明文组pi;
[0113]
其中,1≤i≤t,所述t为所述待加密明文的明文组的数量,所述i为大于等于1的整数,所述n为大于等于1的整数,所述元素s
i-1
在所述扰码序列s中的编号i,与明文组序号i具有对应关系,所述第一加密方式与所述第二加密方式均采用格式保留加密算法,所述第一加密方式与所述第二加密方式彼此不同。
[0114]
第五方面,本发明实施例提供了一种数据加密设备,所述设备包括:处理器和存储器;所述处理器用于调用所述存储器中存储的程序,当所述程序被执行时,使得处理器执行上述第一方面中任一项所述的方法。
[0115]
第六方面,本发明实施例提供了一种数据解密设备,所述设备包括:处理器和存储器;所述处理器用于调用所述存储器中存储的程序,当所述程序被执行时,使得处理器执行第二方面中任一项所述的方法。
[0116]
第七方面,本发明实施例提供了一种计算机存储介质,存储有计算机程序,该计算机程序包括用于执行上述第一方面任一项所述的方法,和/或,上述第二方面中任一项所述的方法。
[0117]
本发明实施例的技术方案,根据初始向量iv及预设的扰码序列生成算法单独生成有扰码序列,即使初始向量iv相近,所产生的扰码序列也大不相同,因此,即使随机生成的初始向量iv相近,破解者也无法通过对比此前已加密的密文方式来破解明文,且即使破解者获得了初始向量iv,但只要未获取扰码序列生成算法的情况下也无法破解,大大提高了加密的安全性,且,本发明实施例,不受待加密字符长短的限制,即使待加密的数据较多较长,其加密的时间和速度依然快速,本发明实施例的分组模式加密方法,保留有原明文的格式及长度,适用于各种保留格式加密算法的场景,为保留格式加密算法的工作模式提供了一种新的方法,利于保留格式加密算法的推广。
附图说明
[0118]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0119]
图1为本发明实施例提供的一种分组加密方法流程图;
[0120]
图2为本发明实施例提供的一种扰码序列生成过程示意图;
[0121]
图3为本发明实施例提供的另一种扰码序列生成过程示意图;
[0122]
图4为本发明实施例提供的一种分组加密方法过程示意图;
[0123]
图5为本发明实施例提供的另一种分组加密方法过程示意图;
[0124]
图6为本发明实施例提供的一种分组解密方法流程图;
[0125]
图7为本发明实施例提供的一种分组解密方法过程示意图;
[0126]
图8为本发明实施例提供的另一种分组解密方法过程示意图;
[0127]
图9为本发明实施例提供的一种数据加密装置示意图;
[0128]
图10为本发明实施例提供的一种数据解密装置示意图;
[0129]
图11为本发明实施例提供的一种数据加密设备示意框图;
[0130]
图12为本发明实施例提供的一种数据解密设备示意框图。
具体实施方式
[0131]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0132]
需要理解的是,在本发明实施例的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
[0133]
本发明实施例中的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
[0134]
目前,在信息技术领域中,有大量的信息数据需要传输及保存,而数据加密是计算机系统对信息进行保护的一种最可靠的办法,它利用密码技术对信息进行加密,提高了信息系统及数据的安全性和保密性,防止秘密数据被外部破译,实现信息隐蔽,从而起到保护信息的安全的作用。
[0135]
在实际应用中,对数据库中的信用卡号、身份证号等敏感数据进行加密是非常必要的,然而使用传统的分组密码通常会扩展数据,使数据长度和类型发送变化,需要修改数据库结构或应用程序来适应这些变化,成本非常高。为了解决这类问题,因此,出现了加密后的密文和加密前的明文格式一致的加密算法,使得加密后的密文和加密前的明文的长度、字符类型一样的保留格式加密算法,也称为fpe(format-preserving encryption)算法。
[0136]
采用该种算法,要求加密后的数据不被扩充,例如当加密n位的数字时,须输出另外一个n位的数字,且,数据类型不可以被改变,例如一个只包含数字的串加密后输出的串也只能是数字,再有,数据需要被确定性的加密并能解密,例如对于数据库中作为主键或者索引字段的数据,被加密后将保留其所在的列作为主键或者索引的特性。
[0137]
分组加密方式,又称为块加密,通过将明文分组成块,一次加密一个明文分组块得到加密的密文,但实际情况往往是明文的长度会远超过密码分组的长度,因此需要对分组加密算法进行迭代,才能将明文全部加密,采用的迭代方法就是分组加密算法的加密工作模式。
[0138]
但传统的分组加密算法的工作模式如ecb、cbc、pcbc、cfb、ofb、ctr等是对n比特的明文输入和l比特的加密密钥进行处理,生成s长度的密文输出,因此输入的明文及输出的密文都是属于二进制的,而保留格式加密算法需要保留原格式,而原明文的格式常常是多
进制的,如生活中常用的金额、数字是十进制的,常用的英文字母是二十六进制的,而对于公民的身份证号来说,除了十位数字还有x字母,是属于十一进制的,因此,对于保留格式加密算法来说,大多数情况下无法采用传统的分组加密工作模式对其加密。
[0139]
且,传统的分组加密方式也存在一定的问题,如ctr模式将计数器加密后再与明文分组异或得到密文分组,但该种方式所产生的问题是,若随机产生的初始向量iv的数值过近,密文被破解的可能性会大大提高。如,第一次随机生成的初始向量iv的计数器的值为1000,若第二次产生的初始向量iv的计数器的值为1002,由于是计数器模式,那么,第一次产生的第三组的计数器为1002,与第二次产生的初向量iv的计数器的结果相同,因此,破译者可以通过将第一次第三组及后的数据与第二次第一组及以后的数据进行对比,导致明文被破解的风险大大提高。
[0140]
因此,如何针对保留格式加密算法设计出合理的分组工作模式对其加密,且即使随机产生的初始向量iv过近,也不易被破解,是一个需要解决的技术问题。
[0141]
为解决上述技术问题,本发明提供了一种分组加密方法,可用于保留格式加密算法的分组工作模式,适用于长字符加密,比如字符串形式的加密。
[0142]
(1)加密/解密
[0143]
出于信息保密的目的,在信息传输或存储中,采用密码技术对需要保密的信息进行处理,使得处理后的信息不能被非授权者(含非法者)读懂或解读,这一过程被称为加密。在加密处理过程中,需要保密的信息称为“明文”,经加密处理后的信息称为“密文”。加密即是将“明文”变为“密文”的过程;与此类似,将“密文”变为“明文”的过程被称为解密。
[0144]
加密/解密的过程可以由算法来控制,也可以在每种情况下由一个或多个密钥控制。在实际应用场景中,需要通过加密的方式以保护敏感的数据用于传输或保存,比如身份证号、交易的价格等。
[0145]
(2)保留格式加密
[0146]
在密码学中,保留格式加密(fpe)是指使得输出(密文)与输入(明文)具有相同格式、相同长度的加密方式。
[0147]
在很多情况下,比如在支付系统、或需要保存敏感信息的数据库中使用时,需要采用格式保留加的方式,需要密文具有与原始明文相同的长度和格式。
[0148]
(3)字符模加
[0149]
定义一个字符集合并按顺序排列,字符集合中包含当前明文中可以显示所有字符,如现在常用的10进制的字符集合,是将数字0-9的10个字符按顺序排列,形成的一个字符集合,即集合{0,1,2,3,4,5,6,7,8,9}为一个10进制的字符集合,也可以定义以二十六个英文字母为序列的二十六进制的字符集合。
[0150]
且,该集合可以根据需要自行定义,如身份证号中,除了数字,还有英文字母x,那么,可以定义一个11进制的集合为{0,1,2,3,4,5,6,7,8,9,x},作为用于标识身份证号的字符集合。在实际中,可以根据需要自行定义集合的内容及集合的大小,可以超过256个符号的限制。
[0151]
m代表当前集合中的字符数量,也可以理解为进制,如集合{0,1,2,3,4,5,6,7,8,9}中具有10个字符,那么m为10,也可以理解为该集合是一个10进制的字符集合;如上述身份证号的集合,该集合中具有11个字符,即该集合是一个11进制的集合。
[0152]
字符模加运算符合以下公式:
[0153]
y1=(a+b)%m,
[0154]
其中,y1表示字符模加后的运算结果,a、b属于同一字符集合中的任一字符,且表示参与运算的参数,m表示所述字符集合中字符的数量,%表示取余数。
[0155]
可以理解为,根据当前字符在当前集合中所在的位置信息确定参与运算的参数,即参与运算的参数为当前字符所在集合中的位置信息,该集合的位置信息为从0开始到m-1,与集合中按顺序排列的m个字符一一对应,将集合中字符的所在位置作为参与运算的数字,进行加法运算,获得结果后取当前集合字符数量m的余数作为字符模加的结果,根据结果确定当前字符集合所在的位置信息所代表的字符,该字符即为字符模加后的结果。
[0156]
通过示例来说明字符模加的操作。
[0157]
以10进制的集合为例,即集合{0,1,2,3,4,5,6,7,8,9}为一个10进制的字符集合,将该集合中字符所在的位置信息与当前的数字字符是一一对应的,即字符0的位置信息为0,字符1的位置信息为1,当字符5与6做字符模加的运算的过程为:
[0158]
确定字符5所在的位置信息为5,字符6所在的位置信息为6;
[0159]
字符5与字符6的字符模加运算为(5+6)%10=11%10=1,确定的位置信息为1;
[0160]
在该集合中位置为1所代表的字符数字为1,那么,对于10进制的集合,字符5与字符6进行字符模加后的结果为1。
[0161]
也可以理解为,将数字0到m-1之间的数字,与集合中的字符形成一一对应的关系,根据其对应的关系进行运算,根据运算后的结果确定所在位置对应的字符,如26进制的字符集合中字符与位置对应关系可以如下表表1所示。
[0162]
表1字符与位置关系参考对照表
[0163][0164]
若字符f与字符x进行字符模加的运算,其过程为:
[0165]
确定字符f的位置信息为5,字符x的位置信息为23;
[0166]
字符f与字符x的字符模加运算为:(5+23)%26=28%26=2;
[0167]
确定位置2所对应的字符为c;
[0168]
字符f与字符x字符模加后的结果为c。
[0169]
(4)字符模减
[0170]
字符模减是与字符模加相对应的运算,字符模减运算符合以下公式:
[0171]
y2=(a-b+m)%m,
[0172]
其中,y2表示字符模减后的运算结果,a、b属于同一字符集合中的任一字符,且表示参与运算的参数,m表示所述字符集合中字符的数量,%表示取余数。
[0173]
字符模减与字符模加相较,其运算公式不同,其它有关字符集合的定义、字符所在集合中位置的确定、进制的确定、运算的参数确定等,均与字符模加相同,此处不再重复解释,只针对与字符模加的不同之处进行说明。
[0174]
字符模减的公式与字符模加不同是,通过确定字符所在集合中位置信息后,将位
置信息作为参与运算的数字,进行减法运算,再与当前集合的字符数量m进行加法运算,获得结果后取当前集合字符数量m的余数作为字符模减的结果,根据结果确定当前字符集合所在的位置信息所代表的字符,该字符即为字符模减后的结果。
[0175]
在减法运算后,再与当前集合的字符数量m进行加法运算,是因为字符a所在的位置信息与字符b所在的位置信息进行减法运算后,可能会产生负值,因此,需要将减法运算产生的运算结果再与当前集合的字符数量m进行加法运算,该种方式可以使得当前的字符位置计算结果为正值,再与m进行取余数的运算来确定当前字符集合所在的位置信息所代表的字符;若字符a所在的位置信息与字符b所在的位置信息进行减法运算所产生的结果为正值,那么,即使与当前集合的字符数量m进行加法运算,根据取余数的运算规则,增加的m,等同于m与m取余数,结果为0,不影响字符a所在的位置信息与字符b所在的位置信息进行减法的运算结果。
[0176]
下面以上述实施例中26进制的字符集合为例进行说明,相关字符集合的说明及所在位置信息的含义请见上述实施例,此处仅叙述字符模减的运算过程。
[0177]
若字符c与字符x进行字符模减的运算,其过程为:
[0178]
确定字符c的位置信息为2,字符x的位置信息为23;
[0179]
字符c与字符x的字符模减运算为:(2-23+26)%26=(-21+26)%26=5%26=5;
[0180]
确定位置5所对应的字符为f;
[0181]
字符c与x字符模减后的结果为f。
[0182]
再如,字符f与字符c进行字符模减的运算,其过程为:
[0183]
确定字符f的位置信息为5,字符c的位置信息为2;
[0184]
字符f与字符c的字符模减运算为:(5-2+26)%26=(3+26)%26=29%26=3;
[0185]
上述运算也可以理解为(5-2+26)%26=(3+26)%26=3%26+26%26=3+0=3;
[0186]
确定位置3所对应的字符为d;
[0187]
字符f与c字符模减后的结果为d。
[0188]
该计算过程与上述字符模加的过程为相应的计算过程,通过上述实施例可知,字符f与字符x的字符模加后的结果为c,可以简单的理解为f+x=c,根据上述字符模减的运算过程及结果,可以简单的理解为f=c-x,从中可以看出,字符模加与字符模减为相对应的互逆运算。
[0189]
本发明实施例提供了一种分组加密方法,包括:
[0190]
将待加密明文按分组长度n分成t组明文组;
[0191]
获取初始向量iv,初始向量iv的长度与分组长度n相同,初始向量iv与明文组属于同一字符集合;
[0192]
根据初始向量iv及预设的扰码序列生成算法,生成扰码序列s={s0,s1,
……st
},预设的扰码序列生成算法使扰码序列s中的任一元素si及s0与分组长度n相同,任一元素si及s0与明文组属于同一字符集合;
[0193]
迭代执行:根据扰码序列s中的元素s
i-1
,采用第一加密方式对第i组明文组pi加密,获得第i组明文组pi的加扰明文组pi`,采用第二加密方式,对第i组的加扰明文组pi`加密,获得密文组ci;
[0194]
其中,1≤i≤t,t为待加密明文的明文组的数量,i为大于等于1的整数,n为大于等
于1的整数,元素s
i-1
在扰码序列s中的编号i,与明文组序号i具有对应关系,第一加密方式与第二加密方式均采用保留格式加密算法,第一加密方式与第二加密方式彼此不同。
[0195]
以下通过具体实施例对本发明进行进一步的详细说明,图为本发明实施例所提供的一种分组加密方法,见图1所示。
[0196]
s101:将待加密明文按分组长度n分成t组明文组;其中,n为大于等于1的整数,t为待加密明文的明文组的数量。
[0197]
获取待加密明文的方式不限,可以为通过网络接收,也可以从数据库中获取相关的数据,或根据需要由第三方发来的待加密的明文。
[0198]
需要说明的是,按分组长度n划分明文而形成的明文组,无法确保最后一组的明文正好为一个分组长度n,因此,本技术的技术方案需要在最后一组明文中补足满足分组长度n的字符,即需要补位,补位的方式同现有的ecb工作模式、cbc工作模式的补位方式相同,为现有技术中的补位方式,本领域的技术人员可以根据ecb工作模式、cbc工作模式来实现本技术所要实现的补位,由于补位的技术方案并不是本技术所要保护的发明点,在不影响本技术技术方案的前提下,本技术定义根据待加密明文按分组长度n分成t个明文组,若分成t个明文组的最后一组不满足分组长度n,则根据现有的技术方案,对最后一组分组进行补位,以获得按分组长度n分成的t个明文组,t为待加密明文的明文组的数量,n为大于等于1的整数,t为待加密明文的明文组的数量。
[0199]
s102:获取初始向量iv;初始向量iv的长度与分组长度n相同,初始向量iv与明文组属于同一字符集合;
[0200]
获取初始向量iv的方式不限,可以从网络端接收,也可以从待加密的明文中确定,也可以为事先约定的值,还可以为默认值,此处不进行限定。
[0201]
初始向量iv的长度与分组长度n相同,初始向量iv与明文组属于同一字符集合。
[0202]
也可以为,根据获取的中间参数f,来获得初始向量iv,获得初始向量iv的方式不进行限定,可以采用各种方式将参数f转化为满足当前要求的初始向量iv,比如,可以采用进制转换的形式,将获得的参数f转化为初始向量iv,若不足分组长度n则高位补0,若超出分组长度n位则截取最低的n位,确保初始向量iv的长度与分组长度n相同,与明文组属于同一字符集合即可。若中间参数f的长度与分组长度n相同,与明文组属于同一字符集合,那么,初始向量iv可以与参数f相同。再如,可以通过函数转换的形式,以参数f为输入,输出的函数的结果为初始向量iv,当前的函数的功能即可以实现使得输出的结果的长度与分组长度n相同,与明文组属于同一字符集合。本领域的技术人员可以根据当前的实际需要,设置根据获取的参数f,获得初始向量iv。
[0203]
s103:根据初始向量iv及预设的扰码序列生成算法,生成扰码序列s={s0,s1,
……st
},预设的扰码序列生成算法使扰码序列s中的任一元素si及s0与分组长度n相同,任一元素si及s0与明文组属于同一字符集合。
[0204]
在获得初始向量iv后,根据初始向量iv,及预设的扰码序列生成算法,生成扰码序列,对于扰码序列的生成方式,本领域技术人员可以根据实际需求自行定义,比如,在初始向量iv的基础上,以初始向量iv为基准,等比例的累加而获得其扰码序列,也可以根据需要,设置合理的函数,以初始向量iv为输入,并以当前函数的输出为输入而获得一系列的序列结果,根据其函数生成的结果来确定扰码序列,只要扰码的序列中的任一元素si及s0与分
组长度n相同,与明文组属于同一字符集合即可,此处不对生成扰码序列的过程方式进行限定。
[0205]
s104:迭代执行:根据扰码序列s中的元素s
i-1
,采用第一加密方式对第i组明文组pi加密,获得第i组明文组pi的加扰明文组pi`,采用第二加密方式,对第i组的加扰明文组pi`加密,获得密文组ci;其中,1≤i≤t,t为待加密明文的明文组的数量,i为大于等于1的整数,n为大于等于1的整数,元素s
i-1
在扰码序列s中的编号i,与明文组序号i具有对应关系,第一加密方式与第二加密方式均采用保留格式加密算法,第一加密方式与第二加密方式彼此不同。
[0206]
根据扰码序列s中的元素s
i-1
,采用第一加密方式对第i组明文组pi加密,获得第i组明文组pi的加扰明文组pi`,元素s
i-1
与明文组的分组长度n相同,与明文组属于同一字符集合,而第一加密方式为保留格式加密算法,因此,获得的加扰明文组pi`与明文组pi的分组长度n相同,并与明文组pi属于同一字符集合,再采用第二加密方式,对第i组的加扰明文组pi`加密,获得密文组ci,而第二加密方式为保留格式加密算法,因此,获得的密文组ci与原明文组pi的分组长度n相同,与明文组属于同一字符集合,因此,实现了对当前的明文组的加密,并保留了原格式。
[0207]
本发明实施例的技术方案,根据初始向量iv及预设的扰码序列生成算法单独生成有扰码序列,即使初始向量iv相近,所产生的扰码序列也大不相同,因此,即使随机生成的初始向量iv相近,破解者也无法通过对比此前已加密的密文方式来破解明文,且即使破解者获得了初始向量iv,但只要未获取扰码序列生成算法的情况下也无法破解,大大提高了加密的安全性,且,本发明实施例,不受待加密字符长短的限制,即使待加密的数据较多较长,其加密的时间和速度依然快速,本发明实施例的分组模式加密方法,保留有原明文的格式及长度,适用于各种保留格式加密算法的场景,为保留格式加密算法的工作模式提供了一种新的方法,利于保留格式加密算法的推广。
[0208]
可选的,作为其中一种实施例,根据初始向量iv及预设的扰码序列生成算法,生成扰码序列s,具体包括:
[0209]
根据初始向量iv及获取的密钥k,采用预设的保留格式加密算法,确定扰码序列中的元素s0;
[0210]
根据元素s0,采用保留格式加密算法确定元素si。
[0211]
以下通过具体实施例来进行说明,见附图2所示,附图2为扰码序列生成过程示意图。
[0212]
为了更好的说明本发明的实施例,现约定fpenc(pi,k)表示用密钥k以保留格式加密算法将明文组pi加密,保留格式加密算法比较基础的有prefix、cycle-walking、generalized-feistel,也可以采用ff1、ff3-1等,此处不进行限制,只要属于保留格式加密算法即可,此处不进行限定。
[0213]
根据初始向量iv及获取的密钥k,采用预设的保留格式加密算法,确定扰码序列中的元素s0,即s0=fpenc(iv,k)。
[0214]
当确定元素s0后,采用保留格式加密算法确定元素si,采用的保留格式加密算法可以与上述的技术方案相同,也可以不同,如在确定元素s0后,可以以s0为基准,成生等差数列,或是以s0为基准,采用递增或递减函数的输出作为其后的序列的数值,此处不进行限
定,只要确定以元素s0为基础,使得生成的扰码序列s中的元素si(1≤i≤t)的值,与明文组的分组长度n相同,并与明文组pi属于同一字符集合即可。
[0215]
可选的,作为其中一种实施例,根据确定的元素s0,采用保留格式加密算法确定元素si,具体包括:
[0216]
确定i等于1时,根据元素s0及密钥k,采用预设的保留格式加密算法,确定s1;
[0217]
确定i为大于等于2的整数时,根据扰码序列s中的元素s
i-1
及元素s
i-2
,采用保留格式加密算法确定si。
[0218]
以下通过具体实施例进行说明,参见附图2。
[0219]
在确定了s0以后,当i等于1时,根据元素s0及密钥k,采用预设的保留格式加密算法,确定s1,也可以理解为s1=fpenc(s0,k),生成s0的密钥和生成s1的密钥k,可以相同,也可以不同,本领域的技术人员可以根据实际需要进行设置。
[0220]
确定i为大于等于2的整数时,根据扰码序列s中的元素s
i-1
及元素s
i-2
,采用保留格式加密算法确定si。即,当确定s0及s1后,可以根据需要设置保留格式加密算法来确定下一元素的值,如s2可以为s0与s1进行了字符模加运算或字符模减运算而获得的,也可以将s0与s1进行二进制转换,异或运算后再转换为原进制位并作为密钥,以s1为基础进行保留格式的加密而获得的,如s2=fpenc(s1,(s
0 xor s1)),当i为大于等于2的整数时,在生成元素si时利用扰码序列s中的元素s
i-1
及元素s
i-2
,采用保留格式加密算法来生成si即可。
[0221]
本发明实施例的技术方案,根据初始向量iv及预设的扰码序列生成算法,生成扰码序列s,确保扰码序列中的每个元素与明文组的长度相同,与明文组属于同一字符集合,为后序的加密过程提供扰码用于加密,使得加密后的密文不易被破解,提高加密的安全性;且扰码序列中的每个元素与明文组的长度相同,与明文组属于同一字符集合,可应用于保留格式加密算法。
[0222]
可选的,作为其中一种实施例,根据扰码序列s中的元素s
i-1
及元素s
i-2
,采用保留格式加密算法确定si,具体包括:
[0223]
保留格式加密算法为字符模加运算,或字符模减运算;
[0224]
字符模加运算符合以下公式:
[0225]
y1=(a+b)%m,
[0226]
字符模减运算符合以下公式:
[0227]
y2=(a-b+m)%m,
[0228]
其中,y1表示字符模加后的运算结果,y2表示字符模减后的运算结果,a、b属于同一字符集合中的任一字符,且表示参与运算的参数,m表示同一字符集合中字符的数量,%表示取m的余数;
[0229]
确定保留格式加密算法为字符模加运算时,利用如下公式确定扰码序列中的元素si:
[0230][0231]
其中,符号表示字符模加运算;
[0232]
确定保留格式加密算法为字符模减运算时,利用如下公式确定扰码序列中的元素si:
[0233][0234]
其中,符号表示字符模减运算。
[0235]
以下通过具体实施例进行说明。
[0236]
见图2所示。
[0237]
设,当前的明文分组长度为5,明文字符为十进制的数字,生成的s0为15494,生成的s1为21521,那么,若保留格式加密算法为字符模加运算时,确定为21521,那么,若保留格式加密算法为字符模加运算时,确定
[0238]
因此,在确定s0和s1之后,当i大于等于2时,确定的s2=36915,s3=57436,s4=83341。
[0239]
可选的,作为其中一种实施例,在利用公式确定扰码序列中的元素si之后,还包括:
[0240]
根据密钥k及保留格式加密算法,对元素si再次加密。
[0241]
以下通过具体实施例进行说明,见图3所示,图3为本发明实施例提供的另一种扰码序列s的生成过程示意图。
[0242]
以上述实施例为例,在确定s2=36915之后,根据密钥k,及保留格式加密算法,对元素s2加密,即s2=fpenc(s2,k),设对s2采用保留格式加密算法及密钥k加密后,获得的s2为41367,那么,最终,s2的值为41367,即的值为41367,即之后s3、s4采用类似的处理方式,因此,s3、s4的值同样会发生变化,即
[0243]
本发明实施例的技术方案,通过密钥k对产生的元素再次加密,使扰码序列中产生的元素值的结果不可预测,即使初始向量iv相近,生成的扰码序列也完全不同,增加扰码序列的混乱程度,进而使得后续加密过程所产生的加密结果变得不可预测,相对的提高了加密的安全性,破解难度大大提高。
[0244]
可选的,作为其中一种实施例,第一加密方式为字符模加运算,字符模加运算符合以下公式:
[0245]
y1=(a+b)%m,
[0246]
或,第一加密方式为字符模减运算,字符模减运算符合以下公式:
[0247]
y2=(a-b+m)%m,
[0248]
其中,y1表示字符模加后的运算结果,y2表示字符模减后的运算结果,a、b属于同一字符集合中的任一字符,且表示参与运算的参数,m表示同一字符集合中字符的数量,%表示取m的余数。
[0249]
根据扰码序列s中的元素s
i-1
,采用第一加密方式对第i组明文组pi加密,获得第i组明文组pi的加扰明文组pi`,具体包括:
[0250]
确定第一加密方式为字符模加时,加扰明文组pi`的生成方式符合以下公式:
[0251][0252]
其中,符号表示字符模加运算;
[0253]
确定第一加密方式为字符模减时,加扰明文组pi`的生成方式符合以下公式:
[0254][0255]
其中,符号表示字符模减运算。
[0256]
以下通过具体实施例进行说明,具体见附图4所示。
[0257]
本技术以第一加密方式为字符模加运算为例进行的说明,若第一加密方式为字符模减也是基于类似过程,仅是加密方式的不同。
[0258]
如图4所示,本发明实施例是以在获得扰码序列后进行的叙述,生成扰码序列s的过程可参见上述实施列,此处不再叙述。需要说明的是,生成扰码序列s的过程与当前对明文分组加密的过程两者是并行的进行的过程,即两者可以同时进行。如,为了加快加密速度,在接收到初始向量iv后即可以生成扰码序列s,不必等到接收到所有的待加密明文后再才开始进行上述进程,若接收到待加密的明文后,也不必等到扰码序列s全部生成完毕后才开始加密,而是只需要确定,所需要使用的扰码序列s中的元素si生成后即可以开始加密的流程。
[0259]
以本发明实施例说明,即在获得了扰码序列中的元素s0以后,就可以对当前明文分组p1开始加密的过程,不必等到所有扰码序列中的元素si全部生成成功后才开始其加密过程。
[0260]
当第一加密方式为字符模加时,根据获取到的扰码序列s0,与当前的明文分组p1进行字符模加的操作,即,再采用第二加密方式,对所述第i组的加扰明文组pi`加密,获得密文组ci,第二加密方式确定为保留格式加密算法,比如可以为ff1,也可以为ff3,只要是采用格式保留加密算法即可,最终确定获得的密文分组ci。
[0261]
本发明的实施例,生成扰码序列过程与加密过程为并行的过程,不必等到所有扰码序列中的元素si全部生成成功后才开始其加密,只需要确定所需要使用的扰码序列s中的元素si生成后即可以开始加密的流程,因此,提高了加密速度,相对的提高了加密的效率。
[0262]
可选的,作为其中一种实施例,采用第二加密方式,对第i组的加扰明文组pi`加密,获得密文组ci,具体包括:
[0263]
获取密钥k;
[0264]
根据密钥k及保留格式加密算法,对加扰明文组pi`加密,获得密文组ci。
[0265]
以上述实例为例进行说明,参见附图4。
[0266]
在获得加扰明文组pi`后,根据获取的密钥k,采用格式保留加密算法对加扰明文组pi`加密,获得密文组,即ci=fpenc(pi`,k)。
[0267]
可选的,作为其中一种实施例,在采用第二加密方式,对第i组的加扰明文组pi`加密之后,获得密文组ci之前,还包括:
[0268]
根据扰码序列s中的元素si,采用第一加密方式对加扰明文组pi`加密之后的密文组再次加密。
[0269]
以下通过具体实施例进行说明,见附图5所示。
[0270]
图5与图4的不同之处在于,对第i组的加扰明文组pi`加密之后,获得密文组ci之前,还增加有:根据扰码序列s中的元素si,采用第一加密方式对加扰明文组pi`加密之后的
密文组再次加密的步骤,因此,与图4中相同的步骤此处不再进行叙述,仅叙述与图4中有区别的步骤。
[0271]
与上述实施例相同,本实施例也以第一加密方式为字符模加进行的说明,本领域技术人员根据实际需要具体设置第一加密方式的运算方式。
[0272]
在采用第二加密方式对第i组的加扰明文组pi`加密之后,设ci`为临时加密结果,此时,当前明文组的当前的加密情况为ci`=fpenc(pi`,k),即`,k),即再采用第一加密方式对加扰明文组pi加密后的密文再次加密,那么,当第一加密方式为字符模加时,当前明文组pi的加密过程为
[0273]
那么,本实施例的全部加密过程如下:
[0274]
先将明文组与扰码序列中的元素s
i-1
采用与第一加密方式进行加密,设第一加密方式为字符模加,那么,获得的加扰明文组为
[0275]
再将加扰的明文组采用第二加密方式加密,所使用的密钥为k,设ci`为临时的加密结果,那么,ci`=fpenc(pi`,k)。
[0276]
最后,将临时加密结果,采用第一加密方式再次加密,设第一加密入为式为字符模加,那么,其加密结果为
[0277]
本发明实施例的技术方案,利用生成的扰码序列,以字符模加或字符模减的方式生成加扰的明文组,再以密钥的方式对加扰的明文组再次加密,生成密文组,再利用扰码序列,以字符模加或字符模减少的方式再次扰乱密文组得到最终的密文的三重加密形式,将明文完全打乱,可有效防止破译者从重复密文中探寻明文信息而被破解,且,即使破译者获得了密钥也无法破解其技术方案,大大提高了加密的安全性,为分组密码的保留格式加密提供了一种新的工作模式。
[0278]
可选的,作为其中一种实施例,本发明还提供了一种分组解密方法,包括:
[0279]
获取待解密的密文长度s及分组长度n,确定分成t组密文组;
[0280]
获取初始向量iv,初始向量iv的长度与分组长度n相同,初始向量iv与明文组属于同一字符集合;
[0281]
根据初始向量iv及预设的扰码序列生成算法,生成扰码序列s={s0,s1,
……st
},预设的扰码序列生成算法使扰码序列s中的任一元素si及s0与分组长度n相同,任一元素si及s0与明文组属于同一字符集合;
[0282]
迭代执行:采用第二加密方式对应的解密方式,对第i组的密文组ci解密,获得解密后的第i组加扰明文组pi`,根据扰码序列s中的元素s
i-1
,采用第一加密方式对应的解密方式对第i组加扰明文组pi`解密,获得第i组的明文组pi;
[0283]
其中,1≤i≤t,t为待加密明文的明文组的数量,i为大于等于1的整数,n为大于等于1的整数,元素s
i-1
在扰码序列s中的编号i,与明文组序号i具有对应关系,第一加密方式与第二加密方式均采用格式保留加密算法,第一加密方式与第二加密方式彼此不同。
[0284]
以下通过具体实施例做进一步的说明,见图6所示。
[0285]
s601:获取待解密的密文长度s及分组长度n,确定分成t组密文组;其中,1≤i≤t,
t为待加密明文的明文组的数量,i为大于等于1的整数,n为大于等于1的整数;
[0286]
获取待解密的密文的方式不限,可以为通过网络接收,也可以从数据库中获取相关的数据,或是由加密方发来的待解密的明文。
[0287]
根据获取的密文长度s及分组长度n,根据t=s/n,确定分成t组密文组。前述已经叙述,对于分组的加密方式,若最后一组不满足分组长度,需要通过补位的形式使得最后一组满足其分组长度n。若根据待解密的密文的长度s及分组长度n,计算得到的t为小数而非整数时,可能待解密的密文的数据被破坏,或是其它原因导致接收的待解密数据丢失,因此,若根据t=s/n,计算得到的t并非正整数,则可以确定获取的待解密密文存在问题而不需要解密,相对的侧面的验证了加密数据的完整性。
[0288]
s602:获取初始向量iv,初始向量iv的长度与分组长度n相同,初始向量iv与明文组属于同一字符集合;
[0289]
该步骤与加密的方式相同,此处不再赘述。
[0290]
s603:根据初始向量iv及预设的扰码序列生成算法,生成扰码序列s={s0,s1,
……st
},预设的扰码序列生成算法使扰码序列s中的任一元素si及s0与分组长度n相同,任一元素si及s0与明文组属于同一字符集合;
[0291]
该步骤与加密的方式生成的扰码序列的方式相同,此处不再赘述。
[0292]
s604:迭代执行:采用第二加密方式对应的解密方式,对第i组的密文组ci解密,获得解密后的第i组加扰明文组pi`,根据扰码序列s中的元素s
i-1
,采用第一加密方式对应的解密方式对第i组加扰明文组pi`解密,获得第i组的明文组pi;其中,元素s
i-1
在扰码序列s中的编号i,与明文组序号i具有对应关系,第一加密方式与第二加密方式均采用格式保留加密算法,第一加密方式与第二加密方式彼此不同。
[0293]
该解密过程与加密过程为相应的过程,先采用与第二加密方式对应的解密方式,对密文组ci解密后获得加扰明文组pi`,在采用与第一加密方式对应的解密方式,对加扰明文组pi`进行解密,获得明文。
[0294]
本发明实施例的技术方案,根据获取的密文长度s及分组长度n,根据t=s/n,确定分成t组密文组,计算得到的t为小数而非整数时,确定可能待解密的密文的数据被破坏,或是其它原因导致接收的待解密数据丢失而不必再解密,相对在一定程度上侧面的验证了数据的完整性,节省了因数据丢失而导致解密失败而产生的资源浪费,且本发明实施例的技术方案,解密时间短,不受待加密字符长短的限制,即使待解密的数据较多较长,解密的时间和速度依然不受影响,适用场景广泛,利于保留加密算法的推广。
[0295]
可选的,作为其中一种实施例,根据初始向量iv及预设的扰码序列生成算法,生成扰码序列s,具体包括:
[0296]
根据初始向量iv及获取的密钥k,采用保留格式加密算法,确定扰码序列中的元素s0;
[0297]
根据元素s0,采用保留格式加密算法确定元素si。
[0298]
可选的,作为其中一种实施例,根据确定的元素s0,采用保留格式加密算法确定元素si,具体包括:
[0299]
确定i等于1时,根据元素s0及密钥k,采用预设的保留格式加密算法,确定s1;
[0300]
确定i为大于等于2的整数时,根据扰码序列s中的元素s
i-1
及元素s
i-2
,采用格式保
留加密算法确定si。
[0301]
可选的,作为其中一种实施例,根据扰码序列s中的元素s
i-1
及元素s
i-2
,采用格式保留加密算法确定si,具体包括:
[0302]
保留格式加密算法为字符模加运算,或字符模减运算;
[0303]
字符模加运算符合以下公式:
[0304]
y1=(a+b)%m,
[0305]
字符模减运算符合以下公式:
[0306]
y2=(a-b+m)%m,
[0307]
其中,y1表示字符模加后的运算结果,y2表示字符模减后的运算结果,a、b属于同一字符集合中的任一字符,且表示参与运算的参数,m表示同一字符集合中字符的数量,%表示取m的余数;
[0308]
确定保留格式加密算法为字符模加运算时,利用如下公式确定扰码序列中的元素si:
[0309][0310]
其中,符号表示字符模加运算;
[0311]
确定保留格式加密算法为字符模减运算时,利用如下公式确定扰码序列中的元素si:
[0312][0313]
其中,符号表示字符模减运算。
[0314]
可选的,作为其中一种实施例,在利用公式确定扰码序列中的元素si之后,还包括:
[0315]
获取密钥k,根据密钥k及保留格式加密算法,对元素si再次加密。
[0316]
具体实例可参见上述实施例,解密过程中,根据初始向量iv生成扰码序列s的过程与加密过程是一样的,此处不再赘述。
[0317]
可选的,作为其中一种实施例,确定第一加密方式为字符模加运算时,第一加密方式对应的解密方式为字符模减运算,确定第一加密方式为字符模减运算时,第一加密方式对应的解密方式为字符模加运算;
[0318]
字符模加运算符合以下公式:
[0319]
y1=(a+b)%m,
[0320]
字符模减运算符合以下公式:
[0321]
y2=(a-b+m)%m,
[0322]
其中,y1表示字符模加后的运算结果,y2表示字符模减后的运算结果,a、b属于同一字符集合中的任一字符,且表示参与运算的参数,m表示同一字符集合中字符的数量,%表示取m的余数。
[0323]
可选的,作为其中一种实施例,所述根据所述扰码序列s中的元素s
i-1
,采用第一加密方式对应的解密方式对所述第i组加扰明文组pi`解密,获得第i组的明文组pi,具体包括:
[0324]
确定第一加密方式为字符模加时,利用如下公式确定第i组的明文组pi:
[0325]
[0326]
其中,符号表示字符模减运算;
[0327]
确定第一加密方式为字符模减时,利用如下公式确定第i组的明文组pi:
[0328][0329]
其中,符号表示字符模加运算。
[0330]
根据扰码序列s中的元素s
i-1
,采用第一加密方式对应的解密方式对第i组加扰明文组pi`解密,获得第i组的明文组pi,具体包括:
[0331]
确定第一加密方式为字符模加时,利用如下公式确定第i组的明文组pi:
[0332][0333]
其中,符号表示字符模减运算;
[0334]
确定第一加密方式为字符模减时,利用如下公式确定第i组的明文组pi:
[0335][0336]
其中,符号表示字符模加运算。
[0337]
以下通过具体实施例做进一步的说明,见图7所示。
[0338]
图4中的实施例所采用的加密算法为字符模加运算,则对应的解密算法为字符模减运算,因此,本实施例中图7所采用的解密方式与图4中实施例对应的字符模减运算来进行解密,对于本领域的技术人员来说,可以根据实际需要确定相应的解密方式并解密。
[0339]
本发明实施例是以在获得扰码序列后进行的叙述,生成扰码序列s的过程可参见上述实施列,此处不再叙述。需要说明的是,生成扰码序列s的过程与当前对密文分组解密的过程两者是并行的进行的过程,即两者可以同时进行。
[0340]
如,为了加快解密速度,在接收到初始向量iv后即可以生成扰码序列s,不必等到接收到所有的待解密密文后再才开始进行上述进程,若接收到待解密的密文后,也不必等到扰码序列s全部生成完毕后才开始解密,而是只需要确定,所需要使用的扰码序列s中的元素si生成后即可以开始解密的流程。
[0341]
以本发明实施例说明,即在获得了扰码序列中的元素s0以后,就可以对当前密文分组c1开始解密的过程,不必等到所有扰码序列中的元素si全部生成成功后才开始其解密过程。
[0342]
获取到密文并分组后,采用第二加密方式对应的解密方式,对第i组的密文组ci解密,获得解密后的第i组加扰明文组pi`后,当第一加密方式为字符模加时,对应的解密方式为字符模减运算,根据获取到的扰码序列s0,与当前的明文分组p1进行字符模减的操作,即,来获得当前明文p1。
[0343]
本发明实施例的技术方案,解密过程与生成扰码序列过程为并行的过程,即在获得了扰码序列中的所需元素si以后,就可以对当前密文分组ci开始解密,而不必等到所有扰码序列中的元素si全部生成成功后才开始其解密过程,解密速度快。
[0344]
可选的,作为其中一种实施例,采用第二加密方式对应的解密方式,对第i组的密文组ci解密,获得解密后的第i组加扰明文组pi`,具体包括:
[0345]
获取密钥k;
[0346]
根据密钥k及保留格式加密算法,对第i组的密文组ci解密,获得解密后的第i组加扰明文组pi`。
[0347]
为了更好的说明本发明的实施例,现约定fpdec(pi,k)表示为用密钥k以保留格式解密算法将密文组pi解密,工作模式建议为ecb模式,当然,也可以根据实际需要采用其它的工作模式,此处不进行限定。
[0348]
以上述实例为例进行说明,参见附图7。
[0349]
在获得密文组ci后,根据获取的密钥k,以采用保留格式解密算法将密文组pi解密,获得加扰明文组,即,pi`=pfdec(ci,k)。
[0350]
可选的,作为其中一种实施例,采用第二加密方式对应的解密方式,对第i组的密文组ci解密之前,还包括:
[0351]
根据扰码序列s中的元素si,采用第一加密方式对第i组密文组ci解密。
[0352]
以下通过具体实施例进行说明,参见附图8所示。
[0353]
图8与图7的不同之处在于,在采用第二加密方式对应的解密方式,对第i组的密文组ci解密之前,还增加有:根据扰码序列s中的元素si,采用第一加密方式对第i组密文组ci解密的步骤,因此,与图7中相同的步骤此处不再进行叙述,仅叙述与图7中有区别的步骤。
[0354]
与上述实施例相同,本实施例也以第一加密方式为字符模加进行的说明,本领域技术人员根据实际需要具体设置第一加密方式的运算方式,当第一加密方式为字符模加时,其对应的解密方式为字符模减。
[0355]
在采用第二加密方式对应的解密方式,对第i组的密文组ci解密之前,先根据扰码序列s中的元素si,采用第一加密方式对第i组密文组ci解密,设ci`为临时解密结果,即,
[0356]
那么,本实施例的全部的解密过程如下:
[0357]
先将密文组ci与扰码序列中的元素si采用与第一加密方式对应的解密方式进行解密,即采用字符模减运算进行解密,设临时的解密结果为ci`,那么,
[0358]
再将获得的临时解密结果,采用与第二加密方式对应的解密方式再次解密获得加扰的明文组,第二加密方式所使用的密钥为k,那么,pi`=fpdec(ci`,k)。
[0359]
最后将加扰的明文组采用与第一加密方式对应的解密方式再次解密,即采用字符模减运算进行解密,即
[0360]
本发明实施例还提供了一种数据加密装置,如附图9所示,该数据加密装置9包括:
[0361]
初始化模块901,用于将待加密明文按分组长度n分成t组明文组;
[0362]
加扰模块902,用于获取初始向量iv,初始向量iv的长度与分组长度n相同,初始向量iv与明文组属于同一字符集合;还用于,根据初始向量iv及预设的扰码序列生成算法,生成扰码序列s={s0,s1,
……st
},预设的扰码序列生成算法使扰码序列s中的任一元素si及s0与分组长度n相同,任一元素si及s0与明文组属于同一字符集合;
[0363]
加密模块903,用于获取所述加扰模块902生成的扰码序列s,还用于迭代执行:根据扰码序列s中的元素s
i-1
,采用第一加密方式对第i组明文组pi加密,获得第i组明文组pi的加扰明文组pi`,采用第二加密方式,对第i组的加扰明文组pi`加密,获得密文组ci;
[0364]
其中,1≤i≤t,t为待加密明文的明文组的数量,i为大于等于1的整数,n为大于等
于1的整数,元素s
i-1
在扰码序列s中的编号i,与明文组序号i具有对应关系,第一加密方式与第二加密方式均采用保留格式加密算法,第一加密方式与第二加密方式彼此不同。
[0365]
本发明实施例还提供了一种解密装置,如附图10所示,该数据解密装置10包括:
[0366]
初始化模块1001:用于获取待解密的密文长度s及分组长度n,确定分成t组密文组;
[0367]
加扰模块1002:用于获取初始向量iv,初始向量iv的长度与分组长度n相同,初始向量iv与明文组属于同一字符集合;还用于,根据初始向量iv及预设的扰码序列生成算法,生成扰码序列s={s0,s1,
……st
},预设的扰码序列生成算法使扰码序列s中的任一元素si及s0与分组长度n相同,任一元素si及s0与明文组属于同一字符集合;
[0368]
解密模块1003:用于获取加扰模块1002生成的所述扰码序列s,还用于迭代执行:采用第二加密方式对应的解密方式,对第i组的密文组ci解密,获得解密后的第i组加扰明文组pi`,根据扰码序列s中的元素s
i-1
,采用第一加密方式对应的解密方式对第i组加扰明文组pi`解密,获得第i组的明文组pi;
[0369]
其中,1≤i≤t,t为待加密明文的明文组的数量,i为大于等于1的整数,n为大于等于1的整数,元素s
i-1
在扰码序列s中的编号i,与明文组序号i具有对应关系,第一加密方式与第二加密方式均采用格式保留加密算法,第一加密方式与第二加密方式彼此不同。
[0370]
本发明实施例还提供了一种数据加密设备1100,见图11所示,数据加密设备1100包括:处理器1101和存储器1102;
[0371]
处理器1101用于调用存储器1102中存储的程序,当程序被执行时,使得处理器1101执行上述任一实施例的加密方法。
[0372]
本发明实施例还提供了一种数据解密设备1200,见图12所示,数据解密设备1200包括:处理器1201和存储器1202;
[0373]
处理器1201用于调用存储器1202中存储的程序,当程序被执行时,使得处理器1201执行上述任一实施例的解密方法。
[0374]
本发明实施例还提供了一种计算机存储介质,存储有计算机程序,该计算机程序包括用于执行上述实施例任一项的加密方法,和/或,上述实施例中任一项解密的方法。
[0375]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0376]
本技术是参照根据本技术的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0377]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指
令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0378]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0379]
显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1