1.本发明涉及一种非对称密匙加密方法,属于电通信与改进算法优化技术领域。
背景技术:
2.现有技术中采用非对称加密算法对待加密数据进行加密,非对称加密算法的有效密匙长度为32位,密匙长度较短,这样对数据的加密性较低。待加密数据在进行迭代的过程比较单一,即使将密匙的长度增加,但是其迭代过程不会发生改变。
技术实现要素:
3.本发明要解决的技术问题是提供一种非对称密匙加密方法,用于解决上述问题。
4.本发明的技术方案是:一种非对称密匙加密方法,具体步骤为:
5.step1:增加初始获取数据量,对原文的信息长度进行1024bit取余,不足的进行填充,填充完后,信息的长度就是(1024*n 896)bit。通过改变填充方法,达到与现有算法不一致填充数据的目的,将m记为处理后的原文长度。
6.step2:对数据进行初始处理,数据初始处理后的信息长度为1024*(n 1)bit,然后用哈希算法将1024bit数据进行分组,变为256bit明文数据,从而增加分组位数,提高密文的复杂性。
7.step3:进行第一次循环,由密匙1与明文进行异或处理,得到新128bit密文数据。从而增加密匙长度,原有密匙长度大多为32bit,本发明将密匙长度增加至128bit,提高密匙的复杂性。
8.step4:进行第二次循环,由密匙2与第三步得出一次加密的密文数据进行异或处理,得到新的128bit密文。从而减少密匙与明文的处理非线性函数,由4个变为2个,缩短计算时间,提升加密效率。
9.step5:将经过二次加密后的密文数据按照加密的先后顺序进行拼接处理,得出明文对应的最终加密数据。从而将单次循环改进为二次循环,增加密文的复杂性,提高算法的安全性。
10.所述step1中进行填充具体为:奇数位填充1,偶数位填充0。
11.step2具体步骤为:
12.step2.1:将256bit加密数据分为2组128bit初始值,前128bit记为a0,后128位记为b0。
13.step2.2:将任意长密匙1分成n个128bit数据,不足的128bit进行补位,首位补1,其余位补0。
14.step2.3:将b0与密匙1进行异或处理,得到新的数据c0。
15.step3具体步骤为:
16.step3.1:将256bit加密数据分为2组128bit初始值,前128bit记为a0,后128位记为b0。
17.step3.2:将任意长密匙1分成n个128bit数据,不足的128bit进行补位,首位补1,其余位补0。
18.step3.3:将b0与密匙1进行异或处理,得到新的数据c0。
19.step3.4:将第一组作为循环方向,前4bit转为10进制为行,后4it转为10进制为列,查询循环方向表,确定循环方向。
20.step3.5:将最后一组作为单次循环位数,前4bit转为10进制为行,后4it转为10进制为列,查询循环位数表,确定循环位数。
21.step3.6:将处理后的数据a0记为b1,b0记为a1。
22.step4具体步骤为:
23.step4.1:将256bit加密数据分为2组128bit初始值,前128bit记为e0,后128位记为f0。
24.step4.2:将任意长密匙1分成n个128bit数据,不足的128bit进行补位,首位补1,其余位补0。
25.step4.3:将f0与密匙1进行异或处理,得到新的数据g0。
26.step4.4:将第一组作为循环方向,前4bit转为10进制为行,后4it转为10进制为列,查询对应循环方向表,确定循环方向。
27.step4.5:将最后一组作为单次循环位数,前4bit转为10进制为行,后4it转为10进制为列,查询对应循环位数表,确定循环位数。
28.step4.6:将处理后的数据e0记为f1,f0记为e1。
29.将经过二次加密数据e1和f1,按照处理的先后顺序拼接起来,输出密文。
30.本发明提出用户可以使用任意有限长度的密匙,其迭代过程中的循环方向、循环次数等都与密匙相关,这样增加了信息传递的安全性与可靠性。非对称密钥加密算法基础循环加工过程,准备需要用到的数据包括:
31.常数:a=(0123456789abcdef)16,b=(fedcba9876543210)16
32.非线性函数:f(x,y)=x
⊕
y;g(x,y)=(~x)
⊕
y
33.本发明的有益效果是:本发明通过对非对称密匙加密算法循环加工过程进行优化,减少了加密所用的时间,减少了子循环次数;通过将单次循环变为二次加工后循环,提高了加密的复杂度。
附图说明
34.图1是本发明的步骤流程图。
具体实施方式
35.下面结合附图和具体实施方式,对本发明作进一步说明。
36.实施例1:如图1所示,一种非对称密匙加密方法,先将任意长度的明文按字节长度进行分组,每组为256bit,将256bit按照128bit组分2组;再将密匙分为每组128bit,用密匙对明文进行处理,只对前组处理过的明文进行循环加密,主循环的循环次数为m/256*2,其中m为处理后的原文长度,每个循环中包含256/128*2=4次子循环。
37.具体步骤为:
38.step1:增加初始获取数据量;
39.将原始明文长度按照字节长度1024bit取余,并对明文进行填充,填充完后,信息的长度就是(1024*n 896)bit,用128bit填充原始明文长度,处理后的信息长度为1024*(n 1)bit。
40.step2:数据初始处理;
41.数据初始处理后的信息长度为1024*(n 1)bit,然后用哈希算法将1024bit数据变为256bit明文数据,将256bit按照128bit进行分2组,只对前组处理过的明文进行循环加密。
42.step3:第一次循环加密;
43.将密匙1进行分组,与明文一一对应进行异或处理,每次循环会产生一段新的128bit密文数据。
44.step4:第二次循环加密;
45.将密匙2进行分组,与经过一次加密后的密文一一对应进行异或处理,每次循环会产生一段新的128bit密文数据。
46.step5:输出密文;
47.将经过二次加密的密文数据,按照处理的先后顺序拼接起来,得到最终的密文数据。
48.本发明中具体加密过程为:
49.1、数据填充:
50.所述step1中明文对1024bit取余,如果结果不为896bit,则对原文进行填充;填充的方法是奇数位填充1,偶数位填充0。填充完成后信息的长度就是(1024*n 896)bit明文数据。
51.2、记录原文:
52.所述step1中,用128bit记录原文的真正长度,把长度的二进制值补在最后,使处理后的信息长度为1024*(n 1)bit。将处理后的明文数据记为m,将m按照256bit数据进行分组,组数为m/256组。
53.3、第一次密匙加密:
54.所述step3中,利用非对称密匙加密算法对第二步中哈希算法得到的256bit数据进行初次加密处理,得到256bit密文数据。其特征在于:将初次加密的256bit数据,分为2组128bit初始值。前128bit记为a0,后128bit记为b0。
55.3.1、密匙1分组:
56.所述step3中,将任意有限长度的密匙1进行分组处理,分成n个128bit的数据,不足128bit的进行补位,可以将首位补1,其余位补0。
57.3.2、原始明文加密:
58.在所述step3中,将b0与密匙1进行异或运算,得到新的128bit密文数据,记为数据c0,将该数据c0每8bit记为一组;先根据密匙1确定循环方向,将密匙1第一小组作为循环方向,将前4bit转换为10进制后作为行,后4bit转换为10进制后作为列,查询附表1循环方向表;再根据密匙1确定循环位数,将密匙1最后小组作为单次循环移位数,将前4bit转换为10进制后作为行,后4bit转换为10进制后作为列,查询附表2循环位数表。
[0059]1‑1‑
1111
‑
1111
‑
111
‑
111
‑1‑1‑1‑1‑1‑
11111
‑
111
‑
11
‑1‑
1111
‑1‑1‑
11111
‑1‑1‑
11
‑
111
‑1‑1‑1‑1‑1‑
11111
‑
11
‑
11
‑1‑1‑
11
‑1‑1‑
11
‑1‑
11
‑1‑1‑
1111
‑
111111
‑
11111111
‑1‑
111
‑1‑1‑
111
‑
111
‑1‑
1111
‑1‑
111
‑1‑1‑1‑
11
‑
11
‑1‑
11
‑1‑1‑1‑
11
‑
11
‑
11
‑1‑1‑1‑
111
‑
11
‑
1111
‑
111
‑1‑1‑
11
‑1‑1‑
11
‑
1111
‑1‑
1111
‑1‑1‑
1111111111
‑
11
‑1‑1‑
11
‑1‑1‑
111
‑1‑1‑
11
‑
11
‑
11111
‑1‑1‑
11
‑1‑
11
‑1‑1‑
111111
‑1‑1‑1‑1‑1‑1‑1‑
11
‑
1111111
‑1‑1‑
11
‑1‑1‑
1111
‑1‑1‑
11
‑1‑1‑
111111
‑1‑1[0060]
附表1:循环方向表
[0061]
3.3、第一次密文生成:
[0062]
将循环移位的数据c0记为新的密文数据a1,数据a0记为密文数据b1。
[0063]
4、第二次密匙加密:
[0064]
所述step4,将第一次密文进行二次加密,分为2组128bit待加密数据,前128bit记为e0,后128bit记为f0。
[0065]
4.1、密匙2分组:
[0066]
所述step4中,将任意有限长度的密匙2做分组处理,分成n个128bit的数据,不足128bit的进行补位,可以将首位补1,其余位补0。
[0067]
4.2、明文二次加密:
[0068]
在所述step4中,将e0与密匙2进行异或运算,得到新的128bit密文数据,记为数据g0,将该数据g0每8bit记为一组。先根据密匙2确定循环方向,将密匙2第一小组作为循环方向,将前4bit转换为10进制后作为行,后4bit转换为10进制后作为列,查询附表1循环方向;再根据密匙2确定循环位数,将密匙2最后小组作为单次循环位移数,将前4bit转换为10进制后作为行,后4bit转换为10进制后作为列,查询附表2循环位数表。
[0069]
77687846647855854884634844835753466684554467546453533874673567645476375678788677675448457647373444565754843667566336576444748664
74565577446847747846546875763636667477473644683545536388477843766834866643745434354666556875755357454433676458486657583336346688
[0070]
附表2:循环位数表
[0071]
4.3、第二次密文生成:
[0072]
经过明文二次加密,将循环位移过后的密文数据g0记为密文数据f1,数据f0记为密文数据e1。
[0073]
5、输出密文:
[0074]
原始明文经过二次加密,将经过二次循环的f1和e1按照处理的先后顺序拼接在一起,生成由密匙对应的密文。
[0075]
以上结合附图对本发明的具体实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。
再多了解一些
本文用于企业家、创业者技术爱好者查询,结果仅供参考。