如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
现代密码学(第三章)一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念大家应该也有点累了,稍作休息一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念一、分组密码的基本概念二、分组密码DES二、分组密码DES二、分组密码DES二、分组密码DES二、分组密码DES二、分组密码DES二、分组密码DES二、分组密码DES二、分组密码DES二、分组密码DES二、分组密码DESS1S2S3S4S5S6S7S8二、分组密码DES二、分组密码DES二、分组密码DES二、分组密码DES二、分组密码DES二、分组密码DES64二、分组密码DES二、分组密码DES二、分组密码DES二、分组密码DES69二、分组密码DES二、分组密码DES二、分组密码DES二、分组密码DES三、分组密码IDEA三、分组密码IDEA三、分组密码IDEA三、分组密码IDEA三、分组密码IDEA79三、分组密码IDEA三、分组密码IDEA三、分组密码IDEA三、分组密码IDEA三、分组密码IDEA三、分组密码IDEA三、分组密码IDEA三、分组密码IDEA三、分组密码IDEA三、分组密码IDEA三、分组密码IDEA三、分组密码IDEA三、分组密码IDEA四、分组密码Rijndael四、分组密码Rijndael四、分组密码Rijndael四、分组密码Rijndael四、分组密码Rijndael四、分组密码Rijndael四、分组密码Rijndael四、分组密码Rijndael四、分组密码Rijndael四、分组密码Rijndael四、分组密码Rijndael四、分组密码Rijndael四、分组密码Rijndael(1)首先,将字节看作GF(28)上的元素,映射到自己的乘法逆;0字节影射到它自身。(2)其次,将字节看作GF(2)上的8维向量,做如下的(GF(2)上的;可逆的)仿射变换:以上两个子变换所合成的字节代替采用一个8比特输入/8比特输出的S盒来实现。2.行移位(SHiftRow)是将状态阵列的各行进行循环移位,不同状态行的位移量不同。第0行不移动,第一行循环左移C1个字节,第二行循环左移C2个字节,第三行循环左移C3个字节。位移量(C1,C2,C3)的选取与Nb有关,当Nb=4或6时一般取(C1,C2,C3)=(1,2,3)。3.列混合(MixColumn)是将状态阵列的每个列视为系数在GF(28)上、次数小于4的多项式,被同一个固定的多项式c(x)进行模x4+1乘法。当然要求c(x)是模x4+1可逆的多项式,否则列混合变换就是不可逆的,因而会使不同的明文分组具有相同的对应密文分组。RIJNDAEL的设计者所给出的c(x)为(系数用16进制数表示):c(x)='03'x3+'01'x2+'01'x+'02'c(x)是与x4+1互素的,因此是模x4+1可逆的。由前面的讨论知,将状态阵列的每个列视为GF(28)上的4维向量,列混合运算可表示为GF(28)上的可逆线性变换:这个运算需要做GF(28)上的乘法。但由于所乘的因子是三个固定的元素02、03、01,所以这些乘法运算仍然是比较简单的(注意到乘法运算所使用的模多项式为m(x)=x8+x4+x3+x+1)。设一个字节为b=(b7b6b5b4b3b2b1b0),则bב01’=b;bב02’=(b6b5b4b3b2b1b00)+(000b7b70b7b7);bב03’=bב01’+b×’02’。(请注意,加法为取模2的加法,即逐比特异或)4.加密钥(AddRoundKey)是将单轮子密钥阵列简单地与课文阵列进行比特异或。这里当然要求子密钥阵列与课文阵列是同阶的。综上所述,组成RIJNDAEL轮函数的计算部件简洁快速,功能互补。轮函数的伪C代码如下:Round(State,RoundKey){ByteSub(State)ShiftRow(State)MixColumn(State)AddRoundKey(State,Roun