-
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>AES>3DES>DES <br/>查看全部
-
Java实现对称加密——对称加密算法--PBE
Ps:PBE算法结合了消息摘要算法和对称加密算法的优点。PBE是基于口令的加密
对称加密算法之PBE的特点概述,本质上是对DES/3DES/AES对称加密算法的包装,不是新的算法,不过也是最为牛逼的一种方式。
盐:指加密的随机字符串或者口令等,也可以人为是一些扰码,防止密码的暴力破解查看全部 -
对称加密算法——PBE
查看全部 -
对称加密算法-AES 步骤:<br/>查看全部
-
JDK实现AES加密解密算法:<br/>public static void jdkAES(){<br/> try {<br/> //生成key<br/> KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");<br/> //设置密钥长度<br/> keyGenerator.init(128);<br/> //生成密钥对象<br/> SecretKey secretKey = keyGenerator.generateKey();<br/> //获取密钥<br/> byte[] keyBytes = secretKey.getEncoded();<br/> //key转换<br/> Key key = new SecretKeySpec(keyBytes,"AES");<br/> //加密<br/> Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");<br/> //初始化,设置为加密<br/> cipher.init(Cipher.ENCRYPT_MODE, key);<br/> byte[] result = cipher.doFinal(src.getBytes());<br/> System.out.println("jdk aes encrypt: " + Base64.encodeBase64String(result));<br/> <br/> //初始化,设置为解密 <br/> cipher.init(Cipher.DECRYPT_MODE, key);<br/> result = cipher.doFinal(result);<br/> System.out.println("jdk aes desrypt:" + new String(result));<br/> } catch (Exception e) {<br/> e.printStackTrace();<br/> }<br/> <br/> }查看全部
-
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("DESede"); <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("DESede");<br/><br/>SecretKey secretKey = skf.generateSecret(dks);<br/><br/>return secretKey;<br/><br/>}<br/><br/>加密:<br/><br/>String cipherAlgorithm="DESede/ECB/PKCS5Padding";<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); <br/> <br/>cipher.init(Cipher.DECRYPT_MODE, key);<br/> <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("DES"); <br/>//初始化此密钥生成器,使其具有确定的密钥大小<br/>kg.init(56);<br/>//生成一个密钥<br/>SecretKey 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/> private static Key toKey(byte[] key){<br/> //实例化DES密钥规则<br/> DESKeySpec dks = new DESKeySpec(key);<br/> //实例化密钥工厂<br/> SecretKeyFactory skf = SecretKeyFactory.getInstance("DES");<br/> //生成密钥<br/> SecretKey secretKey = skf.generateSecret(dks);<br/> return secretKey;<br/> }查看全部
-
JDK 对称加密 DES查看全部
-
常用对称加密算法:
DES
AES
PBE
IDEA
查看全部 -
对称加密的特点:
加密秘钥=解密秘钥
查看全部
举报