初始置换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\)的输出

  4. p盒置换

    使用下表进行p盒置换,使用方法和IP初始置换相同

逆初始置换

16轮轮结构最后得到64位的输出,使用逆初始置换表将数据进行重新编排,使用方法同IP初始置换

子密钥生成

  1. 置换选择

置换选择PC-1输入64bit的原始密钥,输出56bit

若输入为56bit,则需要在\(8, 16, 24, 32, 40, 48, 56, 64\) bit处分别插入\(0,0,1,0,0,0,1,0\) 变为64bit

使用下表格进行置换选择PC-1,仍然是按照先后顺序将原始序列中的每一位填入下表,表格中缺少8的倍数,从而将输入的64bit变为输出的56bit,读取时仍为行优先。

  1. 循环移位

    将置换选择PC-1之后得到56bit的输出平分为两部分,各为28bit,即为\(C_0\), \(C_1\)

    根据下标判断需要移动多少位

    所谓循环移位是指将\(C_0\), \(C_1\)均看为一个循环的序列,左移1位将最左侧的一位移动到序列的尾部

    eg: 1 0 0 1 -> 0 0 1 1

DES算法流程的更多相关文章

  1. AES算法,DES算法,RSA算法JAVA实现

    1     AES算法 1.1    算法描述 1.1.1      设计思想 Rijndael密码的设计力求满足以下3条标准: ① 抵抗所有已知的攻击. ② 在多个平台上速度快,编码紧凑. ③ 设计 ...

  2. DES算法详解

    本文主要介绍了DES算法的步骤,包括IP置换.密钥置换.E扩展置换.S盒代替.P盒置换和末置换. 1.DES算法简介 DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准. DES是一个分组 ...

  3. 基于DES算法加密的防撞库密码系统项目总结

    项目内容:基于DES算法加密的防撞库密码系统 小组名:zqhzkzkj 目标:1.对用户输入的8位字符进行DES加密,要求用户输入8位密钥 2.对于不同的网站,不同的用户名生成不同的密码 小组成员:周 ...

  4. MFC 简单实现 DES 算法

    前言 徐旭东老师说过学者就应该对知识抱有敬畏之心,所以我的博客的标题总喜欢加上"简单"二字,就是为了提醒自己,自己所学知识只是皮毛,离真理还远矣. DES 算法 DES算法是密码体 ...

  5. 安全体系(一)—— DES算法详解

    本文主要介绍了DES算法的步骤,包括IP置换.密钥置换.E扩展置换.S盒代替.P盒置换和末置换. 安全体系(零)—— 加解密算法.消息摘要.消息认证技术.数字签名与公钥证书 安全体系(二)——RSA算 ...

  6. Web安全学习笔记之DES算法实例详解

    转自http://www.hankcs.com/security/des-algorithm-illustrated.html 译自J. Orlin Grabbe的名作<DES Algorith ...

  7. DES算法与四种加密模式的代码实现(C++语言)

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/Love_Irelia97/article/ ...

  8. IDAPython实战项目——DES算法识别

    在CTF的逆向中我们需要的是找到加密的主函数,结合了yara的识别原理,通过对常量数组的引用的查找,一步步递归构建调用树.调用树根部就是可能的密码算法主函数. 由于这种办法需要常量分布于算法的各个步骤 ...

  9. 聊聊密码学中的DES算法

    用心分享,共同成长 没有什么比你每天进步一点点更实在了 本文已经收录至我的github,欢迎大家踊跃star 和 issues. https://github.com/midou-tech/artic ...

  10. 对称加密算法之DES算法

    数据加密标准(data encryption standard): DES是一种分组加密算法,输入的明文为64位,密钥为56位,生成的密文为64位. DES对64位的明文分组进行操作.通过一个初始置换 ...

随机推荐

  1. 大唐电信AC集中管理平台弱口令漏洞

    网络资产搜索: 找到平台 进行默认口令登入:admin/1***** 登陆 End!!!

  2. linux缓冲区溢出尝试

    #include <stdio.h>#include <string.h>char Lbuffer[] = "01234567890123456789======== ...

  3. 20200922--计算矩阵边缘元素之和(奥赛一本通P91 3二维数组)

    输入一个整数矩阵,计算位于矩阵边缘的元素之和.所谓矩阵边缘的元素,就是就一行和最后一行以及第一列和最后一列的元素. 输入; 第一行分别为矩阵的行数m和列数n(m<100,n<100),两者 ...

  4. springboot 整合内存缓存Caffeine

    springboot 整合内存缓存Caffeine 1.引jar包 <dependency> <groupId>org.springframework.boot</gro ...

  5. md5信息摘要算法实现(python 和 go版本)

    纯手写实现的md5信息摘要算法 github地址如下 https://github.com/kittysmith5/dgst/blob/main/md5 python3版本代码 #!/usr/bin/ ...

  6. 用bcftools将多个vcf文件合并成一个vcf文件 或将多个vcf和合并成的vcf文件拆分成单个样本的vcf文件

    1. 软件的安装 a. bcftools 的安装 b. bgzip的安装: https://blog.csdn.net/weixin_30471065/article/details/95108525 ...

  7. 循环结构(Java)

    基本介绍 while循环语法 while(布尔表达式){循环内容} 只要布尔表达式为true,循环则会一直循环下去 我们大多数会让循环停止下来,我们需要一个让表达式失效的方式来结束循环 少部分需要循环 ...

  8. 1、Java程序概述

    1.什么是Java? Java是一个完整的平台,有一个庞大的库,其中包含了很多可重用的代码,以及一个提供诸如安全性.跨操作系统的可移植性以及自动垃圾收集等服务的执行环境. 2.Java白皮书的关键术语 ...

  9. windows IIS http 自动转https

    1.安装url重写组件 https://www.iis.net/downloads/microsoft/url-rewrite#additionalDownloads 2.刷新IIS 3.添加规则

  10. idea创建maven + tomcat项目

    移动文件夹: 找到tomcat文件目录 配置完成,添加测试html文件: 运行 修改默认路径: