当前位置: 首页 > news >正文

【DES加密】

什么是DES

DES(Data Encryption Standard) 是一种对称加密算法。它的设计目标是提供高度的数据安全性和性能。

DES的概念

DES使用56位的密钥和64位的明文块进行加密。DES算法的分组大小是64位,因此,如果需要加密的明文长度不足64位,需要进行填充;如果明文长度超过64位,则需要使用分组模式进行分组加密

DES的加密流程

在这里插入图片描述

  1. 初始置换(Initial Permulation,IP置换):
    将64位明块进行重新排列,生成新的64未明文块。

  2. 16轮次加密:
    DES加密算法共有16个轮次,每个轮次都包含以下六个步骤:
    a. 将64位数据块分为左右两个32位块。
    b. 右侧32位作为输入,扩展到48位,然后与轮密钥进行 ⊕ \oplus 运算,再经过S盒置换压缩 得到32位的数据块。
    c. P盒置换,输出32位数据块。
    d. c步骤的输出与左侧的32位数据块进行 ⊕ \oplus ,得到本轮次的右边32位数据块的输出。
    e. a步骤得到的右侧32位数据块作为本轮次的左侧数据块输出。
    f. 拼接e,d的输出得到本轮次的加密输出。

  3. 末置换(Final Permutation):
    在最后一个轮次完成后,将经过加密的数据块进行置换,得到最终的64位密文。

    总的来说,DES加密的过程就是通过一系列置换、异或、扩展等运算,将明文分成若干个小块,然后根据主密钥生成一系列的轮密钥,利用轮密钥对每个小块进行加密,最终将加密结果重新组合成一个整体,得到密文。

