/*** Copyright (c) 2013-Nowhttp://jeesite.comAll rights reserved.*/
packagecom.lms.common.utils;importjava.io.UnsupportedEncodingException;importjava.util.ArrayList;importjava.util.List;/*** DES加密解密工具
* 加密:DesUtils.encode("admin","1,2,3");
* 解密:DesUtils.decode("012C2C9BA925FAF8045B2FD9B02A2664","1,2,3");
*@authorThinkGem*/
public classDesUtils {private static DesCore desCore = newDesCore();/*** DES加密(secretKey代表3个key,用逗号分隔)*/
public staticString encode(String data, String secretKey) {if(StringUtils.isBlank(data)){return "";
}
String[] ks= StringUtils.split(secretKey, ",");if (ks.length >= 3){return desCore.strEnc(data, ks[0], ks[1], ks[2]);
}return desCore.strEnc(data, secretKey, "", "");
}/*** DES解密(secretKey代表3个key,用逗号分隔)*/
public staticString decode(String data, String secretKey) {if(StringUtils.isBlank(data)){return "";
}
String[] ks= StringUtils.split(secretKey, ",");if (ks.length >= 3){return desCore.strDec(data, ks[0], ks[1], ks[2]);
}return desCore.strDec(data, secretKey, "", "");
}/*** DES加密/解密
* @Copyright Copyright (c) 2006
*@authorGuapo*/@SuppressWarnings({"rawtypes","unused","unchecked"})static classDesCore {/** encrypt the string to string made up of hex return the encrypted string*/
publicString strEnc(String data, String firstKey, String secondKey, String thirdKey) {int leng =data.length();
String encData= "";
List firstKeyBt= null, secondKeyBt = null, thirdKeyBt = null;int firstLength = 0, secondLength = 0, thirdLength = 0;if (firstKey != null && firstKey != "") {
firstKeyBt=getKeyBytes(firstKey);
firstLength=firstKeyBt.size();
}if (secondKey != null && secondKey != "") {
secondKeyBt=getKeyBytes(secondKey);
secondLength=secondKeyBt.size();
}if (thirdKey != null && thirdKey != "") {
thirdKeyBt=getKeyBytes(thirdKey);
thirdLength=thirdKeyBt.size();
}if (leng > 0) {if (leng < 4) {int[] bt =strToBt(data);int[] encByte = null;if (firstKey != null && firstKey != "" && secondKey != null && secondKey != "" && thirdKey != null && thirdKey != "") {int[] tempBt;intx, y, z;
tempBt=bt;for (x = 0; x < firstLength; x++) {
tempBt= enc(tempBt, (int[]) firstKeyBt.get(x));
}for (y = 0; y < secondLength; y++) {
tempBt= enc(tempBt, (int[]) secondKeyBt.get(y));
}for (z = 0; z < thirdLength; z++) {
tempBt= enc(tempBt, (int[]) thirdKeyBt.get(z));
}
encByte=tempBt;
}else{if (firstKey != null && firstKey != "" && secondKey != null && secondKey != "") {int[] tempBt;intx, y;
tempBt=bt;for (x = 0; x < firstLength; x++) {
tempBt= enc(tempBt, (int[]) firstKeyBt.get(x));
}for (y = 0; y < secondLength; y++) {
tempBt= enc(tempBt, (int[]) secondKeyBt.get(y));
}
encByte=tempBt;
}else{if (firstKey != null && firstKey != "") {int[] tempBt;int x = 0;
tempBt=bt;for (x = 0; x < firstLength; x++) {
tempBt= enc(tempBt, (int[]) firstKeyBt.get(x));
}
encByte=tempBt;
}
}
}
encData=bt64ToHex(encByte);
}else{int iterator = (leng / 4);int remainder = leng % 4;int i = 0;for (i = 0; i < iterator; i++) {
String tempData= data.substring(i * 4 + 0, i * 4 + 4);int[] tempByte =strToBt(tempData);int[] encByte = null;if (firstKey != null && firstKey != "" && secondKey != null && secondKey != "" && thirdKey != null && thirdKey != "") {int[] tempBt;intx, y, z;
tempBt=tempByte;for (x = 0; x < firstLength; x++) {
tempBt= enc(tempBt, (int[]) firstKeyBt.get(x));
}for (y = 0; y < secondLength; y++) {
tempBt= enc(tempBt, (int[]) secondKeyBt.get(y));
}for (z = 0; z < thirdLength; z++) {
tempBt= enc(tempBt, (int[]) thirdKeyBt.get(z));
}
encByte=tempBt;
}else{if (firstKey != null && firstKey != "" && secondKey != null && secondKey != "") {int[] tempBt;intx, y;
tempBt=tempByte;for (x = 0; x < firstLength; x++) {
tempBt= enc(tempBt, (int[]) firstKeyBt.get(x));
}for (y = 0; y < secondLength; y++) {
tempBt= enc(tempBt, (int[]) secondKeyBt.get(y));
}
encByte=tempBt;
}else{if (firstKey != null && firstKey != "") {int[] tempBt;intx;
tempBt=tempByte;for (x = 0; x < firstLength; x++) {
tempBt= enc(tempBt, (int[]) firstKeyBt.get(x));
}
encByte=tempBt;
}
}
}
encData+=bt64ToHex(encByte);
}if (remainder > 0) {
String remainderData= data.substring(iterator * 4 + 0, leng);int[] tempByte =strToBt(remainderData);int[] encByte = null;if (firstKey != null && firstKey != "" && secondKey != null && secondKey != "" && thirdKey != null && thirdKey != "") {int[] tempBt;intx, y, z;
tempBt=tempByte;for (x = 0; x < firstLength; x++) {
tempBt= enc(tempBt, (int[]) firstKeyBt.get(x));
}for (y = 0; y < secondLength; y++) {
tempBt= enc(tempBt, (int[]) secondKeyBt.get(y));
}for (z = 0; z < thirdLength; z++) {
tempBt= enc(tempBt, (int[]) thirdKeyBt.get(z));
}
encByte=tempBt;
}else{if (firstKey != null && firstKey != "" && secondKey != null && secondKey != "") {int[] tempBt;intx, y;
tempBt=tempByte;for (x = 0; x < firstLength