zoukankan      html  css  js  c++  java
  • 第八周作业

         DES加密算法原理:

    1. 将明文进行分组,每组是长度为64的二进制位。
    2. 对密钥key进行同样的操作,即将其转换为64位的二进制字符串。
    3. 对密钥key按照PC1盒进行第一次密钥变换,变换后的密钥有56位,然后将变换有的密钥进行分割,即左边28位哟弄个C0存储,右边28位用D0进行存储。
    4. 以C0和D0为基础,开始进行16轮密钥扩展,扩展规则为,Cn由Cn-1循环左移1位或者2位形成,Dn由Dn-1循环左移1位或者2位形成。
    5. 进行C和D的合并,即将Dn连接在Cn的右边,形成16个扩展后的新密钥。
    6. 对明文进行操作,首先对明文进行一次IP置换,得到变换后的明文IPnewarr。
    7. 将变换后的明文IPnewarr进行分割,左边32位由变量Ln[0]存储,右边32位由变量Rn[0]存储。
    8. 接着,由Ln[0]和 Rn[0]为基础,开始进行16轮扩展,扩展规则是,Ln [i]= Rn[i-1],Rn[i] = Ln[i-1]^f(Rn[i-1],keyk[i]),也就是说,新一轮的Ln是上一轮的Rn,新一轮的Rn是上一轮的Ln与f函数的值进行异或运算后得到的结果,其中key[i]是新扩展的密钥。
    9. 计算f函数,首先按照E盒将Rn进行变换。
    10. 变换之后的Rn与第n个扩展后的新密钥进行异或运算。
    11. 将第10步的结果进行分组,共48位长,每6位一组,共8组,将这8组命名为B1-B8.
    12. 计算Bni和Bnj,Bni是Bn的第一位和第六位组成的二进制数所代表的十进制数,Bnj是Bn的第二到第五位组成的二进制数所代表的十进制数。
    13. 计算Sboxn,Sboxn的值是Bni和Bnj在Sn中对应的十进制数代表的二进制数。
    14. 将八个Sboxn二进制数连接起来,然后进行一次P置换操作,就是f函数的值。
    15. 将L和R进行16次扩展后,将最后一次所得的L16和R16反向连接起来,即R16L16,然后将其进行一次IP逆置换形成密文的二进制位。
    16. 最后将这个二进制字符串转换成16进制字符串就是得到的16进制密文。
  • 相关阅读:
    55.UIbutton点击切换颜色
    54.NSJSONSerialization类进行json解析(字符串“UTF-8解码”)
    53.设置内容的行间距
    第二阶段冲刺7
    第二阶段冲刺6
    第十四周
    第二阶段冲刺5
    第二阶段冲刺4
    第二阶段冲刺3
    第二阶段冲刺2
  • 原文地址:https://www.cnblogs.com/suyaoxing/p/5425574.html
Copyright © 2011-2022 走看看