加密霹疫、解密操作
/**
*
* <p>
* 采用JDK內(nèi)置類進(jìn)行真正的加密操作
* @param byteS
* @param password
* @return byte[]
*/
private static byte[] encryptByte(byte[] byteS, byte password[]) {
byte[] byteFina = null;
try {// 初始化加密/解密工具
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
DESKeySpec desKeySpec = new DESKeySpec(password);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
IvParameterSpec iv = new IvParameterSpec(keys);
cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);
byteFina = cipher.doFinal(byteS);
} catch (Exception e) {
throw new RuntimeException(e);
}
return byteFina;
}
/**
*
* <p>
* 采用JDK對(duì)應(yīng)的內(nèi)置類進(jìn)行解密操作
* @param byteS
* @param password
* @return byte[]
*/
private static byte[] decryptByte(byte[] byteS, byte password[]) {
byte[] byteFina = null;
try {// 初始化加密/解密工具
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
DESKeySpec desKeySpec = new DESKeySpec(password);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
IvParameterSpec iv = new IvParameterSpec(keys);
cipher.init(Cipher.DECRYPT_MODE, secretKey, iv);
byteFina = cipher.doFinal(byteS);
} catch (Exception e) {
throw new RuntimeException(e);
}
return byteFina;
}
在實(shí)際加密或解密的過程后又將結(jié)果用base64包起來。
/**
*
* <p>
* Des加密strMing综芥,然后base64轉(zhuǎn)換
* @param strMing
* @param md5key
* @return String
*/
public static String encryptStr(String strMing, byte md5key[]) {
byte[] byteMi = null;
byte[] byteMing = null;
String strMi = "";
try {
byteMing = strMing.getBytes("utf-8");
byteMi = encryptByte(byteMing, md5key);
BASE64Encoder base64Encoder = new BASE64Encoder();
strMi = base64Encoder.encode(byteMi);
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
byteMing = null;
byteMi = null;
}
return strMi;
}
/**
*
* <p>
* Base64轉(zhuǎn)換strMi,然后進(jìn)行des解密
* @param strMi
* @param md5key
* @return String
*/
public static String decryptStr(String strMi, byte md5key[]) {
byte[] byteMing = null;
String strMing = "";
try {
BASE64Decoder decoder = new BASE64Decoder();
byteMing = decoder.decodeBuffer(strMi);
byteMing = decryptByte(byteMing, md5key);
strMing = new String(byteMing);
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
byteMing = null;
}
return strMing;
}
同時(shí)可以將字符集編碼通過參數(shù)的形式進(jìn)行傳輸丽蝎。 保證客戶端與服務(wù)器之間字符集相同