导航:首页 > 源码编译 > idea算法c

idea算法c

发布时间:2024-10-31 03:39:16

⑴ 高分求C#版的IDEA算法

1、IDEA基本概念
2、IDEA设计原理
3、IDEA加密过程
4、IDEA解密过程

3

IDEA(International Data Encryption Algorithm)是瑞士的James Massey,Xuejia Lai等人提出的加密算法,在密码学中属于数据块加密算法(Block Cipher)类。

IDEA使用长度为128bit的密钥,数据块大小为64bit。从理论上讲,IDEA属于“强”加密算法,至今还没有出现对该算法的有效攻击算法。

1. IDEA基本概念

4

早在1990年,Xuejia Lai等人在EuroCrypt’90年会上提出了分组密码建议PES(Proposed Encryption Standard)。在EuroCrypt’91年会上, Xuejia Lai等人又提出了PES的修正版IPES(Improved PES)。目前IPES已经商品化,并改名为IDEA。IDEA已由瑞士的Ascom公司注册专利,以商业目的使用IDEA算法必须向该公司申请许可。

IDEA基本概念

5

IDEA是一个分组长度为64位的分组密码算法,密钥长度为128位(抗强力攻击能力比DES强),同一算法既可加密也可解密。
IDEA能抗差分分析和相关分析;
IDEA似乎没有DES意义下的弱密钥;
IDEA的“混淆”和“扩散”设计原则来自三种运算,它们易于软、硬件实现(加密速度快)

IDEA基本概念

6

异或运算( )
整数模216加( + )
整数模216+1乘( )(IDEA的S盒)
扩散由称为MA结构的算法基本构件提供。

Z6

F2

F1

Z5

G1

G2

IDEA运算

7

实现上的考虑
使用子分组:16bit的子分组;
使用简单操作(易于加法、移位等操作实现)
加密解密过程类似;
规则的结构(便于VLSI实现)。

IDEA运算

8

2. IDEA设计原理

1 密码的强度:主要是通过混淆和扩散来实现。

混淆实现的方法:

(1)逐比特异或。表示为

(2) 模 整数加法,表示为 ,其输入和输出作为

16位无符号整数处理。

模 整数乘法,表示为 ,其输入和输出中除16
全0作为 处理外,其余都作为16位无符号整数处理。

9

例如
0000000000000000⊙1000000000000000
=1000000000000001
这是因为216×215 mod (216+1)=215+1。

IDEA设计原理

10

表3.6给出了操作数为2比特长时3种运算的运算表。在以下意义下,3种运算是不兼容的:

① 3种运算中任意两种都不满足分配律,例如 a + (b ⊙ c)≠(a + b ) ⊙ (a + c )

② 3种运算中任意两种都不满足结合律,例如 a +(b � c)≠(a + b ) � c

+

IDEA设计原理

11

3种运算结合起来使用可对算法的输入提供复杂的变换,从而使得对IDEA的密码分析比对仅使用异或运算的DES更为困难。

算法中扩散是由称为乘加(multiplication/addition, MA)结构(见图4.14)的基本单元实现的。

该结构的输入是两个16比特的子段和两个16比特的子密钥,输出也为两个16比特的子段。这一结构在算法中重复使用了8次,获得了非常有效的扩散效果。

IDEA设计原理

12

IDEA算法的扩散主要是由乘加结构的基本单元实现的。

IDEA的MA结构

13

IDEA加密的总体方案

循环2

循环8

循环1

输出变换

64位密文

64位明文

Z1

Z6

Z7

Z12

Z43

Z48

Z49

Z52

子密钥生成器

128位密钥

Z1

Z52

16

14

IDEA加密的总体方案图

15

IDEA加密过程

第1轮

64比特明文

X1

X2

X3

X4

第2轮

W11

W12

W13

W14

第8轮

W71

W72

W73

W74

W21

W22

W23

W24

W81

W82

W83

W84

输出变换

Y1

Y2

Y3

Y4

密文



Z1

Z6



Z7

Z12



Z43

Z48



Z49

Z52

字密钥生成器

128比特密钥

Z1

Z52

16

