-
PBE算法要比之前那兩種復(fù)雜一些
查看全部 -
AES的加密方式
查看全部 -
dsf
查看全部 -
add查看全部
-
PBE算法流程查看全部
-
Ps1:鹽:指的是“干擾”黑客的字符,比如一些隨機(jī)的字符串、數(shù)字等。
Ps2:new PBEParameterSpec(鹽,迭代次數(shù));。
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();
?? ??? ?}
?? ?}查看全部 -
加密算法安全等級(jí):PBE>AES>3DES>DES <br/>查看全部
-
Java實(shí)現(xiàn)對(duì)稱加密——對(duì)稱加密算法--PBE
Ps:PBE算法結(jié)合了消息摘要算法和對(duì)稱加密算法的優(yōu)點(diǎn)。PBE是基于口令的加密
對(duì)稱加密算法之PBE的特點(diǎn)概述,本質(zhì)上是對(duì)DES/3DES/AES對(duì)稱加密算法的包裝,不是新的算法,不過(guò)也是最為牛逼的一種方式。
鹽:指加密的隨機(jī)字符串或者口令等,也可以人為是一些擾碼,防止密碼的暴力破解查看全部 -
對(duì)稱加密算法——PBE
查看全部 -
對(duì)稱加密算法-AES 步驟:<br/>查看全部
-
JDK實(shí)現(xiàn)AES加密解密算法:<br/>public static void jdkAES(){<br/> try {<br/> //生成key<br/> KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");<br/> //設(shè)置密鑰長(zhǎng)度<br/> keyGenerator.init(128);<br/> //生成密鑰對(duì)象<br/> SecretKey secretKey = keyGenerator.generateKey();<br/> //獲取密鑰<br/> byte[] keyBytes = secretKey.getEncoded();<br/> //key轉(zhuǎn)換<br/> Key key = new SecretKeySpec(keyBytes,"AES");<br/> //加密<br/> Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");<br/> //初始化,設(shè)置為加密<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/> //初始化,設(shè)置為解密 <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的高級(jí)替代
1、AES是目前使用最多的對(duì)稱加密算法
2、通常用于移動(dòng)通信系統(tǒng)加密一級(jí)基于SSH協(xié)議的軟件
3、SSH Client、secureCRT
4、DES算法的替代者
查看全部 -
AES是DES的高級(jí)替代
DES有漏洞,所以,產(chǎn)生了3重DES<br>
3重DES的效率比較低,所以產(chǎn)生了AES<br>
AES的特點(diǎn)是:
1:使用的更為廣泛
2:目前還沒(méi)有被破解
3:通常用與移動(dòng)通信系統(tǒng)加密和SSH協(xié)議的軟件加密查看全部 -
JDK實(shí)現(xiàn)3DES<br/><br/>與實(shí)現(xiàn)DES方式基本一致,算法名稱要改為DESede,密鑰長(zhǎng)度為168,轉(zhuǎn)換密鑰時(shí)使用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/>轉(zhuǎn)化密鑰:<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、對(duì)稱加密算法-3DES查看全部
-
2、3重DES的好處查看全部
-
1、3重DES
查看全部 -
對(duì)稱加密算法-DES查看全部
-
DES加密:BC實(shí)現(xiàn)DES算法
// 生成key
?? ??? ??? ?KeyGenerator keyGenerator = KeyGenerator.getInstance("DES");? ? ? ? ?? keyGenerator.getProvider();
???????? ? keyGenerator.init(56);
?? ??? ???? SecretKey secretKey = keyGenerator.generateKey();
?? ??? ??? ?byte[] bytesKey =? secretKey.getEncoded();
?? ??? ??? ?// key轉(zhuǎn)換
?? ??? ??? ?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實(shí)現(xiàn)DES算法
// 生成key
?? ??? ??? ?KeyGenerator keyGenerator = KeyGenerator.getInstance("DES");
?? ??? ??? ?SecretKey secretKey = keyGenerator.generateKey();
?? ??? ??? ?byte[] bs = secretKey.getEncoded();
?? ??? ??? ?// key轉(zhuǎn)換
?? ??? ??? ?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實(shí)現(xiàn)DES算法<br/><br/>1.初始化密鑰<br/>使用KeyGenerator類的getInstance()靜態(tài)方法,獲取生成指定算法的密鑰生成器,參數(shù)是算法名稱.<br/>使用KeyGenerator類的init()方法進(jìn)行密鑰生成器的初始化,指定密鑰生成器產(chǎn)生密鑰的長(zhǎng)度.<br/>使用KeyGenerator類的generatorKey()方法生成一個(gè)密鑰對(duì)象,返回SecretKey密鑰對(duì)象.<br/>SecretKey為密鑰對(duì)象.使用它的getEncoded()方法返回一個(gè)密鑰(字節(jié)數(shù)組形式)<br/><br/>public static byte[] initSecretKey(){<br/>//返回生成指定算法密鑰的KeyGenerator對(duì)象<br/>KeyGenerator kg = KeyGenerator.getInstance("DES"); <br/>//初始化此密鑰生成器,使其具有確定的密鑰大小<br/>kg.init(56);<br/>//生成一個(gè)密鑰<br/>SecretKey secretKey = kg.generateKey();<br/>return secretKey.getEncoded();<br/>}<br/><br/>2.轉(zhuǎn)化密鑰(還原密鑰),將jdk生成的密鑰對(duì)象轉(zhuǎn)化成DES規(guī)則的密鑰對(duì)象.<br/>創(chuàng)建一個(gè)DESKeySpec實(shí)例,作用是將JDK初始化的密鑰轉(zhuǎn)化成DES規(guī)則的密鑰.<br/>構(gòu)造方法參數(shù)是JDK生成的密鑰(字節(jié)數(shù)組形式).<br/>使用SecretKeyFactory類的getInstance()靜態(tài)方法獲取一個(gè)密鑰工廠實(shí)例,參數(shù)是算法名稱<br/>使用SecretKeyFactory類的generateSecret()方法生成密鑰,參數(shù)是DESKeySpec實(shí)例.返回SecretKey,返回的SecretKey實(shí)例就是符合DES算法的密鑰.<br/><br/> private static Key toKey(byte[] key){<br/> //實(shí)例化DES密鑰規(guī)則<br/> DESKeySpec dks = new DESKeySpec(key);<br/> //實(shí)例化密鑰工廠<br/> SecretKeyFactory skf = SecretKeyFactory.getInstance("DES");<br/> //生成密鑰<br/> SecretKey secretKey = skf.generateSecret(dks);<br/> return secretKey;<br/> }查看全部
-
JDK 對(duì)稱加密 DES查看全部
-
常用對(duì)稱加密算法:
DES
AES
PBE
IDEA
查看全部 -
對(duì)稱加密的特點(diǎn):
加密秘鑰=解密秘鑰
查看全部
舉報(bào)