首页 > 编程语言 > 详细

DES算法流程

时间:2021-03-27 10:44:38      阅读:26      评论:0      收藏:0      [点我收藏+]

初始置换IP

技术分享图片

表格的使用方法: 将输入的64bit的明文从1开始标号,依次放入到IP初始置换表中数字对应的位置。填充完毕后,按照行优先的顺序从第1行开始依次读取获得输出。

16轮轮结构

整体结构

因为这16轮的操作都是一样的,所以这里我们只介绍第一轮的操作

  1. 将上一步经过初始置换IP后的64bit的结果平分为两部分(每部分32bit),分别记为\(L_0\)\(R_0\)

  2. \(R_0\)进行一次F函数的变换并与\(L_0\)进行异或,结果作为\(R_1\)\(R_0\)作为\(L_1\)

    即:

    $ L_i = R_{i-1}$

    \(R_i = L_{i-1} \oplus F(R_{i-1}, K_i)\)

  3. 进行下一轮

F函数

F函数对\(R_i\)进行操作这一前提条件之后不再重复

  1. E盒扩展

    技术分享图片

    同初始置换IP的步骤相同,按照顺序将输入的\(32bit\)依次放入对应的位置,仍按照行优先输出,输出结果为\(48bit\)

  2. E盒扩展结果与48bit的轮子密钥进行异或

  3. S盒代替压缩

    \(48bit\)分为\(8\)组,每组\(6bit\),依次编号为\(B_1,B_2,...B_8\)

    一共有\(8\)个S盒,依次编号为\(S_1,S_2,...S_8\)

    \(B_i\)对应着使用\(S_i\)

    考虑\(B_1\)\(B_1 = b_1b_2b_3b_4b_5b_6\),我们定义\(r = 2*b_1+b_6, c = 2^3b_2+2^2b_3+2b_4 + b5\)(即将二进制转化为十进制),我们去\(S_1\)盒中找到\(r\)\(c\)列对应的十进制数,将其转化为4位二进制即为结果

    参照\(B_1\)的方法,依次转化完余下\(5\)组,最终得到\(32bit\)的输出

DES算法流程

原文:https://www.cnblogs.com/G-H-Y/p/14584855.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!