java安全3package com.ngsn.securityimport javax.crypto.Cipherimport javax.crypto.SecretKeyimport
java安全3
package com.ngsn.security;import javax.crypto.Cipher;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.PBEKeySpec;import javax.crypto.spec.PBEParameterSpec;/** * 对称加密(加密解密的密钥一样) * 根据自己的密码来生成一个自己的私钥 * @author John.Yao * */public class SecretKeyTest2 {public static void main(String[] args) throws Exception{//Cipher 此类为加密和解密提供密码功能Cipher cipher = Cipher.getInstance("PBEWithMD5AndDES");//根据AES的加密方法生成一个密钥//SecretKey key = KeyGenerator.getInstance("AES").generateKey();//根据密钥工厂生成密钥//类PBEKeySpec,可以将密码视为某种原始密钥内容,由此加密机制使用其导出一个密钥SecretKey key = SecretKeyFactory.getInstance("PBEWithMD5AndDES").generateSecret(new PBEKeySpec("1234567".toCharArray()));//此类指定随同以密码为基础的加密法 (PBE) 使用的参数集合PBEParameterSpec param = new PBEParameterSpec(new byte[]{1,2,3,4,5,6,7,8},1000);//初始化//Cipher.ENCRYPT_MODE 为加密模式//key 为密钥cipher.init(Cipher.ENCRYPT_MODE,key,param);//对byte[] 进行加密,返回一个加密后的byte[]byte[] result = cipher.doFinal("abcd".getBytes());System.out.println("result----->"+new String(result));//解密//初始化//Cipher.DECRYPT_MODE 为解密模式//key 为密钥cipher.init(Cipher.DECRYPT_MODE, key,param);//对加密后的byte[]进行解密byte[] b = cipher.doFinal(result);System.out.println("b------>"+new String(b));}} 