DES算法加密步骤详解

  1. 初始置换
    IP置换是将输入的64位明文块进行置换和重新排列,生成新的64位数据块。我们将把64位的顺序按下表中规定的顺序放置,图中的数字是在64位明文中每个比特的索引位置。

    IIIIIIIVVVIVIIVIII
    585042342618102
    605244362820124
    625446383022146
    645648403224168
    57494133251791
    595143352719113
    615345372921135
    635547393123157

    目的:增加加密的混乱程度,使明文中的每一位都能够对后面的加密过程产生影响,提高加密强度。

  2. 加密轮次

    初始置换完成后,明文被划分成了相同长度(32位)的左右两部分,记作L0,R0。接下来就会进行16个轮次的加密了。

    以第一轮次的加密为例,过程如下:
    在这里插入图片描述
    从上图可以看出:右边的部分的R0会作为下一轮次的左半部分L1的输入。R0先补位到48位和本轮次的密钥K1进行 ⊕ \oplus ,之后经过S盒置换得到32位的数据块,再经过P和置换,最后与L0进行 ⊕ \oplus ,得到的结果作为下一轮的R1。上面的过程可以使用以下公式表示:

    R i = ( 48 R i − 1 ⊕ K i ) ⊕ L i − 1 L i = R i − 1 \begin{aligned} R_i&=(_{48}R_{i-1} \oplus K_{i})\oplus L_{i-1}\\ L_i&=R_{i-1} \end{aligned} RiLi=(48Ri1Ki)Li1=Ri1

    详细步骤如下:

    1. 扩展R到48位
      将32位的R0通过以下表格中的规则扩展到48位。

      IIIIIIIVVVI
      3212345
      456789
      8910111213
      121314151617
      161718192021
      202122232425
      242526272829
      28293031321
    2. 生成子密钥
      DES算法采用了每轮子密钥生成的方式来增加密钥的复杂性和安全性。每轮子密钥都是由主密钥(64位)通过密钥调度算法(Key Schedule Algorithm)生成的。DES算法的密钥调度算法可以将64位的主密钥分成16个子密钥,每个子密钥48位,用于每轮加密中与输入数据进行异或运算。
      通过子密钥生成的流程图来看下整个过程。

      在这里插入图片描述
      a. 将64位的主密钥通过PC-1置换表进行置换,得到56位的数据块。
      b. 将56位的数据块分成两个28位的数据块,分别为C0和D0。
      c. 将C0和D0分别左移1位或2位,得到C1和D1。
      d. 将C1和D1合并成56位的数据块,通过PC-2置换表进行置换,得到48位的子密钥K1。
      e. 重复c和d步骤,得到16个子密钥。
      注意:

      • PC-1置换表如下:

        IIIIIIIVVVIVIIVIIIIXXXIXIIXIIIXIVXVXVI
        57494133251791585042342618102
        5951433527191136052443663554739
        312315762544638302214661534537
        2921135282012412345678
      • PC-2置换表如下:

        IIIIIIIVVVIVIIVIIIIXXXIXIIXIIIXIVXVXVI
        141711241532815621102319124
        26816727201324152313747553040
        51453348444939563453464250362932
      • 左移位数表如下:

        IIIIIIIVVVIVIIVIIIIXXXIXIIXIIIXIVXVXVI
        1122222212222221
    3. 当前轮次的密钥与扩展后的R进行异或运算
      将扩展后的R0与当前轮次的密钥Ki进行异或运算,得到48位的数据块。

    4. S盒置换(Substitution Box Substitution)
      将上一步得到的48位数据块分成8个6位的数据块,每个6位数据块作为S盒的输入,经过S盒置换后,得到4位的数据块。
      S盒是一个4行16列的表,每个S盒都有一个特定的输入和输出。S盒的输入是6位的数据块,输出是4位的数据块。S盒的作用是将输入的6位数据块映射到4位的数据块,从而实现数据的压缩。
      举个例子:输入100011,第一位和最后一位组成一个二进制数1001,即9,作为S盒的行数;中间的4位组成一个二进制数0001,即1,作为S盒的列数。在S盒中找到第9行第1列的元素,即为14,转换为二进制为1110,即为S盒的输出。
      注意: S盒子的行列号是从0开始的。

      S盒的具体内容如下:

      IIIIIIIVVVIVIIVIIIIXXXIXIIXIIIXIVXVXVI
      S盒1:
      1441312151183106125907
      0157414213110612119538
      4114813621115129731050
      S盒2:
      1518146113497213120510
      3134715281412011069115
      4114813621115129731050
      1512824917511314100613
      S盒3:
      1009146315511312711428
      1370934610285141211151
      1364981530111212510147
      1101306987415143115212
      S盒4:
      7131430691012851112415
      1381156150347212110149
      1069012117131513145284
      3150610113894511127214
      S盒5:
      2124171011685315130149
      1411212471315015103986
      4211110137815912563014
      1181271142136150910453
      S盒6:
      1211015926801334147511
      1015427129561131401138
      9141552812370410113116
      4321295151011141760813
      S盒7:
      4112141508133129751061
      1301174911014351221586
      1411131237141015680592
      6111381410795015142312
      S盒8:
      1328461511110931450127
      1151381037412561101492
      7114191214206101315358
      2114741081315129035611
    5. P盒替换
      将上一步得到的32位数据块通过P盒子进行置换,得到32位的数据块。
      P盒子置换表如下:

      IIIIIIIVVVIVIIVIII
      167202129122817
      11523265183110
      282414322739
      19133062211425
  3. 逆置换(Inverse Permutation)
    在经过16轮次计算后,DES会对最后的结果进行最后一次置换。即为最后的输出结果。置换表如下:

    IIIIIIIVVVIVIIVIII
    408481656246432
    397471555236331
    386461454226230
    375451353216129
    364441252206028
    353431151195927
    342421050185826
    33141949175725

相关文章:

【DES加密】

什么是DES DES(Data Encryption Standard) 是一种对称加密算法。它的设计目标是提供高度的数据安全性和性能。 DES的概念 DES使用56位的密钥和64位的明文块进行加密。DES算法的分组大小是64位,因此,如果需要加密的明文长度不足64位,需要进…...

.NET中的框架和运行环境

在.NET生态系统中,框架和运行环境是两个不同的概念,它们各自扮演着重要的角色。 下面我将分别介绍.NET中的框架和运行环境,并解释它们之间的区别。 .NET 框架(Frameworks) 框架提供了一套预定义的类库、工具和服务&…...

探索微软 M365 安全:全方位守护数字世界

在当今这个科技呈井喷式飞速发展,数字化浪潮以汹涌澎湃、锐不可当之势席卷全球的时代,企业与个人仿若置身于一片浩瀚无垠、信息奔涌的海洋之中,尽情畅享着技术革新所带来的无穷无尽便利。然而,恰如平静海面下潜藏着暗礁与汹涌暗流,网络安全问题恰似隐匿在暗处、随时可能给…...

