package com.demo.pbe; import java.security.Key; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.NoSuchPaddingException; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.PBEParameterSpec; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64; public class testPBE { private static final String src="http://www.google.com"; public static void main(String[] args) { jdkPBE(); } public static void jdkPBE(){ try { //初始化鹽 SecureRandom random=new SecureRandom(); byte [] salt=random.generateSeed(8); //-----------口令及祕鑰------------ String password="hao123"; 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[] bytes = cipher.doFinal(src.getBytes()); System.out.println("jdk pbe encrypt: "+Base64.encodeBase64String(bytes)); // String str=Base64.encodeBase64String(bytes); // byte[] b=Base64.decodeBase64(str); // System.out.println(); //-------解密處理------------ cipher.init(Cipher.DECRYPT_MODE,key,pbeParameterSpec); bytes=cipher.doFinal(bytes); System.out.println("jdk pbe decrypt: "+new String(bytes)); } catch (Exception e) { e.printStackTrace(); } } }