论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP Java Web .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 安卓APP 其他 C# 代写论文
当前位置: > 计算机 > 计算机科学与技术 >

基于misty1算法的加密软件 (vc)的实现(论文+程序)

数据随机化部分使用了两种函数,FO和FL,函数FO调用函数FI。密钥扩展部分也使用函数FI。FI函数使用两个S盒,S7和S9。算法描述,使用了一些运算符。+表示两个元素的相加,*表示乘。/表示取相除的商,%表示取余数。&表示按位进行与运算。|表示按位进行或运算。^表示按位进行异或运算。<<表示逐位左移运算,>>表示逐位右移运算。下面对每个函数进行描述: copyright paper51.com

1.FL函数

内容来自www.paper51.com

函数FL用于加密。它包含一个32位的输入数据X32和一个32比特的子密钥KLi,将X32分为两个16位即XL和XR,子密钥KLi被分为16比特的左右两个子密钥,KLil和KLir,返回一个32位的数据Y32,具体操作如图2所示: 内容来自论文无忧网 www.paper51.com

内容来自论文无忧网 www.paper51.com

图2  FL函数

paper51.com

FL的输入为:

内容来自论文无忧网 www.paper51.com

X32 = XL‖XR

内容来自www.paper51.com

KLi = KLiL‖KLIr 内容来自www.paper51.com

FL的功能为: 内容来自论文无忧网 www.paper51.com

YR = (XL& KLiL)^XR

copyright paper51.com

YL = (YR| KLIr)^XL

http://www.paper51.com

则输出:Y32= YL‖YR

paper51.com

2.FL-1函数 内容来自论文无忧网 www.paper51.com

FL-1函数是逆向的FL函数,用于解密。它将32位的输入Y32分为两个16位的YL和YR,与子密钥KLi进行位运算,具体操作由图3所示,返回一个X32

copyright paper51.com

copyright paper51.com

图3  FL-1函数

copyright paper51.com

FL-1输入为:

内容来自www.paper51.com

Y32 = YL‖YR

paper51.com

KLi = KLiL‖KLIr 内容来自论文无忧网 www.paper51.com

FL-1的功能:

paper51.com

XL = (YR| KLIr) ∧YL

copyright paper51.com

XR = (XL& KLiL) ∧YR

copyright paper51.com

则输出:

内容来自论文无忧网 www.paper51.com

X32 = XL‖XR 内容来自论文无忧网 www.paper51.com

3.FO函数

paper51.com

FO函数由32位的输入数据X32和两组子密钥和48位的KIi构成。输入数据X32分为两个16位的L0和R0,64位的KOi 分为4组16位的子密钥,48位的KIi 分为3组16位的子密钥,FO函数最后返回一个32位的数据Y32,具体操作由图4所示:

copyright paper51.com

http://www.paper51.com

图4  FO函数 copyright paper51.com

FO的输入为: 内容来自www.paper51.com

X32=L0‖R0

paper51.com

KOi= KOi1‖KOi2‖KOi3‖KOi4 内容来自www.paper51.com

KIi= KIi1‖KIi2‖KIi3

内容来自www.paper51.com

FO的功能能表现为:

copyright paper51.com

For i=1 to 3 do:

http://www.paper51.com

Rj=FI (Lj-1^KOij,KIij)^Rj-1 内容来自www.paper51.com

Lj=Rj-1

http://www.paper51.com

Y32= (L3^KOi4)R3

内容来自论文无忧网 www.paper51.com

4.FI函数

http://www.paper51.com

FI函数由16位输入数据和16位的子密钥KIij构成。输入数据X16分为两个不等长的部分即9位的L0和7位的R0,密钥KIij也被分为7位的KIijl和9位的KIijr两部分。FI返回一个16位的数据Y16。在函数中使用了两个S-盒,S7将7比特的输入映射为7比特的输出,S9将9比特的输入映射为9比特的输出。Zero-extend表示在7位的数据x尾部(最右边)添加2个零,将7位转换为9位。Truncate表示9位的数据x的头部(最左边)删除两个位数据,将9位转换为7位。具体操作如图5所示:

内容来自www.paper51.com

http://www.paper51.com

图5  FI函数 内容来自论文无忧网 www.paper51.com

FI的输入为:

内容来自www.paper51.com

X16= L0‖R0

paper51.com

KIij=KIijL‖KIijR copyright paper51.com

FI则定义为:

copyright paper51.com

R1=S9[L0]^(00b‖R0)

copyright paper51.com

L1=R0 http://www.paper51.com

R2=S7[L1]^(truncate(R1))KIijL

内容来自论文无忧网 www.paper51.com

R3=S9[L2]^(00b‖R2)

http://www.paper51.com

L3=R2

http://www.paper51.com

Y16=L3‖R3 paper51.com

5.S-boxes 内容来自www.paper51.com

两个S-boxes 既可以由组合逻辑实现,也可以通过查找表来实现。在本设计中由于考虑到加密的速度,所以才用了查表的方法来实现。

内容来自论文无忧网 www.paper51.com

------分隔线----------------------------
联系方式