数据随机化部分使用了两种函数,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 |