1、概述:
1.1 加密秘钥=解密秘钥
1.2 属于初等加密算法
2、对称加密算法:
1.1 DES(3DES)
Data Encryption Standard 数据加密标准
package com.exiuge.mytest; import org.bouncycastle.util.encoders.Hex; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import java.security.Key; public class JdkDES { private static String src="hello,rose"; public static void main(String[] args){ enDeCode(src); } public static void enDeCode(String src){ try { //生成key KeyGenerator keyGenerator=KeyGenerator.getInstance("DES"); keyGenerator.init(56); SecretKey secretKey =keyGenerator.generateKey(); byte[] bytesKey=secretKey.getEncoded(); //key转换 DESKeySpec desKeySpec=new DESKeySpec(bytesKey); SecretKeyFactory secretKeyFactory=SecretKeyFactory.getInstance("DES"); Key convertKey =secretKeyFactory.generateSecret(desKeySpec); //加密 Cipher cipher=Cipher.getInstance("DES/ECB/PKCS5padding"); cipher.init(Cipher.ENCRYPT_MODE,convertKey); byte[] desBytes=cipher.doFinal(src.getBytes()); System.out.println(Hex.toHexString(desBytes)); System.out.println(new String(desBytes,"utf-8")); //解密 cipher.init(Cipher.DECRYPT_MODE,convertKey); byte[] srcBytes=cipher.doFinal(desBytes); System.out.println(new String(srcBytes)); }catch (Exception e){ e.printStackTrace(); } } }
package com.exiuge.mytest; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.util.encoders.Hex; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import java.security.Key; import java.security.Security; public class BCDES { private static String src="hello,rose"; public static void main(String[] args){ enDeCode(src); } public static void enDeCode(String src){ try { Security.addProvider(new BouncyCastleProvider()); //生成key KeyGenerator keyGenerator=KeyGenerator.getInstance("DES","BC"); keyGenerator.init(56); SecretKey secretKey =keyGenerator.generateKey(); byte[] bytesKey=secretKey.getEncoded(); //key转换 DESKeySpec desKeySpec=new DESKeySpec(bytesKey); SecretKeyFactory secretKeyFactory=SecretKeyFactory.getInstance("DES"); Key convertKey =secretKeyFactory.generateSecret(desKeySpec); //加密 Cipher cipher=Cipher.getInstance("DES/ECB/PKCS5padding"); cipher.init(Cipher.ENCRYPT_MODE,convertKey); byte[] desBytes=cipher.doFinal(src.getBytes()); System.out.println(Hex.toHexString(desBytes)); System.out.println(new String(desBytes,"utf-8")); //解密 cipher.init(Cipher.DECRYPT_MODE,convertKey); byte[] srcBytes=cipher.doFinal(desBytes); System.out.println(new String(srcBytes)); }catch (Exception e){ e.printStackTrace(); } } }
1.2 AES
1.3 PBE
1.4 IDEA