精华内容
下载资源
问答
  • Show that DES decryption is, in fact, the ...DES的加密过程总结如下: 解密过程 1.首先执行的是\(IP\), \(IP(IP^{-1}(RE_{16}LE_{16}))=RE_{16} LE_{16}\) 2.接下来确定\(R_{16}L_{16}\)能否经过16 rounds得到\...

    Show that DES decryption is, in fact, the inverse of DES encryption.

    加密过程

    DES加密过程总结如下:
    DES加密总结

    解密过程

    1.首先执行的是\(IP\), \(IP(IP^{-1}(RE_{16}LE_{16}))=RE_{16} LE_{16}\)
    2.接下来是确定\(R_{16}L_{16}\)能否经过16 rounds得到\(L_{0}R_{0}\)

    • 公式为:

    \(L_{n}=R_{n-1}\)

    \(R_{n}=L_{n-1}\oplus f(R_{n-1},K_{n})\)

    • 利用归纳法证明

    \(LD_{i}\) \(RD{i}\) 代表解密过程的各状态,\(LE_{i}\) \(RE{i}\) 代表加密过程各状态

    已知\(LD_{0}=RE_{16}\), \(RD_{0}=LE_{16}\)

    假设\(RD_{i-1}=LE_{16-i+1}\) , \(LD_{i-1}=RE_{16-i+1}\)

    \(LD_{i}=RD_{i-1}=LE_{16-i+1}=RE_{16-i}\)

    $RD_{i}=LD_{i-1}\oplus f(RD_{i-1}, K16-i+1) $

    \(=RE_{16-i+1}\oplus f(RE_{16-i}, K_{16-i+1})=[LE_{16-i}\oplus f(RE_{16-i},K_{16-i+1})]\oplus f(RE_{16-i},K_{16-i+1})=LE_{16-i}\)

    \(LD_{i}=RE_{16-i}\) , \(RD_{i}=LE_{16-i}\)

    因此 \(LD_{16}=RE_{0}\), \(RD_{16}=LE_{0}\)

    3.交换后得到 \(LE_{0}RE_{0}\)
    4.执行\(IP^{-1}\), 恢复为原文

    可知 DES的解密为加密的逆过程。

    转载于:https://www.cnblogs.com/chasechoi/p/7658202.html

    展开全文
  • 证明:DES解密算法DES加密算法的逆

    千次阅读 2020-05-08 18:44:13
    所以只需证明Feistel解密算法和加密算法可逆,然后再证IP和IP–1置换后即可证明DES解密算法的确DES加密算法的逆。 根据书本得Feistel解密算法和加密算法的关系,解密过程第一轮的输入等于加密过程第16轮输出左右...

    证明:

    由于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加密算法的逆DES加密算法和解密算法如图: 如图,首先明文输入,进行第一轮的加密。RE0直接作为LE1,RE0与K1作用于轮函数F然后再与LE0疑惑作为RE1,这第一轮,之后密钥变换了,不断得...

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

    DES加密算法和解密算法如图:
    这里写图片描述

    如图,首先明文输入,进行第一轮的加密。RE0直接作为LE1,RE0与K1作用于轮函数F然后再与LE0疑惑作为RE1,这是第一轮,之后密钥变换了,不断得做这样的操作,做16轮,最后LE16与RE16交换得到LE17||RE17密文。
    而解密过程如图则是自下而上RD0直接作为LD1,RD0与K16用于轮函数结果与LD1异或得到RD1,不断重复变换密钥,进行16轮。为了抵消最后一轮迭代增加的交换,则最后就要进行一次交换换回来。

    公式证明
    
    加密过程:
    LEi表示第i轮加密得到的左16位数,REi是第i轮加密得到的右16位数。
    LEi=REi-1
    REi=LEi-1⊕F(REi-1,Ki)
    
    经过变换可得:
    REi-1=LEi
    LEi-1=REi⊕F(REi-1,Ki)=REi⊕F(LEi,Ki)
    令LDi是解密的第i轮得到的左16位数,RDi则是右16位数。
    LDi=RDi=LE17-i=RE16-i
    RDi=LDi⊕F(RDi-1,K17-i)
       =REi-1⊕F(REi-1,K17-i)
       =[LEi-1⊕F(REi-1,K17-i)]⊕F(REi-1,K17-i)
       =LEi-1;
     可见经过解密运算之后LDi=RE16-i
    RDi=LEi-1
    
    则此解密过程成立,且是加密过程的逆过程
    
    展开全文
  • 用java实现DES解密

    2019-10-23 19:27:46
    DES解密是加密的逆过程。对于DES加密过程可以用以下数学公式来描述: 其中,Li和Ri是当前进行加密操作的明文的左32位和右32位,而Li-1和Ri-1是前一次进行操作的明文的左32位和右32位。Ki是64位密钥经过算法产生的子...

    DES解密是加密的逆过程。对于DES加密过程可以用以下数学公式来描述:
    在这里插入图片描述
    其中,Li和Ri是当前进行加密操作的明文的左32位和右32位,而Li-1和Ri-1是前一次进行操作的明文的左32位和右32位。Ki是64位密钥经过算法产生的子密钥。而解密过程可以用如下数学公式来描述:
    在这里插入图片描述
    由此可以看出,DES的解密操作是加密操作的反向逆过程。对于第二个公式可以做如下推导:
    在这里插入图片描述
    上述最后一行式子经过化简发现等式左边等于右边,显然上述公式成立。学过数字电子技术的同学应该对上述公式推导的计算方法并不陌生。
    以下是通过java实现的DES解码操作:

    import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
    import javax.crypto.*;
    import javax.crypto.spec.SecretKeySpec;
    import java.security.InvalidKeyException;
    import java.security.Key;
    import java.security.NoSuchAlgorithmException;
    import java.util.Scanner;
    
    public class DESDemo {
        public static void main(String[] args) throws Exception
        {
            System.out.println("请输入明文:");
            Scanner in=new Scanner(System.in);
            String clearText=in.nextLine();
            System.out.println("请输入密钥:");
            Scanner in1=new Scanner(System.in);
            String originKey=in1.nextLine();
            String cipherText = desEncript(clearText, originKey);
            System.out.println("通过DES加密后的结果是:");
            System.out.println(cipherText);
            String clearText1=desDecript(cipherText,originKey);
            System.out.println("解密结果是:\n"+clearText1);
        }
    
        /**
         * 加密算法
         * @param clearText
         * @param originKey
         * @return
         * @throws NoSuchAlgorithmException
         * @throws NoSuchPaddingException
         * @throws InvalidKeyException
         * @throws BadPaddingException
         * @throws IllegalBlockSizeException
         */
        private static String desEncript(String clearText, String originKey) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException
        {
                Cipher cipher=Cipher.getInstance("DES"); /*提供加密的方式:DES*/
                SecretKeySpec key=getKey(originKey);  /*对密钥进行操作,产生16个48位长的子密钥*/
                cipher.init(Cipher.ENCRYPT_MODE,key); /*初始化cipher,选定模式,这里为加密模式,并同时传入密钥*/
                byte[] doFinal=cipher.doFinal(clearText.getBytes());   /*开始加密操作*/
                String encode= Base64.encode(doFinal);    /*对加密后的数据按照Base64进行编码*/
                return encode;
        }
    
        /**
         * 解密算法
         * @param cipherText
         * @param originKey
         * @return
         * @throws BadPaddingException
         * @throws IllegalBlockSizeException
         * @throws NoSuchPaddingException
         * @throws NoSuchAlgorithmException
         * @throws InvalidKeyException
         */
        private static String desDecript(String cipherText, String originKey) throws BadPaddingException, IllegalBlockSizeException, NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException
        {
            Cipher cipher=Cipher.getInstance("DES");   /*初始化加密方式*/
            Key key=getKey(originKey);  /*获取密钥*/
            cipher.init(Cipher.DECRYPT_MODE,key);  /*初始化操作方式*/
            byte[] decode=Base64.decode(cipherText);  /*按照Base64解码*/
            byte[] doFinal=cipher.doFinal(decode);   /*执行解码操作*/
            return new String(doFinal);   /*转换成相应字符串并返回*/
        }
    
        /**
         * 获取密钥算法
         * @param originKey
         * @return
         */
        private static SecretKeySpec getKey(String originKey)
        {
                byte[] buffer=new byte[8];
                byte[] originBytes=originKey.getBytes();
                /**
                 * 防止输入的密钥长度超过64位
                 */
                for(int i=0;i<8&&i<originBytes.length;i++)
                {
                    buffer[i]=originBytes[i];  /*如果originBytes不足8,buffer剩余的补零*/
                }
                SecretKeySpec key=new SecretKeySpec(buffer,"DES"); /*第一个参数是密钥字节数组,第二个参数是加密方式*/
                return key;  /*返回操作之后得到的密钥*/
        }
    }
    

    程序运行结果如下所示:
    在这里插入图片描述

    展开全文
  • python实现DES加密解密

    千次阅读 2020-10-24 16:02:02
    DES是一种将64比特的明文加密成64比特的密文对称密码算法。DES是以64比特的明文为一个单位来进行加密的...下面用具体的代码实现DES的加密,解密过程完全一样,不过密钥用。 1.首先将将明文和密钥转化为二进制,
  • DES、AES加密

    2017-10-20 17:01:38
    加密是通过加密算法和加密密钥将明文转变为密文过程,解密是逆过程加密算法有很多种,一般可以分为对称加密(如DES、AES等)、非对称加密(如RSA等)和单向加密(如MD5等)3类算法。 1)在对称加密算法中...
  • Android加密解密DES,AES,MD5)

    万次阅读 2016-10-13 21:53:44
    加密是通过加密算法和加密密钥将明文转变为密文过程,解密是逆过程加密算法有很多种,一般可以分为对称加密(如DES、AES等)、非对称加密(如RSA等)和单向加密(如MD5等)3类算法。 1)在对称加密算法中,...
  • DES加密算法

    2018-04-25 23:33:34
    简介DES为Data ...奇偶校验位的值前七个比特位的异或运算的结果取反(使用奇数校验),其结构如下: 算法流程1、 整体加解密流程由于加解密算法对称,即解密过程为加密的逆过程。2、加密整体过程IP为Initial P...
  • C#中CA加密与DES加密的混合使用

    千次阅读 2016-10-03 11:20:42
    所以在加密过程中使用了CA加密来保证加密的安全,所谓的CA加密就是由证书机构提供秘钥的RSA算法,秘钥长度为1024位,RSA加密算法的原理就不赘述了,可以简单的理解为解密是加密的数学运算,但是通过数学手段的
  • 3DES加密算法源码

    2015-01-21 18:38:23
    无论是加密还是解密,中间一步都是前后两步的逆。这种做法提高了使用密钥选项2时的算法强度,并在使用密钥选项3时与DES兼容。 密钥选项[编辑] 标准定义了三种密钥选项: 密钥选项1:三个密钥是独立的。 密钥选项2...
  • 银行常用几种加密算法 ...加密技术是对信息进行编码和解码技术,编码是把原来可读信息(又称明文)译成代码形式(又称密文),其逆过程就是解码(解密)。加密技术要点是加密算法,加密算法可以分为对称
  • 文件加密解密软件

    2012-03-11 21:16:48
    文件加密软件采用des加密算法对任意文件加密并输出密文,解密是逆过程.非常适合对重要信息加密,做网络传输或存储,想想看现在网络环境~~。本软件密钥由用户输入,信息解密关键在用户,如果加密文件因忘记密码...
  •  对称加密算法一般来讲,加密密匙和解密的密匙一致的,解密就是加密的逆运算。 DES加密  目前来看已经不太安全的加密算法,出现的时间比较早。加密的长度一般56位。下面举个应用的例子:服务端A和客户端B之间...
  • 1)算法和数据结构就是编程一个重要部分,你若失掉了算法和数据结构,你就把一切都失掉了。...对称密码算法的加密密钥和解密密钥相同,对于大多数对称密码算法,加解密过程。 很多人都用...
  • flag (是加密还是解密过程) # DES 算法实现 flag是标志位 当为-1时, 是DES解密, flag默认为0 def DES (text, key, flag = "0"): # 初始字段 # IP置换 InitKeyCode = IP(text) # 产生子密钥 集合 subkeylist...
  • DES实验报告

    2013-04-16 15:57:55
    DES算法主要研究的是加密与解密算法。解密是加密的逆过程,从加密过的信息中得到明文。密钥是一串适当长度的字符或数字串,它可以控制加密和解密过程。
  • des源代码(加解密的密钥生成)

    热门讨论 2011-04-10 13:10:37
    //初始置换表IP^-1 int IP_1_Table[64] = {39,7,47,15,55,23,63,31, 38,6,46,14,54,22,62,30, 37,5,45,13,53,21,61,29, 36,4,44,12,52,20,60,28, 35,3,43,11,51,19,59,27, 34,2,42,10,50,18,58,26, ...
  • java对称加密DES/3DES/AES

    2015-05-18 15:24:54
    对称密码算法的加密密钥和解密密钥相同,对于大多数对称密码算法,加解密过程。 (1)加解密通信模型   (2)特点:算法公开、计算量小、加密速度快、加密效率高 (3)弱点:双方都使用同样密钥,安全性得...
  • 加密算法 加密技术是对信息进行编码和解码技术,编码是把原来可读信息(又称明文)译成代码形式(又称密文),其逆过程就是解码(解密)。加密技术要点是加密算法,加密算法可以分为对称加密、不对称加密和不...
  • 加密算法、DES、IDEA、RSA、DSA

    千次阅读 2018-01-31 16:04:58
    加密技术是对信息进行编码和解码技术,编码是把原来可读信息(又称明文)译成代码形式(又称密文),其逆过程就是解码(解密)。加密技术要点是加密算法,加密算法可以分为对称加密、不对称加密和不可逆加密三类...
  • DES 算法使用

    2017-04-06 16:23:31
    加密解密过程中所使用密钥相同,就是对称密码,而且大多数对称密码算法,加密解密过程逆的DES 算法一种数据加密算法,明文按照 64 位进行分组,分组后明文与密钥按位替代或交换方法形成密文组。...
  • 今天为大家介绍一下对称加密方式,所谓对称加密指的是加密和解密方式呈对称格式,即解密是加密的逆过程,下面我们就看一下:DES、3DES、AES、PBE这四种方式,他们的加密强度依次递增。好吧闲话少说,上代码: 首先...
  • 工作中时不时的接触到一些加密算法,有md5、des、aes、对称加密、非对称加密、可逆算法、不可逆算法,那么这些算法这些概念都有什么区别呢,今天闲来无事打算...所谓解密,也就是加密的逆过程,即将该编码信息转化为...
  • 03 对称加密

    2021-01-08 00:40:53
    数据解密过程:数据接收方收到密文后,若想读取原数据,则需要使用加密使用的密钥及相同算法的逆算法对加密的密文进行解密,才能使其恢复成可读明文。 2 常见算法 AES、DES、3DES对称的块加密算法,加解密的...
  • DES是一个16轮的Feistel型...加密的过程是先对64位明文分组进行初始置换,然后分左、右两部分分别经过16轮迭代,然后再进行循环移位与变换,最后进行变换得出密文。加密与解密使用相同的密钥,因而它属于对称密码体制
  • Java 对称加密使用DES / 3DES / AES 这三种算法分别实现 ... 对称密码算法当今应用...对称密码算法的加密密钥和解密密钥相同,对于大多数对称密码算法,加解密过程。 2.常用对称密码 1)DES(Data Encryption ...

空空如也

空空如也

1 2
收藏数 40
精华内容 16
关键字:

des解密是加密的逆过程