为了账号安全,请及时绑定邮箱和手机立即绑定
  • PBE算法要比之前那两种复杂一些

    查看全部
  • AES的加密方式

    查看全部

    dsf

    查看全部
  • add
    查看全部
  • PBE算法流程
    查看全部
  • Ps1:盐:指的是“干扰”黑客的字符,比如一些随机的字符串、数字等。

    Ps2:new PBEParameterSpec(盐,迭代次数);。

    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");
                Key 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(src.getBytes());
                System.out.println("jdk PBE encrypt: " + Base64.encodeBase64String(result));
                
                //解密
                //初始化
                cipher.init(Cipher.DECRYPT_MODE, key,pbeParameterSpec);
                result = cipher.doFinal(result);
                System.out.println("jdk PBE decrypt: " + new String(result));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    查看全部
  • 加密算法安全等级:PBE&gt;AES&gt;3DES&gt;DES <br/>
    查看全部
  • Java实现对称加密——对称加密算法--PBE

    Ps:PBE算法结合了消息摘要算法和对称加密算法的优点。PBE是基于口令的加密
    对称加密算法之PBE的特点概述,本质上是对DES/3DES/AES对称加密算法的包装,不是新的算法,不过也是最为牛逼的一种方式。
    盐:指加密的随机字符串或者口令等,也可以人为是一些扰码,防止密码的暴力破解

    查看全部
  • 对称加密算法——PBE

    查看全部
  • 对称加密算法-AES 步骤:<br/>
    查看全部
  • JDK实现AES加密解密算法:<br/>public static void jdkAES(){<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;//生成key<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;KeyGenerator keyGenerator = KeyGenerator.getInstance(&quot;AES&quot;);<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;//设置密钥长度<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;keyGenerator.init(128);<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;//生成密钥对象<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;SecretKey secretKey = keyGenerator.generateKey();<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;//获取密钥<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;byte[] keyBytes = secretKey.getEncoded();<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;//key转换<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Key key = new SecretKeySpec(keyBytes,&quot;AES&quot;);<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;//加密<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Cipher cipher = Cipher.getInstance(&quot;AES/ECB/PKCS5Padding&quot;);<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;//初始化,设置为加密<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;cipher.init(Cipher.ENCRYPT_MODE, key);<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;byte[] result = cipher.doFinal(src.getBytes());<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;System.out.println(&quot;jdk aes encrypt: &quot; + Base64.encodeBase64String(result));<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;//初始化,设置为解密 <br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;cipher.init(Cipher.DECRYPT_MODE, key);<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = cipher.doFinal(result);<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;System.out.println(&quot;jdk aes desrypt:&quot; + new String(result));<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;e.printStackTrace();<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br/>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br/>&nbsp;&nbsp; &nbsp;}
    查看全部
  • AES是DES的高级替代

    1、AES是目前使用最多的对称加密算法

    2、通常用于移动通信系统加密一级基于SSH协议的软件

    3、SSH Client、secureCRT

    4、DES算法的替代者


    查看全部
  • AES是DES的高级替代

    DES有漏洞,所以,产生了3重DES<br>
    3重DES的效率比较低,所以产生了AES<br>
    AES的特点是:
    1:使用的更为广泛
    2:目前还没有被破解
    3:通常用与移动通信系统加密和SSH协议的软件加密

    查看全部
  • JDK实现3DES<br/><br/>与实现DES方式基本一致,算法名称要改为DESede,密钥长度为168,转换密钥时使用DESedeKeySpec类.<br/><br/>初始化密钥:<br/><br/>public static byte[] initSecretKey(){<br/><br/>KeyGenerator kg = KeyGenerator.getInstance(&quot;DESede&quot;); <br/><br/>kg.init(168);<br/><br/>SecretKey secretKey = kg.generateKey();<br/><br/>return secretKey.getEncoded();<br/><br/>}<br/><br/>转化密钥:<br/><br/>private static Key toKey(byte[] key){<br/><br/>DESedeKeySpec dks = new DESedeKeySpec(key);<br/><br/>SecretKeyFactory skf = SecretKeyFactory.getInstance(&quot;DESede&quot;);<br/><br/>SecretKey secretKey = skf.generateSecret(dks);<br/><br/>return secretKey;<br/><br/>}<br/><br/>加密:<br/><br/>String cipherAlgorithm=&quot;DESede/ECB/PKCS5Padding&quot;;<br/><br/>public static byte[] encrypt(byte[] data,Key key,String cipherAlgorithm) {<br/><br/>Cipher cipher = Cipher.getInstance(cipherAlgorithm);<br/><br/>cipher.init(Cipher.ENCRYPT_MODE, key);<br/><br/>return cipher.doFinal(data);<br/><br/>}<br/><br/>解密:<br/><br/>public static byte[] decrypt(byte[] data,Key key,String cipherAlgorithm){<br/><br/>Cipher cipher = Cipher.getInstance(cipherAlgorithm);&nbsp; &nbsp;<br/>&nbsp; &nbsp;<br/>cipher.init(Cipher.DECRYPT_MODE, key);<br/>&nbsp; <br/>return cipher.doFinal(data);<br/><br/>}
    查看全部
  • 3、对称加密算法-3DES
    查看全部
  • 2、3重DES的好处
    查看全部
  • 1、3重DES

    查看全部
  • 对称加密算法-DES
    查看全部
  • DES加密:BC实现DES算法
    // 生成key
                KeyGenerator keyGenerator = KeyGenerator.getInstance("DES");

               keyGenerator.getProvider();

               keyGenerator.init(56);

                SecretKey secretKey = keyGenerator.generateKey();
                byte[] bytesKey =  secretKey.getEncoded();

                // key转换
                DESKeySpec desKeySpec = new DESKeySpec(bytesKey);
                SecretKeyFactory factory = SecretKeyFactory.getInstance("DES");
                Key convertSecretKey = factory.generateSecret(desKeySpec);

                // 加密
                Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
                cipher.init(Cipher.ENCRYPT_MODE, convertSecretKey);
                byte[] result = cipher.doFinal(string.getBytes());
                // System.out.println("jdk des encrypt:" + Arrays.toString(result));
                System.out.println("bc des encrypt:" + Hex.encodeHexString(result));

    查看全部
  • DES加密:JDK实现DES算法
    // 生成key
                KeyGenerator keyGenerator = KeyGenerator.getInstance("DES");
                SecretKey secretKey = keyGenerator.generateKey();
                byte[] bs = secretKey.getEncoded();

                // key转换
                DESKeySpec desKeySpec = new DESKeySpec(bs);
                SecretKeyFactory factory = SecretKeyFactory.getInstance("DES");
                Key convertSecretKey = factory.generateSecret(desKeySpec);

                // 加密
                Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
                cipher.init(Cipher.ENCRYPT_MODE, convertSecretKey);
                byte[] result = cipher.doFinal(string.getBytes());
                // System.out.println("jdk des encrypt:" + Arrays.toString(result));
                System.out.println("jdk des encrypt:" + Hex.encodeHexString(result));

    查看全部
  • JDK实现DES算法<br/><br/>1.初始化密钥<br/>使用KeyGenerator类的getInstance()静态方法,获取生成指定算法的密钥生成器,参数是算法名称.<br/>使用KeyGenerator类的init()方法进行密钥生成器的初始化,指定密钥生成器产生密钥的长度.<br/>使用KeyGenerator类的generatorKey()方法生成一个密钥对象,返回SecretKey密钥对象.<br/>SecretKey为密钥对象.使用它的getEncoded()方法返回一个密钥(字节数组形式)<br/><br/>public static byte[] initSecretKey(){<br/>//返回生成指定算法密钥的KeyGenerator对象<br/>KeyGenerator kg = KeyGenerator.getInstance(&quot;DES&quot;); <br/>//初始化此密钥生成器,使其具有确定的密钥大小<br/>kg.init(56);<br/>//生成一个密钥<br/>SecretKey&nbsp; secretKey = kg.generateKey();<br/>return secretKey.getEncoded();<br/>}<br/><br/>2.转化密钥(还原密钥),将jdk生成的密钥对象转化成DES规则的密钥对象.<br/>创建一个DESKeySpec实例,作用是将JDK初始化的密钥转化成DES规则的密钥.<br/>构造方法参数是JDK生成的密钥(字节数组形式).<br/>使用SecretKeyFactory类的getInstance()静态方法获取一个密钥工厂实例,参数是算法名称<br/>使用SecretKeyFactory类的generateSecret()方法生成密钥,参数是DESKeySpec实例.返回SecretKey,返回的SecretKey实例就是符合DES算法的密钥.<br/><br/>&nbsp;private static Key toKey(byte[] key){<br/>&nbsp;//实例化DES密钥规则<br/>&nbsp;DESKeySpec dks = new DESKeySpec(key);<br/>&nbsp;//实例化密钥工厂<br/>&nbsp;SecretKeyFactory skf = SecretKeyFactory.getInstance(&quot;DES&quot;);<br/>&nbsp;//生成密钥<br/>&nbsp;SecretKey&nbsp; secretKey = skf.generateSecret(dks);<br/>&nbsp;return secretKey;<br/>&nbsp;}
    查看全部
  • JDK 对称加密 DES
    查看全部
  • 常用对称加密算法:

    DES

    AES

    PBE

    IDEA

    查看全部
  • 对称加密的特点:

    加密秘钥=解密秘钥


    查看全部
首页上一页1234567下一页尾页

举报

0/150
提交
取消
课程须知
1、需具备Java面向对象的基础 2、需学习《JAVA实现Base64加密》课程的第一章,了解Java加解密的基础知识。奉上链接:http://www.imooc.com/learn/285
老师告诉你能学到什么?
1、掌握对称加密算法在Java中的实现 2、了解对称加密算法的应用场景

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!