DES原理

作者: kerven | 来源:发表于2019-07-11 15:06 被阅读0次

    原理:该算法是一个利用56+8奇偶校验位(第8,16,24,32,40,48,56,64)=64位的密钥对以64位为单位的块数据进行加解密

    DES密钥为64位,加密的数据也为64位

    1.秘钥置换

    密钥置换对应的表(8*7)(8*6) 密钥循环左移对应的表

    备注:置换表里的数字是数据对应的位置

    1.1 将64位的密钥按照PC-1表做置换,得到去除奇偶校验的56位密钥

    1.2 将得到的56位密钥分为左右两部分,记做C0,D0

    1.3 按照密钥循环左移表计算出16组56位的密钥,依次是C1,D1为C0,D0左移一位,C2,D2为C1,D1左移一位,C3,D3为C2,D2左移两位......

    1.4 将得到的16组密钥按照PC-2表做置换处理,可以得到16组48位的密钥(记做Kn)

    2.加密数据

    IP表(8*8) E扩展置换表(8*6)

    2.1 对64位明文进行IP表转换

    2.2 将转换后的64位密文分为两个32位的密文L0,R0

    2.3 将L0,R0分别进行E扩展置换,得到置换后的48位的L0',R0'

    2.4 将L0',R0'和K1(48位)进行异或,得到T1

    S盒置换表

    2.5 将异或后的结果T1进行S盒置换,得到32位结果T1'

            具体置换过程:将异或运算得到的48位结果数据分成8个6位的块,将每一块通过对应的一个S盒产生一个4位的输出,S盒接收6位的输入,经过置换输出4位的数据。 将第I个6位的块作为要查询的SI(eg:如果6位的块对应8个里的第2个,则查询S2的表),将6位的输入中的第一位和第六位取出来1形成一个两位的二进制数X,将其转换为十进制作为行数,然后将中间4位构成另一个二进制数Y,并将其转换为十进制数作为列,然后查出S的X行Y列所对应的整数,将该整数置换为一个4位的二进制数,即S盒的输出。(eg:输入数据中的第一个6位数据块位010111,则需要通过查S1盒,先取出010111的第一位和第六位,则X=01,其对应的十进制为1。然后取出中间4位的1011,则Y = 1011,其对应的十进制为11,在S1盒中第1行11列的数为11,将其转换为二进制位1011,则输出1011)

    P盒置换表(2*16)

    2.6 将置换后的32位结果T1'进行P盒置换,将置换后的结果与L0进行异或得到L0*

    2.7 将L0*赋值给R1,将R0赋值给L1,之后进入下一轮迭代。最后生成L16和R16,其中R16为L15与P盒置换结果做异或运算的结果,L16是R15的直接赋值

    IP-1置换表(4*16)

    2.8 16次迭代之后,得到了16对32位数据块,L1R1,L2R2,......L16R16,将最后一对L16R16做位置交换,得到R16L16,将R16L16做IP-1置换,得到的就是最终的密文。

    参考链接:

    DES流程图

    DES加密原理例子

    DES的填充方式参考链接   

    相关文章

      网友评论

          本文标题:DES原理

          本文链接:https://www.haomeiwen.com/subject/nvdrkctx.html