package com.juns.wechat.common;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
public class DES {
private static byte[] iv = { 1, 2, 3, 4, 5, 6, 7, 8 };
public static String strkey = "%%d";
/**
* 数据加密
*
* @param encryptString
* @return
* @throws Exception
*/
public static String encryptDES(String encryptString) throws Exception {
IvParameterSpec zeroIv = new IvParameterSpec(iv);
SecretKeySpec key = new SecretKeySpec(getkeys().getBytes(), "DES");
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key, zeroIv);
byte[] encryptedData = cipher.doFinal(encryptString.getBytes());
return BASE64.encode(encryptedData);
}
/**
* 数据解密
*
* @param decryptString
* @return
* @throws Exception
*/
public static String decryptDES(String decryptString) throws Exception {
byte[] byteMi = new BASE64().decode(decryptString);
IvParameterSpec zeroIv = new IvParameterSpec(iv);
SecretKeySpec key = new SecretKeySpec(getkeys().getBytes(), "DES");
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, key, zeroIv);
byte decryptedData[] = cipher.doFinal(byteMi);
return new String(decryptedData);
}
public static String getkeys() {
return BASE64.strkey2;
}
// MD5加密
private static final char HEX_DIGITS[] = { '0', '1', '2', '3', '4', '5',
'6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
public static String strkey3 = "*(&";
public static String toHexString(byte[] b) { // String to byte
StringBuilder sb = new StringBuilder(b.length * 2);
for (int i = 0; i < b.length; i++) {
sb.append(HEX_DIGITS[(b[i] & 0xf0) >>> 4]);
sb.append(HEX_DIGITS[b[i] & 0x0f]);
}
return sb.toString();
}
public static String md5(String s) {
try {
// Create MD5 Hash
MessageDigest digest = java.security.MessageDigest
.getInstance("MD5");
digest.update(s.getBytes());
byte[] messageDigest = digest.digest();
return toHexString(messageDigest).toLowerCase();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return "";
}
}
/**
* 密码MD5 调用此方法
*
* @param s
* @return
*/
public static String md5Pwd(String s) {
return md5("hJy*()" + s);
}
}