首先 了解对称密码加密技术:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。但是有时候密钥不用完全相同 只要相似也可以。因为用一个密钥可以推导出另一个。


传统密钥算法有:DES,IDEA,TDEA,RC5等

同时 DES还是分组加密。对称加密分为分组加密和序列密码。

分组密码,也叫块加密(block cyphers),一次加密明文中的一个块。是将明文按一定的位长分组,明文组经过加密运算得到密文组,密文组经过解密运算(加密运算的逆运算),还原成明文组。
序列密码,也叫流加密(stream cyphers),一次加密明文中的一个位。是指利用少量的密钥(制乱元素)通过某种复杂的运算(密码算法)产生大量的伪随机位流,用于对明文位流的加密。
解密是指用同样的密钥和密码算法及与加密相同的伪随机位流,用以还原明文位流。

下面来了解DES:

DES算法的主要过程:

那么首先 我们来看一下初始置换

这一部分 我们将密文按照固定的矩阵 进行位序的移动 这部分与密钥毫无关系

如上图 原本64位的58位 移动到了第一行第一列 原本的50位 移动到了一行二列

这一部分很明显是可逆的

之后我们把对来看一下密钥的操作

我们先去掉8个校验位(但是原本的序号肯定是不变的,从图中可以看出是去掉每个字节第八位)

然后再将56位换成两个28位

之后 这里的左移是二进制位运算的左移嗷

一共16轮          16轮不就生成了16个密钥嘛

两个28位左移比单纯56位左移 复杂性更高

之后

此时56位成为了48位 很多位数又没了

总的过程:

前边的这些操作都是移位 置换 没经过什么运算

现在乘机变换要真正进行加密了

经过扩展变换之后其实还有很多变换

乘积变换有点复杂 上边的可能看的有点晕 我就先大体说一下 我们首先是把初始置换(IP)的明文分成两部分 L0和R0

之后我们进行:

Li = Ri-1

Ri = Li-1 异或 f(Ri-1,Ki)

一共16次迭代变换 对应1<=n<=16 这里的f()函数 其中就包含了Rn-1先扩展变换(E盒变换)为48位 后与子密钥Ki异或运算 之后经过s盒压缩变换为32位 然后经过p盒32位的置换

这样应该就能懂了

那么现在讲讲扩展变换:

其实也就是变成了

扩展变换的结果与Ki进行二进制异或运算

得到的结果再经过s盒变换

大概的规则就是这个

我们举个例子 就能看懂了

之后就要经过P盒置换 从32位线性变换为32位 这就很简单了

这时候     f(Ri-1,Ki)的结果已经出来了 我们只需要把它和Li-1异或 就得到了Ri

经过16次运算 得到了L16和R16

好了 这时候我们再将L16和R16两部分 颠倒 合并为新的64位

也就是 新的64位 是R16和L16  这个能懂吧

然后对其执行一个最终的变换 IP-1 了

其实是IP的逆矩阵哦  要用到线性代数的知识

然后我们就得到了 明文M的加密形式C

现在再来讲讲解密 因为是对称密码 所以解密就简单多了 就是一个逆过程罢了

我们加密时16轮的迭代子密钥顺序是k1到k16

我们解密是从k16到k1

同时 产生子密钥的循环移位 是右移

之后我们就总结一下DES加密的数学模型吧:

解密的数学模型:

