3.3.密文解密
介绍idea加密算法的资料本就不多而且对于解密过程往往一笔带过,笔者在编程实现idea算法时为此大伤脑筋,好在这块骨头总算被啃下了.下文笔者将结合实现代码介绍一下解密过程,如果读者想亲自动手实现idea算法,笔者的”痛苦经验”是可以让你少走些弯路的.
解密操作和加密的步骤基本相同,但是在求密钥时有所区别.
首先从用户输入的128位密钥扩展出52个子密钥,存放在ulong16 key[52]数组中,然后对这个52个子密钥进行换位操作,
新位置:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
原位置:
48
49
50
51
46
47
42
44
43
45
40
41
36
38
新位置:
14
15
16
17
18
19
20
21
22
23
24
25
26
27
原位置:
37
39
34
35
30
32
31
33
28
29
24
26
25
27
新位置:
28
29
30
31
32
33
34
35
36
37
38
39
40
41
原位置:
22
23
18
20
19
21
16
17
12
14
13
15
10
11
新位置:
42
43
44
45
46
47
48
49
50
51
原位置:
6
8
7
9
4
5
0
1
2
3
表中的原位置行的值代表该子密钥在原密钥数组中的位置,比如新密钥数组中的第0号子密钥为原来子密钥组中的第48号子密钥,对子密钥数组换位后,就需要对某些子密钥进行模216+1的乘法逆或模216加法逆的替换,详情见下表(位置是针对换位后的子密钥组)请看 下一页
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器