Java DES 实现

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/** 
 * ClassName:DesUtils <br/> 
 * Function: Des 加密解密算法的实现的工具类. <br/> 
 * Reason:   Des 加密解密算法的实现的工具类. <br/> 
 * Date:     2013年10月20日 上午10:39:31 <br/> 
 * @author   zhangzhaoyu 
 * @version   
 * @since    JDK 1.6 
 * @see       
 */
public class DesUtils {

	private final static String DES = "DES";
	
	/**
	 * 
	 * encrypt:<br />
	 * 实现DES 加密
	 *
	 * @author zhangzhaoyu
	 * @param data
	 * @param key
	 * @return
	 * @throws Exception
	 */
	public static String encrypt(String data, String key) throws Exception {
		
		byte[] bt = encrypt(data.getBytes(), key.getBytes());
		String strs =  new BASE64Encoder().encode(bt);
		return strs;
	}
	
	/**
	 * 
	 * decrypt:<br />
	 * 实现DES 解密
	 *
	 * @author zhangzhaoyu
	 * @param data
	 * @param key
	 * @return
	 * @throws Exception
	 */
	public static String decrypt(String data, String key) throws Exception {
		
		if (data == null) {
			return null;
		}
		
		BASE64Decoder decoder = new BASE64Decoder();
		byte[] buf = decoder.decodeBuffer(data);
		byte[] bt = decrypt(buf, key.getBytes());
		
		return new String(bt);
	}
	
	public static byte[] encrypt(byte[] data, byte[] key) throws Exception {
		
		// 生成一个可信任的随机数源
		//SecureRandom sr = new SecureRandom();
		
		// 从原始密钥数据创建DESKeySpec对象
		DESKeySpec dks = new DESKeySpec(key);
		
		// 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象
		SecretKeyFactory keyFacotry = SecretKeyFactory.getInstance(DES);
		SecretKey secretKey = keyFacotry.generateSecret(dks);
		
		// Cipher对象实际完成加密操作
		Cipher cipher = Cipher.getInstance(DES);
		// 用密钥初始化Cipher对象
		
		IvParameterSpec iv = new IvParameterSpec(key);
		cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);
		
		
		return cipher.doFinal(data);
	}
	
	public static byte[] decrypt(byte[] data, byte[] key) throws Exception {
		
		// 生成一个可信任的随机数源
		//SecureRandom sr = new SecureRandom();
		
		// 从原始密钥数据创建DESKeySpec对象
		DESKeySpec dks = new DESKeySpec(key);
		
		// 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象
		SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
		SecretKey securekey = keyFactory.generateSecret(dks);
		
		// Cipher对象实际完成解密操作
		Cipher cipher = Cipher.getInstance(DES);
		
		IvParameterSpec iv = new IvParameterSpec(key);
		// 用密钥初始化Cipher对象
		cipher.init(Cipher.DECRYPT_MODE, securekey, iv);

		return cipher.doFinal(data);
	}
}
 

你可能感兴趣的:(java)