zoukankan      html  css  js  c++  java
  • DES加密

    DES算法描述过程:

       1.DES算法使用56位的密钥及附加的8位奇偶校验位,产生最大64位的分组大小,输入64位明文,在64位密钥的控制下产生64位的密文。

      2.DES首先利用初始置换IP对X进行换位处理,然后用图3.5的与密钥有关的16轮迭代变换,如此循环16此,最后经过逆初始置换IP-1的处理得到密文

      初始置换IP用于对明文各位进行换位,为了打乱次序,经过初始置换后,明文X变为 X'=X1'X2'...X64'=X58X50X7,即明文X中的第58位变为X'中的第1位,同理,逆初始置换IP-1将16轮迭代后给出的64bit组进行置换。

      

       DES第一轮加密过程:

        

       公式表达:

          Li=Ri-1

          Ri=Li-1⨁f(Ri-1,Ki)

      DES的i轮密钥Ki生成过程:

        

          1.设输入的64bit密钥K=k1k2...k64,kiϵ{0,1},1≤i≤64,密钥K中有8位是奇偶校验位。

        2.对于1≤i≤16,Ci=LSi(Ci-1),Di=LSi(Di-1)

        3.Ki=PC_2(CiDi),PC_2位固定置换,选择置换PC_2如表3.4

        

         加密函数f是整个DES算法的核心:

        

         函数f以长度位32的bit串,A=R(32bit)作为第一个输入,J=K(48bit)作为第二个输入,产生的输出是32位的串,具体操作:

          1.对于第一个变元A,给定的选择扩展函数E扩展位48bit的E(A)

          

           2.EA异或J,并按照模2加运算,把结果写成连续的8个6位串

          B=B1B2B3B4B5B6B7B8;

          3.然后使用8个S盒,每个S串是一个4X16的矩阵,元素取0-15的整数

          4.经过S盒后B缩减为4位。

          5.最后P为固定置换  

            

             6.8个s盒的输入/输出如图3.7  

              

             7.S盒是DES算法中唯一的非线性的也是最安全的。

            8.每个S盒都是6输入4输出

            9.如果给定S盒的输入b0b1b2b3b4b5,其输出对应该矩阵的第L行n列对应数的二进制数

            10.L为由b0b5形成的十进制表示,n为由b1b2b3b4形成的十进制表示

            11.例如,S1的输入为011001,行选为01(即第1行),列选为1100(即第12列),行列交叉位置的数为9,其4位二进制数表示为1001,所以S1的输出为1001。

         

      DES解密过程:

        DES的解密过程与加密过程相同,但是在16此迭代中使用子密钥的次序相反

        解密时第一次迭代使用子密钥K16,以此类推

        具体过程可形式化地表示为Y=Y1Y2...Y64→R16L16,L0'=R16,R0'=L16。

        

      DES的安全性:

        DES的安全性依赖于密钥。

        1.取反性特征:

          对于明文组M,密文组C和主密钥K,如果C=DESk(M),则C逆=DESk逆(M逆)。

        2.弱密钥与半弱密钥:

          大多数密码体制都有某些明显的“坏密钥”,DES也是。对于K,K'ϵF256 ,若由K扩展45出来的加密子密钥为K1,K2,...,K15,K16,而由K'扩展出来的加密子密钥却是K16,K15,...,K2,K1, 即DESK-1=DESK' ,则称K与K'互为对合。

        3.密文与明文、密文与密钥的相关性:

          DES的编码过程可使每个密文比特都是所有明文比特和所有密钥比特的复杂混合函数,而要达到这一要求至少需要DES迭代5轮。卡方检验证明:DES迭代8轮以后,就可认为输出输入不相关

        4.密钥长度:

          DES的密钥太短,其长度为56bit,致使密钥量256≈1017,不能抵抗穷举攻击,事实证明的确如此。

      三重DES:

        DES的密钥长度被证明已经不能满足当前安全的要求,但是为了使用,简单的方案就是多次使用DES,比如三重DES。

        多重DES就是使用多个密钥利用DES对明文进行多次加密,多重DES可以增加密钥两。

        设k1,k2,k3是三个长度为56bit的密钥。 给定明文x,则密文为y=DESk3(DESk2-1(DESk1(x)))。给定密文 y,则明文为x=DESk1-1(DESk2(DESk3-1(y))) 在三重 DES中,如果k1=k2或k2=k3,则三重DES就退化为使用一个56bit单钥的单重DES。

        三重DES的优点:

          1.密钥长度从增加,克服穷举

          2.增强了抗差分分析和线性分析

          3.可以继续使用DES

          4.成本小

          

        

        

  • 相关阅读:
    【原创】(四)Linux进程调度-组调度及带宽控制
    【原创】(三)Linux进程调度器-进程切换
    【原创】(一)Linux进程调度器-基础
    【原创】(十六)Linux内存管理之CMA
    【原创】(十五)Linux内存管理之RMAP
    【原创】(十四)Linux内存管理之page fault处理
    我是如何学习和工作的(3)
    亲人的离去、爱情与婚姻
    工作机会少有时反而是一件好事
    Hong Kong Azure / .NET club first meetup
  • 原文地址:https://www.cnblogs.com/beautiful7/p/12844883.html
Copyright © 2011-2022 走看看