加密过程(如图4.15所示)由连续的8轮迭代和一个输出变换组成,算法将64比特的明文分组分成4个16比特的子段,每轮迭代以4个16比特的子段作为输入,输出也为4个16比特的子段。最后的输出变换也产生4个16比特的子段,链接起来后形成64比特的密文分组。每轮迭代还需使用6个16比特的子密钥,最后的输出变换需使用4个16比特的子密钥,所以子密钥总数为52。图4.15的右半部分表示由初始的128比特密钥产生52个子密钥的子密钥产生器。

3. IDEA加密过程

17

图4.16是IDEA第1轮的结构示意图,以后各轮也都是这种结构,但所用的子密钥和轮输入不同。从结构图可见,IDEA不是传统的Feistel密码结构。每轮开始时有一个变换,该变换的输入是4个子段和4个子密钥,变换中的运算是两个乘法和两个加法,输出的4个子段经过异或运算形成了两个16比特的子段作为MA结构的输入。MA结构也有两个输入的子密钥,输出是两个16比特的子段。

IDEA的轮结构

18

IDEA第1轮的轮结构

19

Y1

Y2

Y3

Y4

1 轮结构

20

最后,变换的4个输出子段和MA结构的两个输出子段经过异或运算产生这一轮的4个输出子段。注意,由X2产生的输出子段和由X3产生的输出子段交换位置后形成W12和W13,目的在于进一步增加混淆效果,使得算法更易抵抗差分密码分析。

IDEA加密过程

21

在每一轮中,执行的顺序如下:

1. X1和第一个子密钥相乘。

2. X2和第二个子密钥相加。

3. X3和第三个子密钥相加。

4. X4和第四个子密钥相乘。

5. 将第1步和第3步的结果相异或。

6. 将第2步和第4步的结果相异或。

IDEA每一轮的加密顺序

22

7. 将第5步的结果与第五个子密钥相乘。
8. 将第6步和第7步的结果相加。
9. 将第8步的结果与第六个子密钥相乘。
10.将第7步和第9步的结果相加。
11.将第1步和第9步的结果相异或。
12.将第3步和第9步的结果相异或。
13.将第2步和第10步的结果相异或。
14.将第4步和第10步的结果相异或。

IDEA每一轮的加密顺序

23

算法的第9步是一个输出变换,如图4.17所示。它的结构和每一轮开始的变换结构一样,不同之处在于输出变换的第2个和第3个输入首先交换了位置,目的在于撤销第8轮输出中两个子段的交换。还需注意,第9步仅需4个子密钥,而前面8轮中每轮需要6个子密钥。

IDEA每一轮的加密顺序

24

IDEA的输出变换

25

加密过程中52个16比特的子密钥是由128比特的加密密钥按如下方式产生的: 前8个子密钥Z1,Z2,…,Z8直接从加密密钥中取,即Z1取前16比特(最高有效位),Z2取下面的16比特,依次类推。然后加密密钥循环左移25位,再取下面8个子密钥Z9,Z10,…,Z16,取法与Z1,Z2,…,Z8的取法相同。这一过程重复下去,直到52子密钥都被产生为止。

IDEA子密钥的产生

26

IDEA子密钥的产生

产生子密钥的方法。这个算法用了52个子密钥(8轮中的每一轮需要6个,其他4个用于输出变换)。首先,将128-位密钥分成8个16-位子密钥。这些是算法的第一批8个子密钥(第一轮6个,第二轮的头2个)。然后,密钥向左环移动25位产生另外8个子密钥,如此进行直到算法结束。

27

28

29

4. IDEA的解密过程

加密解密实质相同,但使用不同的密钥;
解密密钥以如下方法从加密子密钥中导出:
解密循环I的头4个子密钥从加密循环10-I的头4个子密钥中导出;解密密钥第1、4个子密钥对应于1、4加密子密钥的乘法逆元;2、3对应2、3的加法逆元;
对前8个循环来说,循环I的最后两个子密钥等于加密循环9-I的最后两个子密钥;

30

解密与加密过程基本相同,但使用的密钥不同,解密密钥按下面的方式生成。