深入探索AI核心模型:CNN、RNN、GAN与Transformer

在人工智能的飞速发展中,众多深度学习模型和算法不断涌现,推动了许多领域的进步。特别是在图像识别、自然语言处理、生成建模等方向,AI模型的应用越来越广泛。本文将介绍几种最常用的AI模型,包括卷积神经网络(CNN&…...

Java - Http 通讯

Java - Http 通讯 PS&#xff1a; 1. Http 协议 POST | GET 请求&#xff1b; 2. 支持 报头、报文、参数 自定义配置&#xff1b; 3. GET 返回支持 String | Stream; 4. 相关依赖&#xff1a; <dependency><groupId>org.apache.httpcomponents</groupId><…...

C++ Qt练习项目 QChar功能测试

个人学习笔记 代码仓库 GitCode - 全球开发者的开源社区,开源代码托管平台 新建项目 设计UI 1、拖入group box去掉名字 2、拖入2个LineEdit 3、拖入两个Label 4、拖入两个PushButton 5、点栅格布局 1、拖入GroupBox 2、拖入4个PushButton 3、点栅格布局 1、拖入GroupBo…...

android 官网刷机和线刷

nexus、pixel可使用google官网线上刷机的方法。网址&#xff1a;https://flash.android.com/ 本文使用google线上刷机&#xff0c;将Android14 刷为Android12 以下是失败的线刷经历。 准备工作 下载升级包。https://developers.google.com/android/images?hlzh-cn 注意&…...

二叉树层序遍历 Leetcode102.二叉树的层序遍历

二叉树的层序遍历相当于图论的广度优先搜索&#xff0c;用队列来实现 &#xff08;二叉树的递归遍历相当于图论的深度优先搜索&#xff09; 102.二叉树的层序遍历 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右…...

DELTA并联机械手视觉方案荣获2024年度机器人应用典型案例奖

直击现场 2025年1月9日晚&#xff0c;2024深圳市机器人年度评选颁奖典礼在深圳市南山区圣淘沙酒店正式拉开帷幕。本次颁奖活动由中国科学院深圳先进技术研究院指导&#xff0c;深圳市机器人协会与《机器人与智能系统》杂志组织承办。 正运动公司受邀参与此次典礼&#xff0c;…...

Netty 入门学习

前言 学习Spark源码绕不开通信&#xff0c;Spark通信是基于Netty实现的&#xff0c;所以先简单学习总结一下Netty。 Spark 通信历史 最开始: Akka Spark 1.3&#xff1a; 开始引入Netty&#xff0c;为了解决大块数据&#xff08;如Shuffle&#xff09;的传输问题 Spark 1.6&…...

Magentic-One、AutoGen、LangGraph、CrewAI 或 OpenAI Swarm:哪种多 AI 代理框架最好?

目录 一、说明 二、 AutoGen-自动生成&#xff08;微软&#xff09; 2.1 特征 2.2 局限性 三、 CrewAI 3.1 特征 3.2 限制&#xff1a; 四、LangGraph 4.1 特征&#xff1a; 4.2 限制&#xff1a; 五、OpenAI Swarm 5.1 特征 5.2 限制 六、Magentic-One 6.1 特征 6.2 限制 七、…...

openstack下如何生成centos9 centos10 和Ubuntu24 镜像

如何生成一个centos 10和centos 9 的镜像1. 下载 对应的版本 wget https://cloud.centos.org/centos/10-stream/x86_64/images/CentOS-Stream-GenericCloud-x86_64-10-latest.x86_64.qcow2 wget https://cloud.centos.org/centos/9-stream/x86_64/images/CentOS-Stream-Gener…...

Kivy App开发之UX控件Slider滑块

在app中可能会调节如音量,亮度等,可以使用Slider来实现,该控件调用方便,兼容性好,滑动平稳。在一些参数设置中,也可以用来调整数值。 支持水平和垂直方向,可以设置默认值,最小及最大值。 使用方法,需用引入Slider类,通过Slider类生成一个滑块并设置相关的样式后,再…...

CSS——22.静态伪类(伪类是选择不同元素状态)

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>静态伪类</title> </head><body><a href"#">我爱学习</a></body> </html>单击链接前的样式 左键单击&#xff08;且…...

python学opencv|读取图像(三十)使用cv2.getAffineTransform()函数倾斜拉伸图像

【1】引言 前序已经学习了如何平移和旋转缩放图像&#xff0c;相关文章链接为&#xff1a; python学opencv|读取图像&#xff08;二十七&#xff09;使用cv2.warpAffine&#xff08;&#xff09;函数平移图像-CSDN博客 python学opencv|读取图像&#xff08;二十八&#xff0…...

Unity3D中基于ILRuntime的组件化开发详解

前言 在Unity3D开发中&#xff0c;组件化开发是一种高效且灵活的软件架构方式。通过将游戏功能拆分为独立的、可重用的组件&#xff0c;开发者可以更容易地管理、扩展和维护代码。而ILRuntime作为一款基于C#的热更新框架&#xff0c;为Unity3D开发者提供了一种高效的热更新和组…...

ELK的搭建

ELK elk&#xff1a;elasticsearch logstatsh kibana统一日志收集系统 elasticsearch&#xff1a;分布式的全文索引引擎点非关系型数据库,存储所有的日志信息&#xff0c;主和从&#xff0c;最少需要2台 logstatsh&#xff1a;动态的从各种指定的数据源&#xff0c;获取数据…...

国产信创实践(国能磐石服务器操作系统CEOS +东方通TongHttpServer)

替换介绍&#xff1a; 国能磐石服务器操作系统CEOS 对标 Linux 服务器操作系统&#xff08;Ubuntu, CentOS&#xff09; 东方通TongHttpServer 对标 Nginx 负载均衡Web服务器 第一步&#xff1a; 服务器安装CEOS映像文件&#xff0c;可直接安装&#xff0c;本文采用使用VMware …...

C#里使用libxl读取EXCEL文件里的图片并保存出来

有时候需要读取EXCEL里的图片文件, 因为很多用户喜欢使用图片保存在EXCEL里,比如用户保存一些现场整改的图片。 如果需要把这些图片抽取出来,再保存到系统里,就需要读取这些图片数据,生成合适的文件再保存。 在libxl里也提供了这样的方法, 如下: var picType = boo…...

【开源免费】基于SpringBoot+Vue.JS企业级工位管理系统(JAVA毕业设计)

本文项目编号 T 127 &#xff0c;文末自助获取源码 \color{red}{T127&#xff0c;文末自助获取源码} T127&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

美国大学的计算机科学专业排名

美国的计算机科学专业在全球范围内享有盛誉&#xff0c;许多大学在该领域具有卓越的教学和研究实力。以下是根据最新的排名和信息整理的美国计算机科学专业顶尖大学列表&#xff1a; 2025年 U.S. News 美国本科计算机科学专业排名&#xff1a; 斯坦福大学&#xff08;Stanfor…...

机器学习实战——决策树:从原理到应用的深度解析

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​​​ ​​​ ​​ 决策树&#xff08;Decision Tree&#xff09;是一种简单而直观的分类与回归模型&#xff0c;在机器学习中广泛应用。它的…...

开源生成式物理引擎Genesis,可模拟世界万物

这是生成大模型时代 —— 它们能生成文本、图像、音频、视频、3D 对象…… 而如果将所有这些组合到一起&#xff0c;我们可能会得到一个世界&#xff01; 现在&#xff0c;不管是 LeCun 正在探索的世界模型&#xff0c;还是李飞飞想要攻克的空间智能&#xff0c;又或是其他研究…...

kubernetes第七天

1.影响pod调度的因素 nodeName 节点名 resources 资源限制 hostNetwork 宿主机网络 污点 污点容忍 Pod亲和性 Pod反亲和性 节点亲和性 2.污点 通常是作用于worker节点上&#xff0c;其可以影响pod的调度 语法&#xff1a;key[value]:effect effect:[ɪˈfek…...

RK3588上CPU和GPU算力以及opencv resize的性能对比测试

RK3588上CPU和GPU算力以及opencv resize的性能对比测试 一.背景二.小结三.相关链接四.操作步骤1.环境搭建A.安装依赖B.设置GPU为高性能模式C.获取GPU信息D.获取CPU信息 2.调用OpenCL SDK获取GPU信息3.使用OpenCL API计算矩阵乘4.使用clpeak测试GPU的性能5.使用OpenBLAS测试CPU的…...

基于Centos 7系统的安全加固方案

创作不易&#xff0c;麻烦点个免费的赞和关注吧&#xff01; 声明&#xff01; 免责声明&#xff1a;本教程作者及相关参与人员对于任何直接或间接使用本教程内容而导致的任何形式的损失或损害&#xff0c;包括但不限于数据丢失、系统损坏、个人隐私泄露或经济损失等&#xf…...

IT行业的发展趋势

一、引言 IT&#xff08;信息技术&#xff09;行业自诞生以来&#xff0c;就以惊人的速度发展&#xff0c;不断改变着我们的生活、工作和社会结构。如今&#xff0c;随着技术的持续创新、市场需求的演变以及全球经济格局的变化&#xff0c;IT行业正迈向新的发展阶段&#xff0…...

《探秘开源多模态神经网络模型:AI 新时代的万能钥匙》

《探秘开源多模态神经网络模型&#xff1a;AI 新时代的万能钥匙》 一、多模态模型的崛起之路&#xff08;一&#xff09;从单一到多元&#xff1a;模态的融合演进&#xff08;二&#xff09;关键技术突破&#xff1a;解锁多模态潜能 二、开源多模态模型深度剖析&#xff08;一&…...

ROS核心概念解析:从Node到Master,再到roslaunch的全面指南

Node 在ROS中&#xff0c;最小的进程单元就是节点&#xff08;node&#xff09;。一个软件包里可以有多个可执行文件&#xff0c;可执行文件在运行之后就成了一个进程(process)&#xff0c;这个进程在ROS中就叫做节点。 从程序角度来说&#xff0c;node就是一个可执行文件&…...

2025广州国际汽车内外饰技术展览会:引领汽车内外饰发展新潮流-Automotive Interiors

随着科技的不断进步和消费者对汽车品质的要求日益提高&#xff0c;汽车内外饰的设计和制造也在不断创新和发展。AUTO TECH China 2025广州国际汽车内外饰技术展览会作为行业内的重要盛会&#xff0c;将于2025年11月20日至22日在广州保利世贸博览馆盛大举办。本次展览会将汇集全…...

深圳外贸soho网站建设/百度一下你就知道下载安装

2019独角兽企业重金招聘Python工程师标准>>> 占位 转载于:https://my.oschina.net/macthink/blog/384601...

网站建设需求书模板/迅雷磁力链bt磁力天堂

目标网站&#xff1a;http://bohaishibei.com/post/category/main/&#xff08;一个很有趣的网站&#xff0c;一段话配一个图&#xff0c;老有意思了&#xff5e;&#xff09;网站形式如下&#xff1a; 爬取标题和图片链接 ​ import re import requests url"https://bh.…...

rewrite.php wordpress 缓存 固定连接/销售新手怎么找客源

点 击 关 注 上 方&#xff02;两猿社&#xff02;设 为&#xff02;置 顶 或 星 标&#xff02;&#xff0c;干 货 第 一 时 间 送 达。互 联 网 猿 | 两 猿 社基础知识日志&#xff0c;由服务器自动创建&#xff0c;并记录运行状态&#xff0c;错误信息&#xff0c;访问数据的…...

龙岩网站开发较好的公司/宁波超值关键词优化

一、模糊控制基本概念 1. 定义 以模糊集合理论、模糊语言变量及模糊推理为基础的一类控制方法。模糊控制原理框图如图1-1所示。 图1-1 模糊控制原理框图 注&#xff1a;图片来源于《智能控制》&#xff08;第4版&#xff09;&#xff0c;刘金坤 2. 组成 模糊控制器(Fuzzy C…...

网站建设推荐北京华网天下/永久观看不收费的直播

高考志愿填报&#xff0c;表面看是选城市、大学和专业&#xff0c;其实是选工作、选未来、选人生。如何才能找准时机、挑准城市&#xff0c;成功找到有前途的好专业呢&#xff1f;今天小编另辟蹊径&#xff0c;细数高考志愿误报的“十宗罪”&#xff01;希望能够带领大家顺利避…...

网站上写个招贤纳士怎么做/seo技术公司

在3.2以前,我们要拿到UITouch跟使用者互动,大部分都是透过UIResponder的四种methods - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event - (void)touchesEnded:(NSSet *)touches withE…...