精华内容
下载资源
问答
  • Java对称加密算法

    2017-04-12 12:03:48
    对称加密算法是现在使用范围最广和使用频率最多的加密算法,在软件和硬件行业都有使用。为什么叫做加密算法呢?因为加密密钥和解密秘钥相同的,解密加密的逆运算,一种完全对称的行为,所以叫做对称加密。对称...

    对称加密算法是现在使用范围最广和使用频率最多的加密算法,在软件和硬件行业都有使用。为什么叫做加密算法呢?因为加密密钥和解密秘钥是相同的,解密是加密的逆运算,是一种完全对称的行为,所以叫做对称加密。对称加密是一种初等的加密算法,安全性不是很高。常用的对称加密算法有:DES、3DES、AES、PBE、IDEA等等。DES出现的相对比较早,但是它的秘钥长度不够,所以衍生出了3DES。3DES在秘钥长度上要比DES长很多。为了替代DES,又出现了AES。

    一、对称加密算法-DES

    1.1 DES简介

    DES(Data Encryption Standard)数据加密标准。DES的出生比较好,是美国国家技术研究所为了征求加密方案,美国IBM提交的算法。但是不幸的是98年之后,DES是不断的被破解,实际使用中DES已经不具备安全性。所以一般现在的项目中都不会用到DES,DES一般会作为案例进行介绍。DES在整个加解密的过程中,尤其是对称加解密的发展过程中,它的地位是非常高的。

    1.2 DES实现方法和填充方式

    这里写图片描述

    1.3 代码示例

    import javax.crypto.Cipher;
    import javax.crypto.KeyGenerator;
    import javax.crypto.SecretKey;
    import javax.crypto.SecretKeyFactory;
    import javax.crypto.spec.DESKeySpec;
    
    public class JavaDESTest {
    
        private static String scr = "测试数据";
    
        public static void main(String args[]) {
            System.out.println("加密的数据:"+scr);
            jdkDES();
        }
    
        public static void jdkDES() {
    
            try {
                //生成KEY 
                KeyGenerator keyGenerator = KeyGenerator.getInstance("DES");
                keyGenerator.init(56);
                SecretKey secretKey = keyGenerator.generateKey();
                byte[] bytestKey = secretKey.getEncoded();
    
                //KEY转换
                DESKeySpec desKeySpec = new DESKeySpec(bytestKey);
                SecretKeyFactory factory = SecretKeyFactory.getInstance("DES");
                SecretKey convertSecretKey = factory.generateSecret(desKeySpec);
    
                //加密
                Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
                cipher.init(Cipher.ENCRYPT_MODE, convertSecretKey);
                byte[] result = cipher.doFinal(scr.getBytes());
                System.out.println("加密后的数据:" + Hex.encodeHexStr(result));
    
                //解密
                cipher.init(Cipher.DECRYPT_MODE, convertSecretKey);
                result = cipher.doFinal(result);
                System.out.println("解密后的数据:" + new String(result));
    
    
            }catch(Exception e) {
                e.printStackTrace();
            }
        }
    }
    
    //输出结果:
    加密的数据:测试数据
    加密后的数据:e135fd2ef57b1d497d3670ca51dae525
    解密后的数据:测试数据
    

    1.4 DES 应用场景

    这里写图片描述

    二、对称加密算法-3重DES

    2.1 3重DES的产生

    为什么会有3重DES出现呢?DES加密算法被很多密码机构质疑,因为它的加密算法是半公开的,违反了柯克霍夫原则,密码机构不推荐使用DES加密方式。另外一个原因是它的安全性,很多人怀疑美国的国家安全局会在DES安装一些后门,以达到窃取一些信息的目的。所以在DES的基础上衍生出了3重DES。

    2.2 3重DES的好处

    1、密钥长度增强;

    2、迭代次数提高;

    这个是目前用的比较多的加密方式,其实也有2重DES加密和4重DES加密,但是3重DES加密是运用的最广泛的。

    2.3 3重DES的实现方式和填充模式

    这里写图片描述

    2.4 代码示例

    import java.security.SecureRandom;
    
    import javax.crypto.Cipher;
    import javax.crypto.KeyGenerator;
    import javax.crypto.SecretKey;
    import javax.crypto.SecretKeyFactory;
    import javax.crypto.spec.DESedeKeySpec;
    
    public class JavaDESTest {
    
        private static String scr = "测试数据";
    
        public static void main(String args[]) {
            System.out.println("加密的数据:"+scr);
            jdk3DES();
        }
    
        public static void jdk3DES() {
    
            try {
                //生成KEY 
                KeyGenerator keyGenerator = KeyGenerator.getInstance("DESede");
                keyGenerator.init(new SecureRandom());
                SecretKey secretKey = keyGenerator.generateKey();
                byte[] bytestKey = secretKey.getEncoded();
    
                //KEY转换
                DESedeKeySpec desKeySpec = new DESedeKeySpec(bytestKey);
                SecretKeyFactory factory = SecretKeyFactory.getInstance("DESede");
                SecretKey convertSecretKey = factory.generateSecret(desKeySpec);
    
                //加密
                Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
                cipher.init(Cipher.ENCRYPT_MODE, convertSecretKey);
                byte[] result = cipher.doFinal(scr.getBytes());
                System.out.println("加密后的数据:" + Hex.encodeHexStr(result));
    
                //解密
                cipher.init(Cipher.DECRYPT_MODE, convertSecretKey);
                result = cipher.doFinal(result);
                System.out.println("解密后的数据:" + new String(result));
    
    
            }catch(Exception e) {
                e.printStackTrace();
            }
        }
    }
    
    //输出结果:
    加密的数据:测试数据
    加密后的数据:718f9f6feae047183843b29c4b767a5b
    解密后的数据:测试数据
    

    三、对称加密算法-AES

    3.1 AES的产生

    DES加密算法有一些漏洞,3DES加密算法相对来说速度比较慢,效率比较低,所以就促使了AES的产生。目前,AES的使用比3DES的使用还要高一些,AES是目前使用最多的对称加密方式。AES还有一个优势,就是至今尚未被破解。AES通常用于移动通信系统加密以及基于SSH协议的软件。

    3.2 AES的实现方式和填充方式

    这里写图片描述

    3.3 代码示例

    
    import javax.crypto.Cipher;
    import javax.crypto.KeyGenerator;
    import javax.crypto.SecretKey;
    import javax.crypto.spec.SecretKeySpec;
    
    public class JavaDESTest {
    
        private static String scr = "测试数据";
    
        public static void main(String args[]) {
            System.out.println("加密的数据:"+scr);
            jdkAES();
        }
    
        public static void jdkAES() {
    
            try {
                //生成KEY 
                KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
                keyGenerator.init(128);
                SecretKey secretKey = keyGenerator.generateKey();
                byte[] bytestKey = secretKey.getEncoded();
    
                //KEY转换
                SecretKeySpec key = new SecretKeySpec(bytestKey,"AES");
    
                //加密
                Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
                cipher.init(Cipher.ENCRYPT_MODE, key);
                byte[] result = cipher.doFinal(scr.getBytes());
                System.out.println("加密后的数据:" + Hex.encodeHexStr(result));
    
                //解密
                cipher.init(Cipher.DECRYPT_MODE, key);
                result = cipher.doFinal(result);
                System.out.println("解密后的数据:" + new String(result));
    
    
            }catch(Exception e) {
                e.printStackTrace();
            }
        }
    }
    
    //输出结果:
    加密的数据:测试数据
    加密后的数据:a42435816397f390093c116b80b20c15
    解密后的数据:测试数据
    

    四、对称加密算法-PBE

    4.1 PBE介绍

    PBE(Password Based Encryption)基于口令加密。PBE算法结合了消息摘要算法和对称加密算法的优点,它是一种特殊的对称加密算法。

    4.2 PBE的实现方式和填充模式

    这里写图片描述

    4.3 代码示例

    import java.security.SecureRandom;
    import javax.crypto.Cipher;
    import javax.crypto.SecretKey;
    import javax.crypto.SecretKeyFactory;
    import javax.crypto.spec.PBEKeySpec;
    import javax.crypto.spec.PBEParameterSpec;
    
    public class JavaDESTest {
    
        private static String scr = "测试数据";
    
        public static void main(String args[]) {
            System.out.println("加密的数据:"+scr);
            jdkPBE();
        }
    
        public static void jdkPBE() {
    
            try {
                //初始化盐
                SecureRandom random = new SecureRandom();
                byte[] salt = random.generateSeed(8);
    
                //口令与秘钥
                String password = "imooc";
                PBEKeySpec pbeKeySpec = new PBEKeySpec(password.toCharArray());
                SecretKeyFactory factory = SecretKeyFactory.getInstance("PBEWITHMD5andDES");
                SecretKey key = factory.generateSecret(pbeKeySpec);
    
                //加密
                PBEParameterSpec pbeParameterSpec = new PBEParameterSpec(salt,100);
                Cipher cipher = Cipher.getInstance("PBEWITHMD5andDES");
                cipher.init(Cipher.ENCRYPT_MODE, key,pbeParameterSpec);
                byte[] result = cipher.doFinal(scr.getBytes());
                System.out.println("加密数据:"+Hex.encodeHexStr(result));
    
                //解密
                cipher.init(Cipher.DECRYPT_MODE, key,pbeParameterSpec);
                result = cipher.doFinal(result);
                System.out.println("解密数据:"+ new String(result));
    
            }catch(Exception e) {
                e.printStackTrace();
            }       
        }
    }
    //输出结果:
    加密的数据:测试数据
    加密数据:2495ea02bdfc00d7752ccc58afadd7c8
    解密数据:测试数据
    
    展开全文
  • 什么是对称加密

    万次阅读 2019-05-15 18:37:29
    但是,在大多数的对称算法中,加密密钥和解密密钥相同的,所以也称这种加密算法为秘密密钥算法或者单密密钥算法。常见的对称加密DES(Date Encryption Standard)、AES(Advanced Encryption St...

    对称加密,也叫私钥加密,是指加密和解密使用相同密钥的加密算法。有时也叫作传统密码算法,就是加密秘钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。但是,在大多数的对称算法中,加密密钥和解密密钥是相同的,所以也称这种加密算法为秘密密钥算法或者单密密钥算法。常见的对称加密有DES(Date Encryption Standard)、AES(Advanced Encryption Standard)、RC4、IDEA。 

    展开全文
  • 有幸接触了一下传说中的对称加密算法3DES 感觉这些加密算法与我的工作想去甚远的,一般没什么机会接触这些东西 今次了解了一下3DES这个对称算法 原理算不上明白,算是踩了C#中的一些坑吧 C#中对于密钥的处理比较...
  • 3DES加密算法原理

    2021-04-07 17:31:52
    3DES,也称为 3DESede 或 TripleDES,三重数据加密算法,相当于对每个数据库应用三次DES对称加密算法。 由于DES密码长度容易被暴力破解,所以3DES算法通过对DES算法进行改进,增加DES的密钥长度来避免类似的...

    一、3DES加密算法简析:

    3DES,也称为 3DESede 或 TripleDES,是三重数据加密算法,相当于是对每个数据库应用三次DES的对称加密算法。

    由于DES密码长度容易被暴力破解,所以3DES算法通过对DES算法进行改进,增加DES的密钥长度来避免类似的攻击,针对每个数据块进行三次DES加密;因此,3DES加密算法并非什么新的加密算法,是DES的一个更安全的变形,它以DES为基本模块,通过组合分组方法设计出分组加密算法。。

    3DES是DES向AES过渡的加密算法,它使用2个或者3个56位的密钥对数据进行三次加密。相比DES,3DES因密钥长度变长,安全性有所提高,但其处理速度不高。因此又出现了AES加密算法,AES较于3DES速度更快、安全性更高。

    二、3DES加密过程:

    该算法的加解密过程分别是对明文/密文数据进行三次DES加密或解密,得到相应的密文或明文。

    假设EK()和DK()分别表示DES的加密和解密函数,P表示明文,C表示密文,那么加解密的公式如下:

    加密:C = EK3( DK2( EK1(P)) ),即对明文数据进行,加密 --> 解密 --> 加密的过程,最后得到密文数据;

    解密:P = DK1( EK2( DK3(C)) ),即对密文数据进行,解密 --> 加密 --> 解密的过程,最后得到明文数据;

    其中:K1表示3DES中第一个8字节密钥,K2表示第二个8字节密钥,K3表示第三个8字节密钥,K1、K2、K3决定了算法的安全性,若三个密钥互不相同,本质上就相当于用一个长为168位的密钥进行加密。多年来,它在对付强力攻击时是比较安全的。若数据对安全性要求不那么高,K1可以等于K3。在这种情况下,密钥的有效长度为112位,即K1对应KL(左8字节),K2对应KR(右8字节),K3对应KL(左8字节)。
    在这里插入图片描述

    当三重密钥均相同时,前两步相互抵消,相当于仅实现了一次加密,因此可实现对普通DES加密算法的兼容。
    在这里插入图片描述

    由于DES加解密算法是每8个字节作为一个加解密数据块,因此在实现该算法时,需要对数据进行分块和补位(即最后不足8字节时,要补足8字节)。Java本身提供的API中NoPadding,Zeros填充和PKCS5Padding。假设我们要对9个字节长度的数据进行加密,则其对应的填充说明如下:

    (1)NoPadding:API或算法本身不对数据进行处理,加密数据由加密双方约定填补算法。例如若对字符串数据进行加解密,可以补充\0或者空格,然后trim;

    (2)ZerosPadding:无数据的字节全部被填充为0;

    第一块:F0 F1 F2 F3 F4 F5 F6 F7

    第二块:F8 0 0 0 0 0 0 0

    (3)PKCS5Padding:每个被填充的字节都记录了被填充的长度;

    ①加密前:数据字节长度对8取余,余数为m,若m>0,则补足8-m个字节,字节数值为8-m,即差几个字节就补几个字节,字节数值即为补充的字节数,若为0则补充8个字节的8。

    ②解密后:取最后一个字节,值为m,则从数据尾部删除m个字节,剩余数据即为加密前的原文。

    ③加密字符串为为AAA,则补位为AAA55555;加密字符串为BBBBBB,则补位为BBBBBB22;加密字符串为CCCCCCCC,则补位为CCCCCCCC88888888。

    (4)PKCS7Padding:

    PKCS7Padding 的填充方式和PKCS5Padding 填充方式一样。只是加密块的字节数不同。PKCS5Padding明确定义了加密块是8字节,PKCS7Padding加密快可以是1-255之间。

    三、3DES解密:

    3DES解密过程,与加密过程相反,即逆序使用密钥。是以密钥3、密钥2、密钥1的顺序执行 解密->加密->解密。
    在这里插入图片描述

    四、Java使用3DES加密解密的流程:

    在这里插入图片描述

    ①传入共同约定的密钥(keyBytes)以及算法(Algorithm),来构建SecretKey密钥对象:

    SecretKey deskey = new SecretKeySpec(keyBytes, Algorithm);

    ②根据算法实例化Cipher对象,它负责加密/解密:

    Cipher c1 = Cipher.getInstance(Algorithm);

    ③传入加密/解密模式以及SecretKey密钥对象,实例化Cipher对象:

    c1.init(Cipher.ENCRYPT_MODE, deskey);

    ④传入字节数组,调用Cipher.doFinal()方法,实现加密/解密,并返回一个byte字节数组:

    c1.doFinal(src);

    Java语言加密案例:

    /*字符串 DESede(3DES) 加密*/
    import java.security.Security;
    import javax.crypto.Cipher;
    import javax.crypto.SecretKey;
    import javax.crypto.spec.SecretKeySpec;
     
    public class Des3 {
     
        private static final String Algorithm = "DESede"; // 定义 加密算法,可用DES,DESede,Blowfish
     
        // 加密函数
        // keybyte为加密密钥,长度为24字节
        // src为被加密的数据缓冲区(源)
        public static byte[] encryptMode(byte[] keybyte, byte[] src) {
            try {
                // 生成密钥
                SecretKey deskey = new SecretKeySpec(keybyte, Algorithm);
                // 加密
                Cipher c1 = Cipher.getInstance(Algorithm);
                c1.init(Cipher.ENCRYPT_MODE, deskey);
                return c1.doFinal(src);
            } catch (java.security.NoSuchAlgorithmException e1) {
                e1.printStackTrace();
            } catch (javax.crypto.NoSuchPaddingException e2) {
                e2.printStackTrace();
            } catch (java.lang.Exception e3) {
                e3.printStackTrace();
            }
            return null;
        }
     
        // 解密函数
        // keybyte为加密密钥,长度为24字节
        // src为加密后的缓冲区
        public static byte[] decryptMode(byte[] keybyte, byte[] src) {
            try {
                // 生成密钥
                SecretKey deskey = new SecretKeySpec(keybyte, Algorithm);
                // 解密
                Cipher c1 = Cipher.getInstance(Algorithm);
                c1.init(Cipher.DECRYPT_MODE, deskey);
                return c1.doFinal(src);
            } catch (java.security.NoSuchAlgorithmException e1) {
                e1.printStackTrace();
            } catch (javax.crypto.NoSuchPaddingException e2) {
                e2.printStackTrace();
            } catch (java.lang.Exception e3) {
                e3.printStackTrace();
            }
            return null;
        }
     
        // 转换成十六进制字符串
        public static String byte2hex(byte[] b) {
            String hs = "";
            String stmp = "";
            for (int n = 0; n < b.length; n++) {
                stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
                if (stmp.length() == 1) {
                    hs = hs + "0" + stmp;
                } else {
                    hs = hs + stmp;
                }
                if (n < b.length - 1) {
                    hs = hs + ":";
                }
            }
            return hs.toUpperCase();
        }
     
        public static void main(String[] args) {
     
            // 添加新安全算法,如果用JCE就要把它添加进去
            Security.addProvider(new com.sun.crypto.provider.SunJCE());
            final byte[] keyBytes = { 0x11, 0x22, 0x4F, 0x58, (byte) 0x88, 0x10, 0x40, 0x38, 0x28, 0x25, 0x79, 0x51, (byte) 0xCB, (byte) 0xDD, 0x55, 0x66, 0x77, 0x29, 0x74, (byte) 0x98, 0x30, 0x40, 0x36, (byte) 0xE2 }; // 24字节的密钥
     
            String szSrc = "This is a 3DES test. 测试";
            System.out.println("加密前的字符串:" + szSrc);
     
            byte[] encoded = encryptMode(keyBytes, szSrc.getBytes());
            System.out.println("加密后的字符串:" + new String(encoded));
     
            byte[] srcBytes = decryptMode(keyBytes, encoded);
            System.out.println("解密后的字符串:" + (new String(srcBytes)));
        }
    }
    
    展开全文
  • 在openssl或其他密码相关的资料中,我们经常看到对称加密算法有ECB、CBC之类加密模式的简称,到底这些加密模式是什么呢?它们之间有什么不同呢,今天就是大家解开这个迷。 在现有的对称加密算法中,主要有4种加密...

    在openssl或其他密码相关的资料中,我们经常看到对称加密算法有ECB、CBC之类加密模式的简称,到底这些加密模式是什么呢?它们之间有什么不同呢,今天就是为大家解开这个迷。
    在现有的对称加密算法中,主要有4种加密处理模式,这4种加密处理模式一般是针对块加密算法而言的,如DES算法。这4种加密模式罗列如下: 模式中文描述 英文名称(Openssl缩写)
    电子密码本模式 Electronic Code Book(ECB)
    加密块链模式 Cipher Block Chaining(CBC)
    加密反馈模式 Cipher Feedback Mode(CFB)
    输出反馈模式 Output Feedback Mode(OFB)

    下面我们分别介绍这4种加密模式。
    【电子密码本模式】(ECB)
    这种模式是最早采用和最简单的模式,它将加密的数据分成若干组,每组的大小跟加密密钥长度相同,然后每组都用相同的密钥进行加密。比如DES算法,一个64位的密钥,如果采用该模式加密,就是将要加密的数据分成每组64位的数据,如果最后一组不够64位,那么就补齐为64位,然后每组数据都采用DES算法的64位密钥进行加密。下图:


    My name |is Drago|nKing

    上图“My name is DragonKing”这句话每8个字符(64位)作为一块,然后使用一个相同的64位的密钥对每个块进行加密,最后一块不足64位,就补齐后再进行加密。
    可以看到,因为ECB方式每64位使用的密钥都是相同的,所以非常容易获得密文进行密码破解,此外,因为每64位是相互独立的,有时候甚至不用破解密码,只要简单的将其中一块替换就可以达到黑客目的。
    【加密块链模式】(CBC)
    该模式如下图所示:
    在这里插入图片描述
    从这两个图中大家可以看到,CBC模式的加密首先也是将明文分成固定长度(64位)的块(P0,P1…),然后将前面一个加密块输出的密文与下一个要加密的明文块进行XOR(异或)操作计算,将计算结果再用密钥进行加密得到密文。第一明文块加密的时候,因为前面没有加密的密文,所以需要一个初始化向量(IV)。跟ECB方式不一样,通过连接关系,使得密文跟明文不再是一一对应的关系,破解起来更困难,而且克服了只要简单调换密文块可能达到目的的攻击。
    但是该加密模式的缺点是不能实时解密,也就是说,必须等到每8个字节都接受到之后才能开始加密,否则就不能得到正确的结果。这在要求实时性比较高的时候就显得不合适了。所以才有了下面两种加密模式。
    【加密反馈模式】(CFB)
    加密反馈模式为了克服必须等待8个字节全部得到才能进行解密的缺点,采用了一个64位(8个字节)的位移寄存器来获得密文,如下图所示:
    在这里插入图片描述
    上面两个图中C2、C3以及P10等都是一个字节(8位)的数据,所以能够实现字符的实时加密和解密,不用再等到8个字节都接受到之后再进行解密。图示是在进行第10个字节数据的加密和解密过程,在该过程中,先从移位寄存器取8个字节的数据(C2到C9)用密钥进行加密,然后取加密数据最左边的一个字节跟输入的明文P10进行XOR(异或)操作,得到的值作为输出密文C10,同时将C10送入到移位寄存器中。
    需要注意的是,如果其中有一个字节的密文在传输的时候发生错误(即使是其中的一位),那么它出现在移位寄存器期间解密的8个字节的数据都会得不到正确的解密结果,当然,这8个字节过去之后,依然可以得到正确的解密结果。但是一个比特错误就影响到8个字节(64个比特)的正确结果,导致鲁棒性太差,所以就又提出了下面的加密模式OFB。
    【输出反馈模式】(OFB)
    输出反馈模式OFB跟CFB几乎是一样的,除了其以为寄存器的输入数据稍微有一点不同之外,如下图:
    在这里插入图片描述
    可以看到,这种方法因为没有采用密文作为加密的数据,所以克服了由于传输过程中由于单个比特导致64个相关比特解密失败的情况,在本模式下,如果一个比特发生错误了,那么只会影响其本身对应的一个比特,而不会影响别的。但是相对于其它模式,因为数据之间相关性小,这种加密模式是比较不安全的,所以在应用的时候除非特别需要,一般不提倡应用OFB模式。

    展开全文
  • 那么为什么原来的DES会被取代呢,原因就在于其使用56位密钥,比较容易被破解。而AES可以使用128、192、和256位密钥,并且用128位分组加密和解密数据,相对来说安全很多。 完善的加密算法在理论上无法破解的,除非...
  • 目录 引语 加密 加密算法公式 ...3DES是对称加密的一种,是DES向AES过渡的加密算法。它使用三个秘钥的三重DES加密方法,该算法执行三次DES算法,其加密的过程是加密-解密-加密。 3DES加密流程 .
  • DES加密算法原理和实现过程

    千次阅读 2020-09-11 22:01:48
    由于DES算法一个典型的对称加密算法,故首先介绍一下对称加密算法对称加密算法概念: 顾名思义就是加密和解密过程使用的加密算法和解密算法一样的,并且所需要的密钥也一样的,这就要求接受方事先知道发送...
  • RC4对称密码加密算法

    2013-11-19 17:54:03
    RC4加密算法是大名鼎鼎的RSA三人组中的头号人物Ron Rivest在1987年设计的密钥长度可变的流加密算法簇。之所以称其簇,由于其核心部分的S-box长度可任意,但一般256字节。该算法的速度可以达到DES加密的10倍...
  • 在笔试或面试中,经常会问到对称加密算法和非对称加密算法区别,哪些方式属于对称加密,哪些属于非对称加密,哪些地方用到了加密。 下面罗列出几种使用加密解密的场景~ 系统中前后端交互的敏感字符加密,例如身份证...
  • 文章目录一、什么叫数据加密二、数据加密的方式三、加密算法1、单向加密算法(MD5、sha系列)2、对称加密算法(AES、DES)3、非对称加密算法(RSA、DSA)4、补充算法(base64) 一、什么叫数据加密 数据加密指利用...
  • 微信小程序RSA非对称加密

    千次阅读 2018-09-05 16:02:41
    在这里先简单介绍一下什么是对称加密和非对称加密 对称加密:对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥加密。 非对称加密:对称加密算法不同,非对称加密算法需要两个密钥:公开...
  • 一、什么是DES算法 DES是(Data Encryption Standard)的缩写,密码体制中的对称密码体制,又被称为美国数据加密标准。 DES是一种分组密码。明文,密文,密钥的分组长度都是64位。 DES是面向二进制的密码算法。...
  • 什么是对称加密 加密和解密使用相同的秘钥称为对称加密。 主流的对称加密算法 DES:已经淘汰 3DES:相对于DES有所加强,但是仍然存在较大风险 AES:全新的对称加密算法。 对称加密的特点 特点决定使用场景,对称加密...
  • 工作中时不时的接触到一些加密算法,有md5、des、aes、对称加密、非对称加密、可逆算法、不可逆算法,那么这些算法这些概念都有什么区别呢,今天闲来无事打算梳理一下。 一、什么是加密解密,加密的目的是什么? ...
  • 对称密码-DES和3DES

    2019-09-27 20:52:58
    先说一下什么是对称密码算法什么是对称密码算法呢?对称密码算法是指有了加密密钥就可以推算出解密密钥,有了解密密钥就可以推算出加密密钥的的算法。 那DES是什么呢?DES全称Data Encryption Standard,即数据...
  • 什么是DES 数据加密标准,即DES(Data Encryption Standard)。在发音时,DES作为缩写按字母来读的话:(/ˌdiːˌiːˈɛs/);作为一个单独的词来读的话:(/ˈdɛz/)。 对称算法有两种类型:块密码和流密码...
  • 一说到数据的加密,常常会涉及到这几个单词:算法、原文...对于这种加解密都使用同样的密钥的算法,我们称之为对称加密对称加密的代表算法就是DES家族了。那么这种对称加密什么缺陷呢?由于加解密使用相同的密钥...
  • 一说到数据的加密,常常会涉及到这几个单词:算法、原文、密文和密钥。...对于这种加解密都使用同样的密钥的算法,我们称之为对称加密对称加密的代表算法就是DES家族了。那么这种对称加密什么缺陷呢?由于加...
  • Android 平台DES加密解密

    千次阅读 2017-05-23 10:49:22
    DES是一个基于56位密钥的对称的加密算法,就是两边的密钥需要一致,在此就不考虑为什么不用安全性更高的AES或者采用非对称加密方法,比如RSA等等;关于密钥空间小,可以使用DES的派生算法3DES来进行加密。DES算法...
  • DES加解密算法

    2019-07-26 10:25:48
    一、什么是DES  数据加密标准(DES,Data Encryption Standard)是一种使用密钥加密的块密码,1976年被美国联邦政府的国家标准局确定联邦资料处理标准(FIPS),随后在国际上广泛流传开来。它基于使用56位密钥的...
  • DES算法密码体制中的对称密码体制,又被称为美国数据加密标准,1972年美国IBM公司研制的对称密码体制加密算法。 明文按64位进行分组,密钥长64位,密钥事实上56位参与DES运算(第8、16、24、32、40、48、56、...

空空如也

空空如也

1 2 3 4 5
收藏数 85
精华内容 34
关键字:

des为什么是对称加密算法