(1)第 i (i=1,2,…,9)轮解密的前4个子密钥是由加密过程第(10-i)轮的前4个子密钥得出。其中第1个和第4个解密子 密钥取为相应的第一个和第四个加密子密钥模 乘法逆元。第二和第三个子密钥的取法为:当轮数为i=2,..,8时取为相应的第三个和第二个加密子密钥的模 加法逆元,当i=1和9时,取为相应的第二个和第三个加密子密钥的 模 加法逆元。

IDEA的解密过程

31

(2) 第 i(i=1,…,8)轮解密的后两个子密钥等于加密过程的第(9-i)轮的后两个子密钥。

IDEA的解密过程

32

加密过程

变 换

X1

X2

X3

X4

Z1..Z4

子 加 密

I11

I12

I13

I14

Z5 Z6

变 换

W11

W12

W13

W14

Z7..Z10

子 加 密

I21

I22

I23

I24

Z11 Z612

W21

W22

W23

W24

变 换

W71

W72

W73

W74

Z43..Z46

子 加 密

I81

I82

I83

I84

Z47 Z48

变 换

W81

W82

W83

W84

Z49..Z52

Y1

Y2

Y3

Y4

第1轮

第2轮

第8轮

…………..

33

变 换

X1

X2

X3

X4

U49..U52

子 加 密

V81

V82

V83

V84

U47U48

变 换

J81

J82

J83

J84

U43…U46

子 加 密

V71

V72

V73

V74

U11U12

V21

V22

V23

V24

变 换

J21

J22

J23

J24

U7…U10

子 加 密

V11

V12

V13

V14

U5U6

变 换

J11

J12

J13

J14

U1…U4

Y1

Y2

Y3

Y4

第8轮

第2轮

第1轮

解密

第9轮

…………..

解密过程

34

表3.7是对以上关系的总结。其中Zj的模216+1乘法逆元为Z-1j,满足(见58页表3.7)

Zj⊙Z-1j=1mod(216+1)

因216+1是一素数,所以每一个不大于216的非0整数都有一个惟一的模216+1乘法逆元。Zj的模216加法逆元为-Zj,满足:

-Zj + Zj=0 mod (216)

IDEA的解密过程

35

下面验证解密过程的确可以得到正确的结果。图4.18中左边为加密过程,由上至下,右边为解密过程,由下至上。将每一轮进一步分为两步,第1步是变换,其余部分作为第2步,称为子加密。

IDEA的解密过程

36

IDEA加密和解密框图

37

现在从下往上考虑。对加密过程的最后一个输出变换,以下关系成立:

Y1=W81⊙ Z49 Y2=W83 + Z50

Y3=W82 + Z51 Y4=W84⊙Z52

解密过程中第1轮的第1步产生以下关系:

J11=Y1⊙U1 J12=Y2 + U2

J13=Y3 + U3 J14=Y4⊙U4

IDEA的解密过程

38

将解密子密钥由加密子密钥表达并将Y1,Y2,Y3,,Y4代入以下关系,有

J11=Y1⊙Z-149= W81⊙Z49⊙Z-149= W81

J12=Y2 + -Z50=W83 + Z50 + -Z50=W83

J13=Y3 + -Z51=W82 + Z51 + -Z51=W82

J14=Y4⊙Z-152= W84⊙Z52⊙Z-152= W84

IDEA的解密过程

39

可见解密过程第1轮第1步的输出等于加密过程最后一步输入中第2个子段和第3个子段交换后的值。从图4.16,可得以下关系:

W81=I81�MAR(I81�I83,I82�I84)

W82=I83�MAR(I81�I83,I82�I84)

W83=I82�MAL(I81�I83,I82�I84)

W84=I84�MAL(I81�I83,I82�I84)

IDEA的解密过程

40

其中MAR(X,Y)是MA结构输入为X和Y时的右边输出,MAL(X,Y)是左边输出。则

V11=J11�MAR(J11�J13,J12�J14)

=W81�MAR(W81�W82,W83�W84)

=I81�MAR(I81�I83,I82�I84) MAR [I81�MAR(I81�I83,I82�I84)�I83�

MAR(I81� I83,I82�I84), I82�

MAL(I81�I83,I82�I84) �I84

�MAL(I81�I83,I82�I84)]

