1.本发明涉及信息保护技术领域,特别涉及一种数据加密方法、解密方法及其装置、设备。
背景技术:2.目前,在信息技术领域中,有大量的信息数据需要传输及保存,而数据加密是计算机系统对信息进行保护的一种最可靠的办法,它利用密码技术对信息进行加密,提高了信息系统及数据的安全性和保密性,防止秘密数据被外部破译,从而起到保护信息的安全的作用。
3.目前,有关分组模式的分组密码工作模式常见的有密文分组链接(cipher block chaining,cbc)、电子密本(electronic code book,ecb)等工作模式,分组加密是对n比特的明文输入和l比特的加密密钥进行处理,生成s比特的密文输出,因此,要求参与运算的数据为二进制流,无法适用于某些其它进制的场景。
4.而在实际使用过程中,二进制无法满足某些特殊应用的需要,比如数值型个人识别信息,包括手机号码、出生日期、银行卡号、付款价格等信息,该类数据属于十进制的信息,并非二进制,因此,在加密时,不适宜采用上述工作模式对其加密。
5.且,该类数据存储时具有一定的格式存储要求,但基于该种分组密码工作模式使用传统的加密算法加密时通常会扩展数据,使数据长度和类型发生变化,将会破坏原数据的格式,使得加密后的数据无法在原有的数据库或节点中存储,而且可能会破坏已有的业务系统的功能,因此需要修改数据库结构或应用程序来适应这些变化,成本非常高。
6.而现有的保留格式加密算法由于待加密的参数多数为多进制,无法采用分组加密方式来进行加密,且保留格式加密模式的运算量过于复杂,较普通的分组密码工作模式相比,性能下降了很多倍。因此,如何利用分组密码工作模式的性能优点,还能适应于格式数据加密的需要,可适用于长数据加密,并且将数据加密后却不破坏其固有的格式、类型、长度,以确保现有的业务系统、数据库存储结构尽可能少的改动,是一个需要解决的问题。
技术实现要素:7.本发明实施例公开了一种数据加密方法、解密方法及其装置、设备,用于解决现有技术中采用分组模式加密时,无法应用于多进制工作场景、且无法保留原数据格式的技术问题。
8.第一方面,本发明实施例提供了一种分组模式加密方法,所述方法包括:
9.将待加密明文按分组长度n分成t个明文组;
10.根据获取的参数f,获得加密参数r,所述加密参数r的长度与所述分组长度n相同,所述加密参数r与所述明文组属于同一字符集合;
11.迭代执行:获取第i-1组的密文组c
i-1
,将所述密文组c
i-1
与所述加密参数r,采用第二加密方式,获得隐秘扰码v;所述隐秘扰码v与第i组的明文组pi,采用第三加密方式,获得
第i组的密文组ci;
12.若无法获取第i-1分组的密文组c
i-1
时,则设定所述第i-1组的密文组c
i-1
为默认值;
13.其中,1≤i≤t,所述t为所述待加密明文的明文组的数量,所述i为大于等于1的整数,所述n为大于等于1的整数,所述第二加密方式和所述第三加密方式均采用格式保留加密算法,使获得的所述密文组与所述明文组属于同一字符集合,及所述密文组的长度与所述明文组的长度相同,所述第二加密方式与所述第三加密方式彼此相同/不同。
14.本技术发明实施例的技术方案,使得加密后的密文与加密前的明文的长度和字符相同,实现了对敏感数据的加密,不需要更改原有的数据库结构即可以保存加密数据;而本发明充分利用分组密码工作模式的性能优点,将待加密的数据分组,可以适用于待加密数据量大的情形节省了资源开销;且,本发明额外增加了隐秘因子r,在生成当前组的密文组后,由隐秘因子r与当前的密文组通过第二加密方式生成了隐秘扰码v,利用隐秘扰码v参与下一组明文的加密过程,破译者无法像cbc模式那样直接获取参与下一组明文加密运算的参数,防止破译者获取明文组与密文组间的对应,使破译者不能得到有利于开展密码分析的必备素材,进而可一定程度上保障较小分组情形的信息安全,提高了加密的安全性;且,密码分析需要明密对,通常需要很多明密对,而采用本模式,攻击者不能得到明密对,攻击者不能获得有效数据,就无法开展密码分析。
15.在一些示例性的实施方式中,所述第二加密方式和/或所述第三加密方式所采用加密算法为异或运算、字符模加运算、字符模减运算中任意一种;
16.其中,所述字符模加运算符合以下公式:
17.y1=(a+b)%m,
18.所述字符模减运算符合以下公式:
19.y2=(a-b+m)%m,
20.其中,y1表示字符模加后的运算结果,y2表示字符模减后的运算结果,a、b属于同一字符集合中的任一字符,且表示参与运算的参数,m表示所述字符集合中字符的数量,%表示取m的余数。
21.本发明的实施例,即使分组后出现相同的明文组,如明文组c1与c3相同,但经过该加密方法后,彼此间获得的密文仍然不同,使破译者无法根据密文的格式推断原明文的格式特征,加密后的密文与明文相较,其长度未发生变化,与明文同属于同一字符集合,因此,加密后获得的密文与明文可以采用同一数据结构进行保存,不需要对相关的数据库做出重大的改变。字符模加、字符模减运算与异或运算相较,其可适用于任何的格式数据场景,省略了进制转换的过程,并可根据实际需要自行定义任意的字符集合以满足实际应用的需要,实用性强,加密效果好,不仅适合普通的二进制比特流数据,还适宜保留格式类数据。
22.在一些示例性的实施方式中,所述方法还包括:
23.获取密钥;
24.在采用第二加密方式和/或第三加密方式之后,还包括:
25.根据所述密钥,对所述第二加密方式和/或所述第三加密方式产生的加密结果再次加密。
26.通过在第二加密方式和/或在第三加密方式后,再通过密钥对第二加密方式和/或
第三加密方式产生的加密结果采用保留格式算法再次加密,可以看出,当加密结果经过密钥对其加密后,使产生的加密结果变得不可预测,对于破译者来说,破解的难度大大提高,被破解的概率小,从而保证了加密后数据的安全性。
27.在一些示例性的实施方式中,所述密钥包括第一密钥k1;
28.以所述第一密钥k1为输入参数,由约定的第一计算函数计算出第二密钥k2、第三密钥k3;
29.或,所述密钥还包括第二密钥k2、第三密钥k3;
30.或,第二密钥k2、第三密钥k3与所述第一密钥k1相同;
31.所述根据所述密钥,对所述第二加密方式和/或所述第三加密方式产生的加密结果再次加密,具体包括:
32.根据所述密钥中的第二密钥k2,对所述第二加密方式产生的加密结果再次加密,和/或,根据所述密钥中的第三密钥k3,对所述第三加密方式产生的加密结果再次加密。
33.本发明的实施例,第二加密方式后加密所采用的密钥k2与第三加密方式后所采用的密钥k3不同,k2、k3可以根据k1计算而来,也可以接收或双方约定,与现有的只采用同一加密密钥的方式而言,通过采用不同的密钥加密,提高了加密后被破解的难度,提高加密效果,扰乱了密文的混乱程度,使破译者不易被破解密文,提高加密数据的安全性。
34.在一些示例性的实施方式中,所述根据获取的参数f,获得加密参数r,具体包括:
35.所述参数f与所述加密参数r相同。
36.在一些示例性的实施方式中,所述根据获取的参数f,获得加密参数r,具体包括:
37.根据获取的参数f,采用预设的第一加密方式对所述参数f加密,获得加密参数r;
38.其中,采用所述第一加密方式使产生的所述加密参数r与所述明文组属于同一字符集合,所述加密参数r的长度与所述分组长度n相等。
39.本发明的实施例,根据获取的参数f如何获得的隐秘因子r提供了多种技术方案,本发明的实施例,对参数f不进行限定与要求,在传输数据时自由度较大,而通过预设的第一加密方式,通过各种加密手段的变换,使得加密参数r满足长度与分组长度n相同、加密参数r与明文组属于同一字符集合,不影响本发明的加密方法的使用,本发明实施例的技术方案,可提高加密的安全性,且,通过加密算法使生成的隐秘因子r的安全性较高,隐秘因子r又参与每一组明文的加密运算过程来扰乱密文的混乱程度,更好的保护了加密数据,提高了加密数据被破译的难度。
40.在一些示例性的实施方式中,所述参数f的获取方式,包括:
41.以所述密钥为输入参数,由约定的第二计算函数计算出所述参数f;
42.或,以所述密钥中的部分值作为所述参数f。
43.在一些示例性的实施方式中,所述参数f的获取方式,包括:
44.以约定的值作为所述参数f;
45.或,以默认的值作为所述参数f。
46.本发明的实施例,通过密钥而确定参数f,或根据默认值/约定值确定参数,使得在加密数据的传输过程中,不需要再传递参数f的信息,节省了传输资源,破译者在破解加密数据时缺少参考数据,从而提高了被破译的难度,相对的保障了加密数据的安全性。
47.第二方面,本发明实施例提供了一种分组模式解密方法,该方法包括:
48.获取待解密密文的分组长度n;
49.根据获取的参数f,获得加密参数r,所述加密参数r的长度与所述分组长度n相同,所述加密参数r与所述明文组属于同一字符集合;
50.迭代执行:获取第i-1组的密文组c
i-1
,根据所述密文组c
i-1
与所述加密参数r,采用第二加密方式,获得隐秘扰码v;确定可以根据所述分组长度n获取第i组的密文组ci时,根据所述隐秘扰码v与所述第i组的密文组ci,采用与所述第三加密方式相对应的第三解密方式,获得第i组的明文组pi;
51.若无法获取第i-1分组的密文组c
i-1
时,确定所述第i-1组的密文组c
i-1
为预先确定的默认值;
52.其中,所述i为大于等于1的整数,所述n为大于等于1的整数,所述第二加密方式和所述第三加密方式采用格式保留加密算法,使获得的所述密文组与所述明文组属于同一字符集合,及所述密文组的长度与所述明文组的长度相同,所述第二加密方式与所述第三加密方式彼此相同/不同。
53.本发明的实施例,通过获取密文长度s及分组长度t,根据公式t=s/n,若计算获得的t并非正整数,可以确定获取的密文数据被破坏,在解密之前侧面的验证了待解密密文数据的完整性,若待解密数据不符合要求则不再继续解密,避免因数据错误而对其解密造成的计算资源浪费,且,与传统的格式保留加密算法相较,可适用于数据量大时的解密,且本技术的解密过程为并行的解密过程,通过确定的t组密文组,即可以确定前一组的密文组c
i-1
,因此,解密时多组密文组可以并行执行该解密过程,而不需要等待前一组完成后执行,解密的速度大大加快,解密的效率高,有利于格式保留加密算法的推广。
54.一些示例性的实施方式中,所述第二加密方式和/或所述第三加密方式所采用的加密算法为异或运算、字符模加运算、字符模减运算中任意一种;
55.其中,所述字符模加运算符合以下公式:
56.y1=(a+b)%m,
57.所述字符模减运算符合以下公式:
58.y2=(a-b+m)%m,
59.其中,y1表示字符模加后的运算结果,y2表示字符模减后的运算结果,a、b属于同一字符集合中的任一字符,且表示参与运算的参数,m表示所述字符集合中字符的数量,%表示取m的余数。
60.本发明的解密过程和加密过程相较,各分组的解密过程可以同时进行,且相互不影响,解密时间较加密时间更快,且本方案的字符模加、字符模减法可以适用于各种进制,可根据实际需要自行定义字符集合以满足实际中的各种需求,较传统的异或运算相较,省略了进制转换的过程,加快了解密速度,且可适用于各种保留加密算法的场景,解密时间短,不受待加密字符长短的限制,即使待解密的数据较多较长,解密的时间和速度依然不受影响,适用场景广泛,利于保留加密算法的推广。
61.在一些示例性的实施方式中,所述方法还包括:
62.获取密钥;
63.在采用第二加密方式之后,还包括:
64.根据所述密钥,对所述第二加密方式产生的加密结果再次加密;
65.和/或,
66.在获取第i组的密文组ci之后,在采用与所述第三加密方式相对应的第三解密方式之前,还包括:根据所述密钥对所述第i组的密文组ci解密。
67.在一些示例性的实施方式中,所述密钥包括第一密钥k1;
68.以所述第一密钥k1为输入参数,由约定的第一计算函数计算出第二密钥k2、第三密钥k3;
69.或,所述密钥信息中还包括第二密钥k2、第三密钥k3;
70.或,第二密钥k2、第三密钥k3与所述第一密钥k1相同;
71.所述根据所述密钥,对所述第二加密方式产生的加密结果再次加密,具体包括:
72.根据所述密钥中的第二密钥k2,对所述第二加密方式产生的加密结果再次加密;
73.和/或,所述根据所述密钥对所述第i组的密文组ci解密,具体包括:
74.根据所述密钥中的第三密钥k3,对所述第i组的密文组ci解密。
75.在一些示例性的实施方式中,所述第三加密方式相对应的第三解密方式,具体包括:
76.获取第三加密方式的加密算法,根据所述加密算法确定的对应的解密算法,确定第三解密方式。
77.在一些示例性的实施方式中,所述与所述第三加密方式相对应的第三解密方式,具体包括:
78.获取所述第三加密方式所采用的加密算法;
79.若所述加密算法为异或运算,则对应的解密算法为异或运算;
80.若所述加密算法为字符模加运算,则对应的解密算法为字符模减运算;
81.若所述加密算法为字符模减运算,则对应的解密算法为字符模加运算;
82.确定的对应的解密算法为第三解密方式。
83.本发明的实施例,保留格式的加密算法具有多种,因此,可以根据实际的需要设定适合的加密方式,在解密时根据加密方式确定相应的解密方式,方式灵活多变,适用各种场景。
84.在一些示例性的实施方式中,所述根据获取的参数f,获得加密参数r,具体包括:
85.根据获取的参数f,采用预设的第一加密方式对所述参数f加密,获得加密参数r;
86.其中,采用所述第一加密方式使产生的所述加密参数r与所述明文组属于同一字符集合,所述加密参数r的长度与所述分组长度n相等。
87.在一些示例性的实施方式中,所述根据获取的参数f,获得加密参数r,具体包括:
88.所述参数f与所述加密参数r相同。
89.在一些示例性的实施方式中,所述参数f的获取方式,包括:
90.以所述密钥为输入参数,由约定的第二计算函数计算出所述参数f;
91.或,以所述密钥中的部分值作为所述参数f。
92.在一些示例性的实施方式中,所述参数f的获取方式,包括:
93.以约定的值作为所述参数f;
94.或,以默认的值作为所述参数f。
95.第三方面,本发明实施例提供了一种数据加密装置,该装置包括:
96.初始化模块,用于将待加密明文按n个字符的分组长度分成t个明文组;
97.获取模块,用于根据获取的参数f,获得加密参数r,所述加密参数r的长度与所述分组长度n相同,所述加密参数r与所述明文组属于同一字符集合;
98.生成模块,用于迭代执行:获取第i-1组的密文组c
i-1
,将所述密文组c
i-1
与所述加密参数r,采用第二加密方式,获得隐秘扰码v;所述隐秘扰码v与第i组的明文组pi,采用第三加密方式,获得第i组的密文组ci;还用于,若无法获取第i-1分组的密文组c
i-1
时,则设定所述第i-1组的密文组c
i-1
为默认值;
99.其中,1≤i≤t,所述t为所述待加密明文的明文组的数量,所述i为大于等于1的整数,所述n为大于等于1的整数,所述第二加密方式和所述第三加密方式采用格式保留加密算法,使获得的所述密文组与所述明文组属于同一字符集合,所述密文组的长度与所述明文组的长度相同,所述第二加密方式与所述第三加密方式彼此相同/不同。
100.第四方面,本发明实施例提供了一种数据解密装置,该装置包括:
101.获取模块:用于获取待解密密文的分组长度n,及用于根据获取的参数f,获得加密参数r,所述加密参数r的长度与所述分组长度n相同,所述加密参数r与所述明文组属于同一字符集合;
102.解密模块:用于迭代执行:获取第i-1组的密文组c
i-1
,根据所述密文组c
i-1
与所述加密参数r,采用所述第二加密方式获得隐秘扰码v;确定可以根据所述分组长度n获取第i组的密文组ci时,根据所述隐秘扰码v与所述第i组的密文组ci,采用与所述第三加密方式相对应的第三解密方式,获得第i组的明文组pi;还用于,若无法获取第i-1分组的密文组c
i-1
时,确定所述第i-1组的密文组c
i-1
为预先确定的默认值;
103.其中,所述i为大于等于1的整数,所述n为大于等于1的整数,所述第二加密方式和所述第三加密方式均采用格式保留加密算法,使获得的所述密文组与所述明文组属于同一字符集合,所述密文组的长度与所述明文组的长度相同,所述第二加密方式与所述第三加密方式彼此相同/不同。
104.第五方面,本发明实施例提供了一种数据加密设备,该设备包括:处理器和存储器;
105.所述处理器用于调用所述存储器中存储的程序,当所述程序被执行时,使得处理器执行上述第一方面所提供的任一实施例的方法。
106.第六方面,本发明实施例提供了一种数据解密设备,该设备包括:处理器和存储器;
107.所述处理器用于调用所述存储器中存储的程序,当所述程序被执行时,使得处理器执行上述第二方面所提供的任一实施例的方法。
108.第七方面,本发明实施例提供了一种计算机存储介质,该存储介质存储有计算机程序,该计算机程序包括用于执行上述第一方面所提供的任一实施例的方法,和/或,上述第二方面所提供的任一实施例的方法。
109.本技术实施例的技术方案,使得加密后的密文与加密前的明文的长度和字符相同,实现了对敏感数据的加密,不需要更改原有的数据库结构即可以保存加密数据;且,本发明额外增加了隐秘因子r,在生成当前组的密文组后,由隐秘因子r与当前的密文组通过第二加密方式生成了隐秘扰码v,利用隐秘扰码v参与下一组明文的加密过程,破译者无法
像cbc模式那样直接获取参与下一组明文加密运算的参数,防止破译者获取明文组与密文组间的对应,使破译者不能得到有利于开展密码分析的必备素材,进而可一定程度上保障较小分组情形的信息安全,提高了加密的安全性;且,密码分析需要明密对,通常需要很多明密对,而采用本模式,攻击者不能得到明密对,攻击者不能获得有效数据,就无法开展密码分析。
附图说明
110.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
111.图1为本发明实施例提供的现有技术中ecb模式加密过程示意图;
112.图2为本发明实施例提供的现有技术中cbc模式加密过程示意图;
113.图3为本发明实施例提供的一种分组加密方法流程图;
114.图4为本发明实施例提供的另一种分组加密方法工作流程示意图;
115.图5为本发明实施例提供的另一种分组加密方法工作流程示意图;
116.图6为本发明实施例提供的一种分组解密方法流程图;
117.图7为本发明实施例提供的另一种分组解密方法工作流程示意图;
118.图8为本发明实施例提供的另一种分组解密方法工作流程示意图;
119.图9为本发明实施例提供的一种数据加密装置示意框图;
120.图10为本发明实施例提供的一种数据解密装置示意框图;
121.图11为本发明实施例提供的一种数据加密设备示意框图;
122.图12为本发明实施例提供的一种数据解密设备示意图。
具体实施方式
123.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
124.需要理解的是,在本发明实施例的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
125.本发明实施例中的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
126.目前,在信息技术领域中,有大量的信息数据需要传输及保存,而数据加密是计算机系统对信息进行保护的一种最可靠的办法,它利用密码技术对信息进行加密,提高了信息系统及数据的安全性和保密性,防止秘密数据被外部破译,实现信息隐蔽,从而起到保护信息的安全的作用。
127.对称加密方式是目前常用的加密方式之一,其中分组加密方式,又称为块加密,分
组加密是对n比特的明文输入和l比特的加密密钥进行处理,生成相应长度的密文输出,通过将明文分组,一次加密一个明文分组得到加密的密文。因为实际情况往往是明文的长度会远超过密码分组的长度,因此需要对分组加密算法进行迭代,才能将明文全部加密,采用的方法就是分组密码算法的工作模式。
128.目前的密码分组工作模式,包括ecb(electronic codebook,电子密本)模式和cbc(cipher block chaining,密文分组链接)模式。
129.ecb模式的具体加密过程见图1所示。
130.ecb模式只进行了分组和加密操作,且相同的明文分组加密后会得到相同的密文分组,由于采用相同的加密方式,导致最终生成的密文也是相同的,即存在潜在的“暴露明文格式特征”隐患,对于破解者而言,可以以通过加密后的格式特征推断出原明文的格式,为攻击者猜设明文或求取密钥提供条件。
131.基于此,需要设计让相同的明文分组和相同的密钥加密后得到不同的密文分组。基于此思想,在明文分组和密钥加密运算中加入一个干扰项,因此,产生了cbc工作模式。
132.cbc模式的具体加密过程见图2所示。
133.与ecb模式相较,cbc模式利用了前一组的密文参与加密过程的运算,因此,即使分组后存在相同的明文组,由于前一组的密文彼此并不相同,因此,得到的密文也是不同的,该技术方案,在密文中隐藏了明文的特征,破解者无法通过密文特征来推断明文特征,因此,相较于ecb模式来说,cbc模式更安全。
134.由于cbc分组加密是基于n比特的明文输入和若干长度密钥进行处理,生成s比特的密文输出,且在加密过程中需要“异或”的逻辑运算,而逻辑运算为二进制运算,因此,cbc分组加密方法适用于具有二进制bit流的工作场景。
135.而在实际使用过程中,有些情形二进制无法满足其应用的需要,比如数值型个人识别信息,包括手机号码、出生日期、银行卡号、付款价格等信息,该类数据属于十进制的信息,并非二进制,因此,在加密时,无法采用上述工作模式对其加密。
136.其次,根据cbc的技术方案,当前组的密文参与了下一组的明文加密过程,相当于公开了参与明文加密运算的部分参数,有使破译者获取到明文组与密文组间的对应的风险,对加密安全性不利。
137.为了解决加密前后数据长度、类型发生变化的问题,出现了加密后的密文和加密前的明文格式一致(即长度和字符类型一样)的保留格式加密算法,比如fpe(format-preserving encryption)算法,该算法是基于feistel网络来构建符合整数集大小的分组密码,并结合cycle-walking方法使最终密文输出在合理范围内,feistel网络可以通过定义分组大小、密钥长度、迭代轮数、子密钥生成、轮函数等来构造一个分组密码。
138.例如,加密过程可以表述为:加轮密钥-》查找s盒(非线性的替换)-》线性变换,重复上述步骤,多轮迭代后生成密文。在实际应用中迭代次数越高,相对的安全性也越高,但出于性能及安全性和效率等综合性考虑,优选的迭代次数为几十次。
139.通过上述内容可以看出,保留格式加密算法通常也是很多轮的迭代,运算量过于复杂,较普通的分组密码工作模式(ecb/cbc等)相比,性能下降了很多倍,若待加密的数据较多较长时,消耗资源高、加密的速度下降极其快速、且加密时间长,给保留格式加密的大规模推广带来的极大的不便。
140.因此,如何利用分组密码工作模式的性能优点,还能适应于多进制加密的需要,可适用于长数据加密,并能提高加密的安全性,且将数据加密后却不破坏其固有的格式、类型、长度以确保现有的业务系统、数据库存储结构尽可能少的改动,是一个需要解决的问题。
141.为解决上述技术问题,本发明提供了一种分组加密方法,加密速度快,加密安全性高,可适用于多进制加密的需要,加密后数据与原数据的类型、格式、长度保持一致。
142.在详细阐述本发明之前,首先对本发明相关的名词进行解释。
143.(1)加密/解密
144.出于信息保密的目的,在信息传输或存储中,采用密码技术对需要保密的信息进行处理,使得处理后的信息不能被非授权者(含非法者)读懂或解读,这一过程被称为加密。在加密处理过程中,需要保密的信息称为“明文”,经加密处理后的信息称为“密文”。加密即是将“明文”变为“密文”的过程;与此类似,将“密文”变为“明文”的过程被称为解密。
145.加密/解密的过程可以由算法来控制,也可以在每种情况下由一个或多个密钥控制。在实际应用场景中,需要通过加密的方式保护传输或存储中的敏感数据。
146.(2)格式保留加密
147.在密码学中,格式保留加密(fpe)是指使得输出(密文)与输入(明文)具有相同格式、相同长度的加密方式。
148.在很多情况下,比如在支付系统、或需要保存敏感信息的数据库中使用时,需要采用格式保留加密方式,需要密文具有与原始明文相同的长度和格式。
149.(3)字符模加
150.定义一个字符集合并按顺序排列,字符集合中包含当前明文中可以显示所有字符,如现在常用的10进制的字符集合,是将数字0-9的10个字符按顺序排列,形成的一个字符集合,即集合{0,1,2,3,4,5,6,7,8,9}为一个10进制的字符集合,也可以定义以二十六个英文字母为序列的二十六进制的字符集合。
151.且,该集合可以根据需要自行定义,如身份证号中,除了数字,还有英文字母x,那么,可以定义一个11进制的集合为{0,1,2,3,4,5,6,7,8,9,x},作为用于标识身份证号的字符集合。在实际中,可以根据需要自行定义集合的内容及集合的大小,可以超过256个符号的限制。
152.m代表当前集合中的字符数量,也可以理解为进制,如集合{0,1,2,3,4,5,6,7,8,9}中具有10个字符,那么m为10,也可以理解为该集合是一个10进制的字符集合;如上述身份证号的集合,该集合中具有11个字符,即该集合是一个11进制的集合。
153.字符模加运算符合以下公式:
154.y1=(a+b)%m,
155.其中,y1表示字符模加后的运算结果,a、b属于同一字符集合中的任一字符,且表示参与运算的参数,m表示所述字符集合中字符的数量,%表示取m的余数。
156.可以理解为,根据当前字符在当前集合中所在的位置信息确定参与运算的参数,即参与运算的参数为当前字符所在集合中的位置信息,该集合的位置信息为从0开始到m-1,与集合中按顺序排列的m个字符一一对应,将集合中字符的所在位置作为参与运算的数字,进行加法运算,获得结果后取当前集合字符数量m的余数作为字符模加的结果,根据结
果确定当前字符集合所在的位置信息所代表的字符,该字符即为字符模加后的结果。
157.通过示例来说明字符模加的操作。
158.以10进制的集合为例,即集合{0,1,2,3,4,5,6,7,8,9}为一个10进制的字符集合,将该集合中字符所在的位置信息与当前的数字字符是一一对应的,即字符0的位置信息为0,字符1的位置信息为1,当字符5与6做字符模加的运算的过程为:
159.确定字符5所在的位置信息为5,字符6所在的位置信息为6;
160.字符5与字符6的字符模加运算为(5+6)%10=11%10=1,确定的位置信息为1;
161.在该集合中位置为1所代表的字符数字为1,那么,对于10进制的集合,字符5与字符6进行字符模加后的结果为1。
162.也可以理解为,将数字0到m-1之间的数字,与集合中的字符形成一一对应的关系,根据其对应的关系进行运算,根据运算后的结果确定所在位置对应的字符,如26进制的字符集合中字符与位置对应关系可以如下表的表1所示。
163.表1字符与位置关系参考对照表
[0164][0165]
若字符f与字符x进行字符模加的运算,其过程为:
[0166]
确定字符f的位置信息为5,字符x的位置信息为23;
[0167]
字符f与字符x的字符模加运算为:(5+23)%26=28%26=2;
[0168]
确定位置2所对应的字符为c;
[0169]
字符f与字符x字符模加后的结果为c。
[0170]
(4)字符模减
[0171]
字符模减是与字符模加相对应的运算,字符模减运算符合以下公式:
[0172]
y2=(a-b+m)%m,
[0173]
其中,y2表示字符模减后的运算结果,a、b属于同一字符集合中的任一字符,且表示参与运算的参数,m表示所述字符集合中字符的数量,%表示取m的余数。
[0174]
字符模减与字符模加相较,其运算公式不同,其它有关字符集合的定义、字符所在集合中位置的确定、进制的确定、运算的参数确定等,均与字符模加相同,此处不再重复解释,只针对与字符模加的不同之处进行说明。
[0175]
字符模减的公式与字符模加不同的是,通过确定字符所在集合中位置信息后,将位置信息作为参与运算的数字,进行减法运算,再与当前集合的字符数量m进行加法运算,获得结果后取当前集合字符数量m的余数作为字符模减的结果,根据结果确定当前字符集合所在的位置信息所代表的字符,该字符即为字符模减后的结果。
[0176]
在减法运算后,再与当前集合的字符数量m进行加法运算,是因为字符a所在的位置信息与字符b所在的位置信息进行减法运算后,可能会产生负值,因此,需要将减法运算产生的运算结果再与当前集合的字符数量m进行加法运算,该种方式可以使得当前的字符位置计算结果为正值,再与m进行取余数的运算来确定当前字符集合所在的位置信息所代表的字符;若字符a所在的位置信息与字符b所在的位置信息进行减法运算所产生的结果为正值,那么,即使与当前集合的字符数量m进行加法运算,根据取余数的运算规则,增加的m,
等同于m与m取余数,结果为0,不影响字符a所在的位置信息与字符b所在的位置信息进行减法的运算结果。
[0177]
下面以上述实施例中26进制的字符集合为例进行说明,相关字符集合的说明及所在位置信息的含义请见上述实施例,此处仅叙述字符模减的运算过程。
[0178]
若字符c与字符x进行字符模减的运算,其过程为:
[0179]
确定字符c的位置信息为2,字符x的位置信息为23;
[0180]
字符c与字符x的字符模减运算为:(2-23+26)%26=(-21+26)%26=5%26=5;
[0181]
确定位置5所对应的字符为f;
[0182]
字符c与x字符模减后的结果为f。
[0183]
再如,字符f与字符c进行字符模减的运算,其过程为:
[0184]
确定字符f的位置信息为5,字符c的位置信息为2;
[0185]
字符f与字符c的字符模减运算为:(5-2+26)%26=(3+26)%26=29%26=3;
[0186]
上述运算也可以理解为(5-2+26)%26=(3+26)%26=3%26+26%26=3+0=3;
[0187]
确定位置3所对应的字符为d;
[0188]
字符f与c字符模减后的结果为d。
[0189]
该计算过程与上述字符模加的过程为相应的计算过程,通过上述实施例可知,字符f与字符x的字符模加后的结果为c,可以简单的理解为f+x=c,根据上述字符模减的运算过程及结果,可以简单的理解为f=c-x,从中可以看出,字符模加与字符模减为相对应的互逆运算。
[0190]
以下通过具体实施例对本发明进行详细说明,图3为本发明实施例所提供的一种分组加密方法,参见图3所示。
[0191]
s301:获取待加密的明文。
[0192]
获取的方式不限制,可以为通过网络接收,也可以从数据库中获取相关的数据,或根据需要由加密方发来的待加密的明文。
[0193]
s302:将待加密明文按分组长度n分成t个明文组;其中,n为大于等于1的整数。
[0194]
在获取待加密的明文时,是能够获得其长度的,以分组长度n为一个固定组块,将获取的待加密的明文划分为t个明文组。
[0195]
需要说明的是,按分组长度n划分明文而形成的明文组,无法确保最后一组的明文正好为一个分组长度n,因此,本技术的技术方案同样需要在最后一组明文中补足满足分组长度n的字符,即需要补位,补位的方式同ecb工作模式、cbc工作模式的补位方式相同,为现有技术中的补位方式,比如,有一种补位方法是补若干个“0”,最后一字节是有效比特数标识,凑为整组。若本来已经是满组,则填补一组,标识字节值为0,本领域的技术人员可以根据ecb工作模式、cbc工作模式来实现本技术所要实现的补位,由于补位的技术方案并不是本技术所要保护的发明点,在不影响本技术技术方案的前提下,本技术定义根据待加密明文按分组长度n分成t个明文组,若分成t个明文组的最后一组不满足分组长度n,则根据现有的技术方案,对最后一组分组进行补位,以获得按分组长度n分成的t个明文组,t为待加密明文的明文组的数量,n为大于等于1的整数。
[0196]
s303:根据获取的参数f,获得加密参数r;其中,加密参数r的长度与分组长度n相同,加密参数r与明文组属于同一字符集合。
[0197]
参数f可以由加密/解密的双方事先约定或指定,也可以为默认值,还可以从接收的待加密的明文中获取,还可以通过约定的计算方式获得,对于f的获取,此处不进行限定。
[0198]
加密参数r的获得是根据参数f而获得的,具体的获得r的方式不限制,可以将f作为某个计算函数的输入,计算得出r,也可以为通过f与密钥计算获得,加密参数r与参数f可以相同,也可以不同,此处不进行限定,只需要确定加密参数r的长度与分组长度n相同,加密参数r与明文组属于同一字符集合即可。
[0199]
s304:判断是否可以获取第i-1组密文组c
i-1
;若是,执行s305,若否,执行s306;其中,1≤i≤t,i为大于等于1的整数,t为待加密明文的明文组的数量。
[0200]
若可以获取第i-1组密文组c
i-1
,说明并不是第一组需要加密的明文组,执行步骤s305,若是第一组待加密的明文组,则执行步骤s306。
[0201]
s305:迭代执行:获取第i-1组的密文组c
i-1
,将所述密文组c
i-1
与所述加密参数r,采用第二加密方式,获得隐秘扰码v;隐秘扰码v与第i组的明文组pi,采用第三加密方式,获得第i组的密文组ci;其中,第二加密方式和第三加密方式均采用格式保留加密算法,使获得的密文组与明文组属于同一字符集合,密文组的长度与明文组的长度相同,第二加密方式与第三加密方式彼此相同/不同。
[0202]
根据第i-1组的密文组c
i-1
,将加密参数r与密文组c
i-1
通过第二加密方式来获得隐秘扰码v,加密参数r的长度与分组长度n相同,与明文组属于同一字符集合,而第二加密方式为格式保留加密算法,因此,获得的隐秘扰码v同样与当前的分组长度n相同,与明文组属于同一字符集合。隐秘扰码v与第i组的明文组pi,采用第三加密方式,获得第i组的密文组ci,第三加密方式同样为保留格式加密算法,获得的密文组ci同样与原明文组的分组长度n相同,且与明文组属于同一字符集合。第二加密方式与第三加密方式,两者都可以采用同一保留格式算法的加密方式,也可以采用不同的保留格式算法的加密方式,此处不限定,确保生成的第i组的密文组ci与明文组属于同一字符集合、与分组长度n相同即可。
[0203]
s306:设定所述第i-1组的密文组c
i-1
为默认值/约定值,设定的密文组c
i-1
的长度与所述分组长度n相同,与所述明文组属于同一字符集合。
[0204]
若无法获取第i-1组的密文组c
i-1
,说明是第一组需要加密的明文组,无法获取到前一组已加密后的密文,因此,设定第i-1组的密文组c
i-1
为默认值/约定值,且设定的密文组c
i-1
的长度与分组长度n相同,与明文组属于同一字符集合。
[0205]
本技术发明实施例的技术方案,使得加密后的密文与加密前的明文的长度和字符相同,实现了对敏感数据的加密,不需要更改原有的数据库结构即可以保存加密数据;且,本发明额外增加了隐秘因子r,在生成当前组的密文组后,由隐秘因子r与当前的密文组通过第二加密方式生成了隐秘扰码v,利用隐秘扰码v参与下一组明文的加密过程,破译者无法像cbc模式那样直接获取参与下一组明文加密运算的参数,防止破译者获取明文组与密文组间的对应,使破译者不能得到有利于开展密码分析的必备素材,进而可一定程度上保障较小分组情形的信息安全,提高了加密的安全性;且,密码分析需要明密对,通常需要很多明密对,而采用本模式,攻击者不能得到明密对,攻击者不能获得有效数据,就无法开展密码分析。可选的,作为其中一种实施例,还包括:
[0206]
获取密钥;
[0207]
在采用第二加密方式和/或第三加密方式之后,还包括:根据密钥,对第二加密方
式和/或第三加密方式产生的加密结果再次加密。
[0208]
第二加密方式和/或第三加密方式所采用加密算法为异或运算、字符模加运算、字符模减运算中任意一种;
[0209]
其中,字符模加运算符合以下公式:
[0210]
y1=(a+b)%m,
[0211]
字符模减运算符合以下公式:
[0212]
y2=(a-b+m)%m,
[0213]
其中,y1表示字符模加后的运算结果,y2表示字符模减后的运算结果,a、b属于同一字符集合中的任一字符,且表示参与运算的参数,m表示字符集合中字符的数量,%表示取m的余数。
[0214]
有关字符模加与字符模减的运算过程,前述已经进行了介绍,本领域技术人员可以根据上述说明对字符进行相应的字符模加、字符模减计算,此处不再赘述。为了叙述方便,本实施例以第二加密方式、第三加密方式为字符模加为例,叙述加密过程。
[0215]
为叙述简便,本发明定义字符模加的运算符号为
⊕
,a
⊕
b意为字符a与字符b进行字符模加的操作。
[0216]
结合附图3及附图4所示,以下通过具体的实施例进行说明。
[0217]
附图4中的初始化向量iv即为设定的第0组的密文组,初始化向量可以为默认值/约定值,该数值也可以为空值,若为空值在参与运算时则默认为字符0,并通过字符0填满一个分组长度。
[0218]
以大家常用的十进制为例,设获得的待加密的明文组为12345678901234567890共20个字符,设定分组长度n为5,即以5个字符为一组,共分成4组明文组,形成的4组明文组分别如下:
[0219]
第1组明文组:12345。
[0220]
第2组明文组:67890。
[0221]
第3组明文组:12345。
[0222]
第4组明文组:67890。
[0223]
根据获取的参数f,获得的隐秘因子r,有关根据参数f获得隐秘因子r的过程,稍后进行叙述,此处设定获取的隐秘因子r为01749。
[0224]
由于未指定初始向量,设定初始化向量iv为00000。
[0225]
当i=1时,由于无法获取到第0分组的密文c0,取c0=00000。
[0226]
第1组明文获得的隐秘扰码v1的过程为,将密文组c0与加密参数r进行字符模加的操作,00000
⊕
01749=01749,即获得第1组明文的隐秘扰码v1为01749。
[0227]
获得第1组的密文组的过程为:将隐秘扰码v1=01749与第1组的明文进行字符模加运算,获得第1组的密文组,01749
⊕
12345=13084,即第1组的密文组c1为13084。
[0228]
当i=2时,第2组明文组获得隐秘扰码v2的过程为:获取第1组的密文组c1为13084,与隐秘因子r=01749进行字符模加操作,即第2组的隐秘扰码v2为13084
⊕
01749=14723。
[0229]
获得第2组的密文组的过程为:将隐秘扰码v2=14723与第2组的明文进行字符模加运算,获得第2组的密文组c2:14723
⊕
67890=71513。
[0230]
当i=3时,第3组明文组获得隐秘扰码v3的过程为:获取第2组的密文组c2为71513,与隐秘因子r=01749进行字符模加操作,即第3组的隐秘扰码v3为71513
⊕
01749=72252。
[0231]
获得第3组的密文组的过程为:将隐秘扰码v3=72252与第3组的明文进行字符模加运算,获得第3组的密文组c3:72252
⊕
12345=84597。
[0232]
当i=4时,第4组明文组获得隐秘扰码v3的过程为:获取第3组的密文组c3为84597,与隐秘因子r=01749进行字符模加操作,即第4组的隐秘扰码v4为84597
⊕
01749=85236。
[0233]
获得第4组的密文组的过程为:将隐秘扰码v4=85236与第4组的明文进行字符模加运算,获得第4组的密文组c4:85236
⊕
67890=42026。
[0234]
将获得的密文组c1c2c3c4连接,获得的最终密文为13084715138459742026。
[0235]
通过上述实施例,以明文组1234567890234567890、隐秘因子r为01749、第二加密方式、第三加密方式均为字符模加为例,叙述获得最终密文13084715138459742026的过程,从以上过程中可以看出,即使分组后出现相同的明文组,如明文组c1与c3相同,但经过该加密方法后,彼此间获得的密文仍然不同,使破译者无法根据密文的格式推断原明文的格式特征,加密后的密文与明文相较,其长度未发生变化,与明文同属于同一字符集合,因此,加密后获得的密文与明文可以采用同一数据结构进行保存,不需要对相关的数据库做出重大的改变,且,与保留格式加密算法相较,不需要针对同一分组采用多次迭代过程,其加密效率及速度大大提升,即使待加密的字符较多较长,加密的速度及加密的时长也不会快速降低,且可以根据实际需要自行定义各种字符集合,适用于各种进制场景并可根据实际需要自行定义字符集合,适用场景广泛,利于保留加密算法的推广。
[0236]
当明文组属于二进制、八进制、十六进制时,第二加密方式、第三加密方式采用异或运算方式、字符模加、字符模减均可,若非二进制、八进制、十六进制时,建议采用字符模加运算、字符模减运算。
[0237]
以下以十进制为例,叙述字符模加运算、字符模减运算与现有技术中异或运算相较的优异性。
[0238]
设,10进制的集合中,字符8与字符5需要通过第二加密方式以获得隐密扰码v。
[0239]
若第二加密方式为字符模加运算,字符8与字符6的结果为(8+6)%10=4。
[0240]
若第二加密方式为字符模减运算,字符8与字符6的结果为(8-6)%10=2。
[0241]
若第二加密方式为异或运算,需要通过进制转换的形式,获得当前字符的二进制码。
[0242]
10进制转换成2进制的方式及异或运算,与现有技术是一致的,此处不再叙述转换过程,10进制的8转换为二进制为1000,10进制的6转换为二进制为110。
[0243]
8与6的二进制的异或的结果为1000xor 0110=1110,将二进制的结果1110转换为10进制后,其结果为14。
[0244]
14的结果并不符合格式保留加密算法的要求,一是长度发生了变化,原来的8、6是一位字符,变成了14的二位字符,长度的变化会造成无法针对明文长度解密,导致丢失明文;二是字符14并不在当前的10进制字符的表达范围内,无法形成最终的隐密扰码v,也可以理解为,异或运算若应用于多进制,无法确保异或运算后的结果与原明文的长度相同、格
式相同。
[0245]
因此,字符模加、字符模减与异或运算相较,其可适用于任何的多进制场景,即可用于格式数据加密,还可以省略进制转换的过程,并可根据实际需要自行定义任意的字符集合以满足实际应用的需要,实用性强,计算速度快,加密效果好,适合大面积推广。
[0246]
可选的,作为其中一种实施例,还包括:
[0247]
获取密钥;
[0248]
在采用第二加密方式和/或第三加密方式之后,还包括:根据密钥,对第二加密方式和/或第三加密方式产生的加密结果采用保留格式算法再次加密。
[0249]
以下通过具体实施例进行说明,参见上述实施例及附图5。
[0250]
为叙述方便,本发明设定用enc(p,k)表示采用保留格式加密算法以参数k作为密钥对一组字符p进行加密。
[0251]
以上述实施例为例,当i=1时,由于无法获取到第0分组的密文c0,设定初始化向量iv为00000。
[0252]
第1组明文获得的隐秘扰码v1的过程为,将密文组c0与加密参数r进行字符模加的操作,00000
⊕
01479=01749,即获得第1组明文的隐秘扰码v1为01749。
[0253]
以上步骤与上述实施例是相同的,在获得隐秘扰码v1后,采用保留格式算法,根据密钥k对获得的v1再次加密,使得到的结果v1`不可预测,即v1`=enc(v1,k)。
[0254]
根据其密钥k采用保留格式加密算法后,即v1=01749,v1`=enc(v1,k),得到的v1`为44758;
[0255]
获得第1组的密文组的过程为:将v1`=44758与第1组的明文进行字符模加运算,获得第1组的初步密文组c1`=12345
⊕
44758=56093;
[0256]
通过密钥再次对初步密文组c1`=56093进行加密,即c1=enc(c1`,k)。
[0257]
设根据其密钥k采用保留格式加密算法后,得到的c1为47186。
[0258]
即第1组的密文组c1为47186。
[0259]
重复上述步骤,直至完成4组明文的加密。
[0260]
通过在第二加密方式和/或在第三加密方式后,再通过密钥对第二加密方式和/或第三加密方式产生的加密结果采用保留格式算法再次加密,可以看出,当加密结果经过密钥对其加密后,使产生的加密结果变得不可预测,对于破译者来说,破解的难度大大提高,被破解的概率小,从而保证了加密后数据的安全性。
[0261]
可选的,作为其中一种实施例,密钥包括第一密钥k1;
[0262]
以第一密钥k1为输入参数,由约定的第一计算函数计算出第二密钥k2、第三密钥k3;
[0263]
或,密钥还包括第二密钥k2、第三密钥k3;
[0264]
或,第二密钥k2、第三密钥k3与第一密钥k1相同;
[0265]
根据密钥,对第二加密方式和/或第三加密方式产生的加密结果再次加密,具体包括:
[0266]
根据密钥中的第二密钥k2,对第二加密方式产生的加密结果再次加密,和/或,根据密钥中的第三密钥k3,对第三加密方式产生的加密结果再次加密。
[0267]
以下通过具体实施例进行说明。
[0268]
密钥k包括第一密钥k1,即获得的密钥信息中只有一个密钥k1时,加密方和解密方可以根据双方的约定,由约定的第一计算函数计算出第二密钥k2、第三密钥k3;
[0269]
如,根据接收到的k1,以k1作为输入,根据双方约定的某个sm3算法,在生成的密文中截取指定长度、指定位置的部分数据,将其转换为符合要求的k2与k3,即可以实现通过k1及约定的第一计算函数(sm3算法),计算出k2、k3。
[0270]
再如,根据接收到的k1,对k1与约定的字符进行字符模加操作,获得k2,再与约定的字符进行一次字符模加的操作,获得k3。
[0271]
再如,根据接收到的k1及双方约定的曲线计算函数,以落在某个坐标位置的数值为基准、经过转换后获得k2、k3等。
[0272]
对于本领域的技术人员来说,根据k1,及第一计算函数的转换,获得k2、k3的方式有多种,此处不再列举。
[0273]
所获得的密钥还可以为,所获得的密钥中包括密钥k1、密钥k2、密钥k3。
[0274]
所获得的密钥还可以为,第二密钥k2、第三密钥k3与所述第一密钥k1相同,即三个密钥一致。
[0275]
根据密钥中的第二密钥k2,对第二加密方式产生的加密结果再次加密,和/或,根据密钥中的第三密钥k3,对第三加密方式产生的加密结果再次加密,以上述实施例为例,即,在第二加密方式产生加密结果后,增加有步骤enc(v,k2),和/或,在第三加密方式产生加密结果后,增加有步骤enc(cn`,k3),第二加密方式后加密所采用的密钥k2与第三加密方式后所采用的密钥k3不同,k2、k3可以根据k1计算而来,也可以接收或双方约定,与现有的只采用同一加密密钥的方式而言,通过采用不同的密钥加密,提高了加密后被破解的难度,提高加密效果,扰乱了密文的混乱程度,使破译者不易被破解密文,提高加密数据的安全性。
[0276]
可选的,作为其中一种实施例,根据获取的参数f,获得的隐秘因子r,具体包括:
[0277]
根据获取的参数据f,采用预设的第一加密方式对参数f加密,获得加密参数r;
[0278]
其中,采用第一加密方式使产生的加密参数r与明文组属于同一字符集合,加密参数r的长度与分组长度n相等。
[0279]
或,所述参数f与所述加密参数r相同。
[0280]
对于获取的参数f不进行限定,可以为任何形式,通过采用预设的第一加密方式对f加密,使获得的加密参数r与明文组属于同一字符集合,加密参数r的长度与分组长度n相等即可。
[0281]
如以上述实施例中待加密的十进制的明文为例,设接收到的f为字符m,加密方及解密方双方约定,第一加密方式可以为根据接收到的加密参数f,将加密参数f转化成ascii表中对应的十进制数值,若十进制的数值不满足当前明文组分组长度n,则通过填充字符0的形式,以满足当前的分组长度的要求,基于上述内容,通过查阅ascii表,获得字符m的十进制数值为77,当前的分组长度为5,那么,通过填充字符0的形式,确定r为00077,即根据接收到的字符m,通过上述预设的第一加密方式,获得加密参数r为00077。
[0282]
以上只是一个简单的举例,在实际的应用中,获取的参数f及预设的第一加密方式要复杂得多,比如,收到的字符f可以为很长的一段字符,以当前字符f为输入,根据传统的hash算法,如sm3算法对字符f作哈希运算,获得一定长度的二进制比特流密文f,对获取一
定长度的二进制比特流密文f截取,获得一段比特流密文f1,通过将二进制转换十进制的方式,将一段比特流密文f1转化成所需要的加密参数r。
[0283]
也就是说,预设的第一加密方式是由加密、解密双方共同约定的,只需要保证加密及解密的双方根据相同的参数f,通过一系列的加密方式,使获得加密参数r完全一致即可,加密的方式不限。
[0284]
当然,若传递的参数f,与明文组属于同一字符集合,其长度与分组长度n相等的前提下,可以为:参数f与加密参数r相同。比如,参数f的获得是通过其它函数计算的方式获得,或者通过密钥获得的情况下,即参数f的安全性很高时,若参数f与明文组属于同一字符集合,其长度与分组长度n相等时,也可以设定参数f与加密参数r相同。
[0285]
本发明的实施例,根据获取的参数f如何获得的隐秘因子r提供了多种技术方案,本发明的实施例,对参数f不进行限定与要求,在传输数据时自由度较大,而通过预设的第一加密方式,通过各种加密手段的变换,使得加密参数r满足长度与分组长度n相同、加密参数r与明文组属于同一字符集合,不影响本发明的加密方法的使用,本发明实施例的技术方案,破译人员无法通过传输的参数f来推断本发明所要采用的加密方式,在实际应用中可以有效的隐藏本发明所采用的加密方法,提高了加密的安全性,且,通过加密算法使生成的隐秘因子r的安全性较高,隐秘因子r又参与每一组明文的加密运算过程来扰乱密文的混乱程度,更好的保护了加密数据,提高了加密数据被破译的难度。
[0286]
可选的,作为其中一种实施例,所述参数f的获取方式,包括:
[0287]
以密钥为输入参数,由约定的第二计算函数计算出所述参数f;
[0288]
或,以所述密钥中的部分值作为所述参数f。
[0289]
或,以约定的值作为所述参数f;
[0290]
或,以默认的值作为所述参数f。
[0291]
在获取密钥时,可以根据约定的第二计算函数(如sm3)计算出所述参数f,如,以获取的密钥为输入,根据hash算法如sm3算法以获得一定长度的二进制比特流密文f,截取一定长度的二进制比特流密文f,而获得参数据f;或,在获得密钥后,根据指定的长度及位置截取密钥信息,如密钥为48537,那么,可以根据约定截取前三位字符,将485作为参数f;或,以约定的值作为所述参数f,比如双方共同约定参数f为47887;或,以默认的值作为所述参数f,即若不指定参数,则采用系统设置的默认值。
[0292]
本发明的实施例,通过密钥而确定参数f,或根据默认值/约定值确定参数,使得在加密数据的传输过程中,不需要再传递参数f的信息,节省了传输资源,破译者在破解加密数据时缺少参考数据,从而提高了被破译的难度,相对的保障了加密数据的安全性。
[0293]
可选的,作为其中一种实施例,本发明还提供了一种分组解密方法,见图6所示。
[0294]
s601:获取待解密密文的长度s及分组长度n,确定分成t组密文组;t为待解密密文的密文组的数量。
[0295]
根据获取的密文长度s及分组长度n,待分组t=s/n,确定分成t组密文组。前述已经叙述,对于分组的加密方式,若最后一组不满足分组长度,需要通过补位的形式使得最后一组满足其分组长度n。若根据待解密的密文的长度s及分组长度n,计算得到的t为小数而非整数时,可能待解密的密文的数据被破坏,或是其它原因导致解密数据丢失,因此,若根据t=s/n,计算得到的t并非正整数,则可以确定获取的待解密密文存在问题而不需要解
密,相对的侧面的验证了加密数据的完整性。
[0296]
s602:根据获取的参数f,获得加密参数r,其中,加密参数r的长度与分组长度n相同,加密参数r与密文组属于同一字符集合。
[0297]
该步骤与加密的方式获取参数f,获得加密参数r的方式相同,此处不再赘述。
[0298]
s603:判断是否可以获取第i-1分组的密文组c
i-1
;若是,执行s604,若否,执行s605;其中,1≤i≤t,i为大于等于1的整数。
[0299]
若可以获取第i-1分组的密文组c
i-1
,说明并不是第一组需要加密的明文组,执行步骤s604,若是第一组待加密的明文组,则执行步骤s605。
[0300]
s604:迭代执行:获取第i-1组的密文组c
i-1
,根据密文组c
i-1
与加密参数r,采用第二加密方式,获得隐秘扰码v;根据隐秘扰码v与第i组的密文组ci,采用与第三加密方式相对应的第三解密方式,获得第i组的明文组pi;第二加密方式和第三加密方式采用格式保留加密算法,第二加密方式与第三加密方式彼此相同/不同。
[0301]
该解密过程与加密过程为相应的过程,而与加密不同的是,该过程为并行执行的过程,因为加密时,需要等待前一组加密完成后才能获得前一组的加密密文组c
i-1
,而在解密时,通过确定的t组密文组,即可以确定前一组的密文组c
i-1
,因此,解密时多组密文组可以并行执行该解密过程,而不需要等待前一组完成后执行。
[0302]
s605:确定第i-1组的密文组c
i-1
为预先确定的默认值,设定的密文组c
i-1
的长度与分组长度n相同,与明文组属于同一字符集合。
[0303]
若无法获取第i-1组的密文组c
i-1
,说明是第一组需要解密的密文组,无法获取到前一组已加密后的密文,因此,设定第i-1组的密文组c
i-1
为默认值。
[0304]
本发明的实施例,通过获取密文长度s及分组长度t,根据公式t=s/n,若计算获得的t并非正整数,可以确定获取的密文数据被破坏,在解密之前侧面的验证了待解密密文数据的完整性,若待解密数据不符合要求则不再继续解密,避免因数据错误而对其解密造成的计算资源浪费,且,与传统的格式保留加密算法相较,可适用于数据量大时的解密,且本技术的解密过程为并行的解密过程,通过确定的t组密文组,即可以确定前一组的密文组c
i-1
,因此,解密时多组密文组可以并行执行该解密过程,而不需要等待前一组完成后执行,解密的速度大大加快,解密的效率高,有利于格式保留加密算法的推广。
[0305]
可选的,作为其中一种实施例,第二加密方式和/或第三加密方式所采用的加密算法为异或运算、字符模加运算、字符模减运算中任意一种;
[0306]
其中,字符模加运算符合以下公式:
[0307]
y1=(a+b)%m,
[0308]
字符模减运算符合以下公式:
[0309]
y2=(a-b+m)%m,
[0310]
其中,y1表示字符模加后的运算结果,y2表示字符模减后的运算结果,a、b属于同一字符集合中的任一字符,且表示参与运算的参数,m表示字符集合中字符的数量,%表示取m的余数。
[0311]
与第三加密方式相对应的第三解密方式,具体包括:
[0312]
获取第三加密方式所采用的加密算法;
[0313]
若加密算法为异或运算,则对应的解密算法为异或运算;
[0314]
若加密算法为字符模加运算,则对应的解密算法为字符模减运算;
[0315]
若加密算法为字符模减运算,则对应的解密算法为字符模加运算;
[0316]
确定的对应的解密算法为第三解密方式。
[0317]
以下通过具体实施例进行说明。
[0318]
见图7所示及上述实施例中图4所示的实施例为例,叙述其解密的过程。
[0319]
图4中的实施例所采用的加密算法为字符模加运算,则对应的解密算法为字符模减运算,因此,本实施例的解密方式采用与图4中实施例对应的字符模减运算来进行解密,对于本领域的技术人员来说,可以根据实际需要确定相应的解密方式并解密。
[0320]
为了叙述方便,此处定义字符模减的符号为为了叙述方便,此处定义字符模减的符号为意为字符a与字符b进行字符模减的操作。
[0321]
设获取到的密文组为13084715138459742026,并获得了分组长度n为5,通过计算,获得密文组4组,c1=13084,c2=71513,c3=84597,c4=42026。
[0322]
在解密过程中涉及到的参数f的获取方式,及根据获取的参数f、获得加密参数r的过程可参见上述实施例,此处不再赘述。
[0323]
设,本实施例中,根据参数f获得隐秘因子r为01749。当i=1时,由于无法获取到第0分组的密文c0,设定初始化向量iv为00000。
[0324]
第1组密文组获得的隐秘扰码v1的过程为,将密文组c0与加密参数r进行字符模加的操作,即获得第1组明文的隐秘扰码v1为01749。
[0325]
获得第1组的明文组的过程为:将第1组的密文与隐秘扰码v1=01749进行字符模减运算,获得第1组的密文组,即第1组的明文组p1为12345。
[0326]
当i=2时,第2组密文组获得隐秘扰码v2的过程为:获取第1组的密文组c1为13084,与隐秘因子r=01749进行字符模加操作,即第2组的隐秘扰码v2为
[0327]
获得第2组的明文组的过程为:将第2组的密文c2=71513与隐秘扰码v2=14453进行字符模减运算,获得第2组的明文组p2:
[0328]
当i=3时,第3组明文组获得隐秘扰码v3的过程为:获取第2组的密文组c2为71513,与隐秘因子r=01749进行字符模加操作,即第3组的隐秘扰码v3为
[0329]
获得第3组的密文组的过程为:将第3组的明文与隐秘扰码v3=72252进行字符模减运算,获得第3组的明文组p3:
[0330]
当i=4时,第4组明文组获得隐秘扰码v3的过程为:获取第3组的密文组c3为84597,与隐秘因子r=01749进行字符模加操作,即第4组的隐秘扰码v4为
[0331]
获得第4组的密文组的过程为:将第4组的密文与隐秘扰码v4=85236进行字符模减运算,获得4第组的明文组p4:
[0332]
本发明的解密的步骤可以并行进行。
[0333]
将获得的明文组p1p2p3p4连接,获得的最终明文为12345678901234567890。
[0334]
通过上述实施例,以密文组13084715138459742026、隐秘因子r为01749、第二加密
方式、第三加密方式均为字符模加为例,叙述获得最终明文1234567890234567890的过程,从以上过程中可以看出,本发明的解密过程较加密过程相较,各分组的解密过程可以同时进行,且相互不影响,解密时间较加密时间更快,且本方案的字符模加、字符模减法可以适用于各种进制,可根据实际需要自行定义字符集合以满足实际中的各种需求,较传统的异或运算相较,省略了进制转换的过程,加快了解密速度,且可适用于各种保留加密算法的场景,解密时间短,不受待加密字符长短的限制,即使待解密的数据较多较长,解密的时间和速度依然不受影响,适用场景广泛,利于保留加密算法的推广。
[0335]
可选的,作为其中一种实施例,还包括:
[0336]
获取密钥;
[0337]
在采用第二加密方式之后,还包括:
[0338]
根据密钥,对第二加密方式产生的加密结果再次加密;
[0339]
和/或,
[0340]
在获取第i组的密文组ci之后,在采用与第三加密方式相对应的第三解密方式之前,还包括:根据密钥对第i组的密文组ci解密。
[0341]
见图8所示及上述实施例中图5所示的实施例为例,叙述其解密的过程。
[0342]
为叙述方便,本发明设定用dec(p,k)表示采用保留格式加密算法以参数k作为密钥对一组字符p进行解密。
[0343]
以上述实施例为例,当i=1时,由于无法获取到第0分组的密文c0,设定初始化向量iv为00000。
[0344]
第1组密文组获得的隐秘扰码v1的过程为,将密文组c0与加密参数r进行字符模加的操作,即获得第1组密文组的隐秘扰码v1为01749。
[0345]
以上步骤与上述实施例是相同的,在获得隐秘扰码v1后,采用保留格式算法,根据密钥k对获得的v1再次加密,使得到的结果v1`不可预测,即v1`=enc(v1,k)。
[0346]
设根据其密钥k采用保留格式加密算法后,即v1`=enc(v1,k),v1=01749时,根据其密钥k加密后得到的v1`为44758;
[0347]
获得第1组的明文组的过程为:
[0348]
通过密钥k,先对密文分组进行解密,即dec(c1,k)。
[0349]
根据c1=47186,通过密钥k对其解密,即dec(c1,k),得到c1`=56093。
[0350]
将c1`与第1组获得的v1`进行相应的解密过程,即`与第1组获得的v1`进行相应的解密过程,即确定第一组的明文组p1为12345。
[0351]
重复上述步骤,直至完成4组明文的解密。
[0352]
可选的,作为其中一种实施例,所述第三加密方式相对应的第三解密方式,具体包括:
[0353]
获取第三加密方式的加密算法,根据所述加密算法确定的对应的解密算法,确定第三解密方式。
[0354]
第三加密方式为任何一种保留格式加密算法,本技术有列举异或运算、字符模加运算、字符模减运算,但保留格式加密算法还可以包括ff1、ff3等,因此,本领域的技术人员根据第三加密方式的加密算法,确定对应的解密算法,根据解密算法来确定第三解密方式。
[0355]
本发明的实施例,保留格式的加密算法具有多种,因此,可以根据实际的需要设定
适合的加密方式,在解密时根据加密方式确定相应的解密方式,方式灵活多变,适用各种场景。
[0356]
可选的,作为其中一种实施例,密钥包括第一密钥k1;
[0357]
以第一密钥k1为输入参数,由约定的第一计算函数计算出第二密钥k2、第三密钥k3;
[0358]
或,密钥信息中还包括第二密钥k2、第三密钥k3;
[0359]
或,第二密钥k2、第三密钥k3与第一密钥k1相同;
[0360]
根据密钥,对第二加密方式产生的加密结果再次加密,具体包括:
[0361]
根据密钥中的第二密钥k2,对第二加密方式产生的加密结果再次加密;
[0362]
和/或,根据密钥对第i组的密文组ci解密,具体包括:
[0363]
根据密钥中的第三密钥k3,对第i组的密文组ci解密。
[0364]
以下通过具体实施例进行说明。
[0365]
密钥k包括第一密钥k1,即获得的密钥信息中只有一个密钥k1时,加密方和解密方可以根据双方的约定,由约定的第一计算函数计算出第二密钥k2、第三密钥k3;
[0366]
如,根据接收到的k1,以k1作为输入,根据双方约定的某个sm3算法,在生成的密文中截取指定长度、指定位置的部分数据,将其转换为符合要求的k2与k3,即可以实现通过k1及约定的第一计算函数(sm3算法),计算出k2、k3。
[0367]
再如,根据接收到的k1,对k1与约定的字符进行字符模加操作,获得k2,再与约定的字符进行一次字符模加的操作,获得k3。
[0368]
再如,根据接收到的k1及双方约定的曲线计算函数,以落在某个坐标位置的数值为基准、经过转换后获得k2、k3等。
[0369]
对于本领域的技术人员来说,根据k1,及第一计算函数的转换,获得k2、k3的方式有多种,此处不再列举。
[0370]
所获得的密钥还可以为,所获得的密钥中包括密钥k1、密钥k2、密钥k3。
[0371]
所获得的密钥还可以为,第二密钥k2、第三密钥k3与所述第一密钥k1相同,即三个密钥一致。
[0372]
根据密钥中的第二密钥k2,对第二加密方式产生的加密结果再次加密,和/或,根据密钥中的第三密钥k3,在采用与所述第三加密方式相对应的第三解密方式之前,先对第i组的密文组ci解密,而1≤i≤t,t为待解密密文的密文组的数量,i为大于等于1的整数。
[0373]
以上述实施例为例,即,在第二加密方式产生加密结果后,增加有步骤enc(v,k2),和/或,在采用与第三加密方式相对应的第三解密方式之前,增加有步骤:根据密钥对第i组的密文组ci解密,即dec(ci,k3),第二加密方式后加密所采用的密钥k2与对第i组的密文组ci解密的密钥k3不同,k2、k3可以根据k1计算而来,也可以接收或双方约定,与现有的只采用同一加密密钥的方式而言,通过采用不同的密钥加密及解密以获取对应的明文,相对的提高了被破解的难度,提升加密效果,使破译者不易被破解密文,提高加密的安全性。
[0374]
可选的,作为其中一种实施例,本发明还提供了一种数据加密装置900,参见图9所示,装置900包括:
[0375]
初始化模块901,用于将待加密明文按n个字符的分组长度分成t个明文组;
[0376]
获取模块902,用于根据获取的参数f,获得加密参数r,加密参数r的长度与分组长
度n相同,加密参数r与明文组属于同一字符集合;
[0377]
生成模块903,用于迭代执行:获取第i-1组的密文组c
i-1
,将密文组c
i-1
与获取模块902中获得的加密参数r,采用第二加密方式,获得隐秘扰码v;隐秘扰码v与第i组的明文组pi,采用第三加密方式,获得第i组的密文组ci;还用于,若无法获取第i-1分组的密文组c
i-1
时,则设定第i-1组的密文组c
i-1
为默认值;
[0378]
其中,1≤i≤t,t为待加密明文的明文组的数量,i为大于等于1的整数,n为大于等于1的整数,第二加密方式和第三加密方式采用格式保留加密算法,使获得的密文组与明文组属于同一字符集合,密文组的长度与明文组的长度相同,第二加密方式与第三加密方式彼此相同/不同。
[0379]
可选的,作为其中一种实施例,本发明还提供了一种数据解密装置1000,参见图10所示,装置1000包括:
[0380]
初始化模块1001:用于获取待解密密文的长度s及分组长度n,确定分成t组密文组;
[0381]
获取模块1002:用于根据获取的参数f,获得加密参数r,加密参数r的长度与分组长度n相同,加密参数r与密文组属于同一字符集合;
[0382]
解密模块1003:用于迭代执行:获取第i-1组的密文组c
i-1
,根据密文组c
i-1
与获取模块1002获得的加密参数r,采用第二加密方式,获得隐秘扰码v;根据隐秘扰码v与第i组的密文组ci,采用与第三加密方式相对应的第三解密方式,获得第i组的明文组pi;还用于,若无法获取第i-1分组的密文组c
i-1
时,确定第i-1组的密文组c
i-1
为预先确定的默认值;
[0383]
其中,i为大于等于1的整数,n为大于等于1的整数,第二加密方式和第三加密方式均采用格式保留加密算法,使获得的密文组与明文组属于同一字符集合,密文组的长度与明文组的长度相同,第二加密方式与第三加密方式彼此相同/不同。
[0384]
可选的,作为其中一种实施例,本发明还提供了一种数据加密设备1100,见附图11所示,设备1100包括:处理器1101和存储器1102;
[0385]
处理器1101用于调用存储器1102中存储的程序,当程序被执行时,使得处理器执行上述实施例中任一项的加密方法。
[0386]
可选的,作为其中一种实施例,本发明还提供了一种数据解密设备1200,见附图12所示,设备包括:处理器1201和存储器1202;
[0387]
处理器1201用于调用存储器1202中存储的程序,当程序被执行时,使得处理器1201执行上述实施例中任一项的解密方法。
[0388]
可选的,作为其中一种实施例,本发明还提供了一种计算机存储介质,存储有计算机程序,该计算机程序包括用于执行上述实施例中任一项的加密方法,和/或,上述实施例中任一项解密的方法。
[0389]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、pd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0390]
本技术是参照根据本技术的方法、设备(系统)、和计算机程序产品的流程图和/或
方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0391]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0392]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0393]
显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。