当前位置: 代码迷 >> Web前端 >> java保险3
  详细解决方案

java保险3

热度:207   发布时间:2012-09-10 11:02:32.0
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));
		
		
	}
}
  相关解决方案