证明:

由于DES算法是在Feistel网络结构的输入和输出阶段分别初始置换IP和初始逆置换IP-1而构成的,其余DES和Feistel相同,IP和IP–1互逆。所以只需证明Feistel解密算法和加密算法可逆,然后再证IP和IP–1置换后即可证明DES解密算法的确是DES加密算法的逆。

根据书本得Feistel解密算法和加密算法的关系,解密过程第一轮的输入等于加密过程第16轮输出左右部分交换的值。最后一轮迭代后密文是LE16||RE16,首先对于加密过程有LE16= LE15,RE16= LE15⊕F(RE15,K16)

对于解密则有LD1= RD0= LE16= RE15,RD1= LD0⊕F(RD0,K16)=RE16⊕F(RE0,K16)= [LE15⊕F(RE15,K16)]⊕F(RE15,K16)

XOR运算有以下性质:(A⊕B)⊕C=A⊕(B⊕C),D⊕D=0,E⊕0=E

因此有LD1= RE15和RD1= LE15所以解密过程的第一轮输出为LE15|| RE15正是加密过程第16轮输入左右部分互换的值,对于其他轮亦是如此。

DES加密过程说明:64位明文经过初始值换IP重新排列,然后进行16轮函数作用,对于第i轮加密算法有:LEi= LEi-1,REi= LEi-1⊕F(REi-1,Ki)

因此描述了第i轮的输入是输出的函数。最后一轮的输出是LE0||RE0,左右交换的结果正是原始明文。证明Feistel解密算法和加密算法可逆。而16轮迭代后结果即是LE16||RE16 =LE0||RE0,左右交换得到明文RE0||LE0。所以DES解密算法是DES加密算法的逆。

作者:L_jun
链接:https://www.jianshu.com/p/d8b4a4f22aa1
来源:简书

证明:DES解密算法是DES加密算法的逆相关推荐

  1. 证明DES解密算法实际上是DES加密算法的逆

    证明DES解密算法实际上是DES加密算法的逆 DES加密算法和解密算法如图: 如图,首先明文输入,进行第一轮的加密.RE0直接作为LE1,RE0与K1作用于轮函数F然后再与LE0疑惑作为RE1,这是第 ...

  2. python des解密_python实现DES加密解密方法实例详解

    本文实例讲述了python实现DES加密解密方法.分享给大家供大家参考.具体分析如下: 实现功能:加密中文等字符串 密钥与明文可以不等长 这里只贴代码,加密过程可以自己百度,此处python代码没有优 ...

  3. ecc加解密算法 c++_ECC加密算法的基本介绍

    前言 同RSA(Ron Rivest,Adi Shamir,Len Adleman三位天才的名字)一样,ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)也属于公开 ...

  4. C# DES加密解密算法

    C# DES加密解密算法 #region DES Class /// <summary> /// ClassName: DES 加密类 /// DES加密.解密类库,字符串加密结果使用BA ...

  5. 分组密码算法与DES算法

    目录 1 分组密码的含义 1.1 分组密码介绍 1.2 分组密码的含义 1.3 分组密码的要求 2 分组密码的设计思想 2.1 分组密码的设计思想 3 分组密码的基本特点 3.1 分组密码的基本特点 ...

  6. python des加密文件_Python DES加密解密方法 pyDes库 兼容中文

    单纯记录一下Python中DES加密解密的使用方式直接看代码: 依赖pyDes库安装> pip install pyDes 约定秘钥 python和java 加密和解密联调,兼容中文字符串 Py ...

  7. Android金融支付常见加解密算法及安全防护

    引言 因为本人从事的金融 IC 卡和移动支付相关的开发工作,在日常研发过程中,对 APP 信息安全防护方面尤为重视,所以现总结下金融支付相关的加解密算法以及常见的安全防范措施. Android 端常见 ...

  8. java加密与解密工具_cat: CAT,全称Cryptographic Algorithm Tool,是一款小巧的Java加密与解密算法调用工具包...

    cat 一.介绍 cat:全称Cryptographic Algorithm Tool 主要提供以下加密算法调用: 1.AES 2.DES 3.DSA 4.MD5 5.MersenneTwister( ...

  9. DES加密解密算法Java实现

    DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小.这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半.使用子密钥对其中一半应 ...

最新文章

  1. 如何实现后台向前台传数据
  2. you have new email in /var/spool/mail/root/
  3. 从零开始学_JavaScript_系列(24)——查看对象属性,合并数组
  4. java源码 - ReentrantReadWriteLock介绍
  5. Hive表与hdfs文件关联
  6. mac ssh 安装mysql_mac上安装mysql
  7. centos下配置vsftpd
  8. 安装Windows Nano Server虚拟机
  9. python安装插件报错原因_Sublime Text3 python自动补全问题——Sublime Text3安装Anaconda插件...
  10. 【FLink】Flink 1.12 TaskManager 内存结构
  11. C++设计模式详解之适配者模式解析
  12. 单片机音乐芯片c语言程序,51单片机驱动MT8880双音频接收发送芯片C语言程序分享...
  13. xxx is not in the sudoers file 解决方案(转)
  14. 判断回文(0315)SWUST-OJ
  15. 快逸报表多数据源解决办法以及项目多数据源切换方法
  16. 书籍-Linux运维之道
  17. 矩阵相乘c语言代码用指针实现,矩阵相乘C语言实现
  18. 用html作小米官网首页效果,html+css实现小米商城首页静态页面
  19. 台式计算机无线接入,台式电脑可以无线连接wifi吗
  20. bat脚本使用winRAR命令行压缩文件

热门文章

  1. Hazelcast IMDG学习 Map java demo
  2. BRC4工具1.2.2入门教程学习
  3. matlab中contourm,MATLAB 中contour函数的使用
  4. idc数据中心机房机柜收费标准
  5. MT61K512M32KPA-16:C显卡GDDR6XD9ZPP显存
  6. Eclipse读取properties文件中文乱码问题
  7. 计算机科学与技术专业支部,计算机科学与技术专业学生党支部成员组成
  8. 提升自己的实力才是硬道理
  9. Angular真有React开发人员讲得那么差劲?
  10. qt打开xls文件_Qt操作Excel