=I81�MAR(I81�I83,I82�I84)

MAR(I81�I83,I82�I84) =I81

IDEA的解密过程

41

类似地,可有 V12=I83 V13=I82 V14=I84

所以解密过程第1轮第2步的输出等于加密过程倒数第2步输入中第2个子段和第3个子段交换后的值。

同理可证图4.18中每步都有上述类似关系,这种关系一直到

V81=I11 V82=I13 V83=I12 V84=I14

即除第2个子段和第3个子段交换位置外,解密过程的输出变换与加密过程第1轮第1步的变换完全相同。

IDEA的解密过程

42

所以,除第2个子段和第3个子段交换位置外,解密过程的输出变换与加密过程第1轮第1步的变换完全相同。

所以最后可得知,整个解密过程的输出等于整个加密过程的输入。

IDEA的解密过程

43

IDEA分组密码的特点

可变密钥长度
混合操作
依赖数据的循环移位
依赖于密钥的循环移位
依赖S盒子
冗长的密钥调度算法
可变的F函数和可变的明文/密文长度
可变的循环次数
在每次循环中都对两半数据进行操作

44

IDEA可方便地通过软件和硬件实现。

① 软件软件实现采用16比特子段处理,可通过使用容易编程的加法、移位等运算实现算法的3种运算。

② 硬件由于加、解密相似,差别仅为使用密钥的方式,因此可用同一器件实现。再者,算法中规则的模块结构,可方便VLSI的实现。

IDEA分组密码的特点

45

THE END!
IDEA

⑵ 理论上最成熟的密码学算法

理论上最成熟的密码学算法:对称密码算法、公钥密码算法、哈希函数(杂凑函数)。

1、对称密码算法

DES算法——二十世纪七十年代提出,曾经称霸对称加密领域30年。

AES算法——二十一世纪初提出用以取代DES算法。

IDEA算法——二十世纪九十年代初提出,也是一种流行算法。

RC4算法——经典的流密码算法。

密码算法简介

密码算法是用于加密和解密的数学函数,密码算法是密码协议的基础。现行的密码算法主要包括序列密码、分组密码、公钥密码、散列函数等,用于保证信息的安全,提供鉴别、完整性、抗抵赖等服务。

假设我们想通过网络发送消息P(P通常是明文数据包),使用密码算法隐藏P的内容可将P转化成密文,这个转化过程就叫做加密。

与明文P相对应的密文C的得到依靠一个附加的参数K,称为密钥。密文C的接收方为恢复明文,需要另一个密钥K-1完成反方向的运算。这个反向的过程称为解密。

⑶ 涓嫔垪灞炰簬瀵圭О瀵嗛挜锷犲瘑绠楁硶鏄锛堬级

銆愮瓟妗堛戯细B
甯歌佸圭О瀵嗛挜绠楁硶链塖DBI锛埚浗瀹跺瘑镰佸姙鍏瀹ゆ壒鍑嗗浗鍐呯畻娉曪纴浠呯‖浠朵腑瀛桦湪锛夈両DEA銆丷C4銆丏ES銆3DES

阅读全文

与idea算法c相关的资料

热点内容
录音笔如何修改文件夹 浏览:645
八爪鱼数据采集加密文字替换 浏览:84
android系统运行动态编译的程序 浏览:419
计算编程中常用的if语句是 浏览:736
linux文件夹权限乱了 浏览:912
程序员职业病预防保健操 浏览:680
c程序修改后需不需要重新编译 浏览:725
怎样把图片分别放置在文件夹中 浏览:873
推流服务器地址是什么 浏览:632
java允许多重继承 浏览:513
解压小玩具好玩又可爱 浏览:410
腾讯云大带宽服务器 浏览:823
加密锁的售后 浏览:270
linux登不上去 浏览:731
联想服务器休眠后如何唤醒 浏览:113
四川话女孩学习编程 浏览:324
编译原理文法区分 浏览:1003
教师可以做程序员嘛 浏览:637
终结战场安卓国际服怎么下载 浏览:155
现在的高端服务器属于什么 浏览:810