理解DES算法的更多相关文章

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

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

  2. Asp.Net 常用工具类之加密——对称加密DES算法(2)

    又到周末,下午博客园看了两篇文章,关于老跳和老赵的程序员生涯,不禁感叹漫漫程序路,何去何从兮! 转眼毕业的第三个年头,去过苏州,跑过上海,从一开始的凌云壮志,去年背起行囊默默回到了长沙准备买房,也想有 ...

  3. 使用 DES 算法对数据加密

    DES算法 ☆提供高质量的数据保护,防止数据未经授权的泄露和未被察觉的修改 ☆具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又要便于理解和掌握 ☆DES密码体制的安全性应该不依赖于算法的保 ...

  4. DES算法解析

    DES算法  美国国家标准局1973年开始研究除国防部外的其它部门的计算机系统的数据加密标准,于1973年5月15日和1974年8月27日先后两次向公众发出了征求加密算法的公告. 1977年1月,美国 ...

  5. 怎么理解RSA算法

    原文地址:http://www.ittenyear.com/414/rsa/ 怎么理解RSA算法 能够把非对称加密算法里的公钥想象成一个带锁的箱子,把私钥想象成一把钥匙 能够把对称加密算法里的密钥想象 ...

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

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

  7. 深入理解KMP算法

    前言:本人最近在看<大话数据结构>字符串模式匹配算法的内容,但是看得很迷糊,这本书中这块的内容感觉基本是严蔚敏<数据结构>的一个翻版,此书中给出的代码实现确实非常精炼,但是个人 ...

  8. DES算法详解

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

  9. KMP算法详解 --- 彻头彻尾理解KMP算法

    前言 之前对kmp算法虽然了解它的原理,即求出P0···Pi的最大相同前后缀长度k. 但是问题在于如何求出这个最大前后缀长度呢? 我觉得网上很多帖子都说的不是很清楚,总感觉没有把那层纸戳破, 后来翻看 ...

随机推荐

  1. 利用adb查看手机设备ip和连接手机的两种方式

    电脑安装adb(查看菜鸟adb教程) [cmd]->输入adb devices (设置了path,否则需要 ./路径/adb devices)如图: 查看ip两种方法(可能有更多,目前我还没看到 ...

  2. JVM学习(七)JMM内存模型

    一.什么是JMM 概念:Java内存模型(Java Memory Model ,JMM)就是一种符合内存模型规范的,屏蔽了各种硬件和操作系统的访问差异的,保证了Java程序在各种平台下对内存的访问都能 ...

  3. 使用spring mvc拦截器 会话失效处理

    import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import ...

  4. day58:Linux:BashShell&linux文件管理&linux文件下载上传

    目录 1.BashShell 2.Linux文件管理 3.Linux文件下载和上传 BashShell 1.什么是BeshShell? 命令的解释,用来翻译用户输入的指令 2.BashShell能做什 ...

  5. Apollo系列(二):Apollo在ASP.NET Core 3.1中使用

    关于Apollo怎么安装,我就不介绍,可以看这篇文章:https://www.cnblogs.com/vic-tory/p/13736192.html 一.Apollo使用: 1.创建项目 2.添加配 ...

  6. 【漏洞复现】PHPmyadmin 4.8.1后台Getshell新姿势

    原文地址:https://mp.weixin.qq.com/s/HZcS2HdUtqz10jUEN57aog 早上看到群里在讨论一个新姿势,phpmyadmin后台getshell,不同于以往需要知道 ...

  7. Unicode和多字节字符集

    今天自己写的发现一个输出路径程序使用unicode字符集只能输出单个的首字符,问了一下同事,改为使用多字节字符集,问题解决了 于是上网看了他们的区别:  很多没看完,但起码了解到字符集的演变过程, 转 ...

  8. MLHPC 2018 | Aluminum: An Asynchronous, GPU-Aware Communication Library Optimized for Large-Scale Training of Deep Neural Networks on HPC Systems

    这篇文章主要介绍了一个名为Aluminum通信库,在这个库中主要针对Allreduce做了一些关于计算通信重叠以及针对延迟的优化,以加速分布式深度学习训练过程. 分布式训练的通信需求 通信何时发生 一 ...

  9. SpringBoot 优化

  10. 「Redis」字符串

    原文链接:https://www.changxuan.top/?p=1109 简介 Redis 中自定义的字符串结构. 字符串是 Redis 中最常用的一种数据类型,在 Redis 中专门封装了一个字 ...