package com.doumee.core.utils; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.lang.StringUtils; public class EncryptUtil { private static byte[] iv = { 1, 2, 3, 4, 5, 6, 7, 8 }; /** * des加密 加密以 byte[] 明文输入 ,byte[] 密文输出 * * @author: j * @date: 2014-8-21 * * @param encryptBytes * :要加密的字节数组 * @param encryptKey * :秘钥,只能是八位字母和数字的组合 * @return * @throws Exception */ public static byte[] encryptDES(byte[] encryptBytes, String encryptKey) throws Exception { IvParameterSpec zeroIv = new IvParameterSpec(iv); SecretKeySpec key = new SecretKeySpec(encryptKey .getBytes( "UTF-8"), "DES"); Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, key, zeroIv); byte[] encryptedData = cipher.doFinal(encryptBytes); return Base64Util.Encode(encryptedData); } /** * @author: j * @date: 2014-8-21 * * @param decryptBytes * :要解密的字节数组 * @param decryptKey * :解密的秘钥,只能是八位字母和数字的组合 * @return * @throws Exception */ public static byte[] decryptDES(byte[] decryptBytes, String decryptKey) throws Exception { byte[] byteMi = Base64Util.decode(decryptBytes); IvParameterSpec zeroIv = new IvParameterSpec(iv); SecretKeySpec key = new SecretKeySpec(decryptKey .getBytes( "UTF-8"), "DES"); Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); cipher.init(Cipher.DECRYPT_MODE, key, zeroIv); byte decryptedData[] = cipher.doFinal(byteMi); return decryptedData; } /** * MD5加密 2014-9-25 * * @param plainText * @return * @throws NoSuchAlgorithmException * String * @throws UnsupportedEncodingException */ public static String Md5(String plainText) throws NoSuchAlgorithmException, UnsupportedEncodingException { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(plainText.getBytes( "UTF-8")); byte b[] = md.digest(); int i; StringBuffer buf = new StringBuffer(StringUtils.EMPTY); for (int offset = 0; offset < b.length; offset++) { i = b[offset]; if (i < 0) { i += 256; } if (i < 16) { buf.append("0"); } buf.append(Integer.toHexString(i)); } return buf.toString(); } }