packagecom.cmit.hall.plat.play.utils;importjava.security.GeneralSecurityException;importjava.security.Key;importjava.util.Base64;importjavax.crypto.Cipher;importjavax.crypto.SecretKeyFactory;importjavax.crypto.spec.DESKeySpec;importorg.apache.commons.codec.DecoderException;importorg.apache.commons.codec.binary.Hex;/*** 数据加密 DES方式 + Base64
*@authorsun_flower
**/
public classEncryUtils {public static final String KEY = "gEpCIKFVdPEBJ1pM5pLSviM2Nrj5C/A4iAw8ou+jiJpnrXigolapdcJXfmh2tECyuQnaFrvZHabcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmn";/*** 测试
*@paramargs
*@throwsException*/
public static void main(String[] args) throwsException {
Key convertSecretKey=generateSecret(KEY);
String data= "{\"code\":\"100\",\"roleId\":[],\"userDesc\":\"测试\",\"sessionId\":\"90EA80C89F6187BAB363C9347F759E39\",\"roleList\":[],\"userName\":\"chenpeng\",\"checkCode\":\"\",\"token\":\"\",\"password\":\"eFEBcXRwTW2oMFSDwGwUKQ==\",\"createTime\":\"2019-05-27 15:30:14\",\"levelId\":\"1\",\"staffName\":\"\",\"id\":1502,\"userType\":\"1\",\"oldPwd\":\"\"}";
String enStr=encodeString(convertSecretKey, data);
decodeString(convertSecretKey, enStr);
}/*** 转换key
*@paramkey
*@return*@throwsGeneralSecurityException*/
public static Key generateSecret(String key) throwsGeneralSecurityException {byte[] bytesKey =key.getBytes();
DESKeySpec desKeySpec= new DESKeySpec(bytesKey);//实例化DESKey秘钥的相关内容
SecretKeyFactory factory = SecretKeyFactory.getInstance("DES");//实例一个秘钥工厂,指定加密方式
Key convertSecretKey =factory.generateSecret(desKeySpec);returnconvertSecretKey;
}/*** 加密
*@paramconvertSecretKey
*@paramdate
*@return*@throwsGeneralSecurityException*/
public static String encodeString(Key convertSecretKey, String data) throwsGeneralSecurityException {
Cipher cipher= Cipher.getInstance("DES/ECB/PKCS5Padding");//通过Cipher这个类进行加解密相关操作
cipher.init(Cipher.ENCRYPT_MODE, convertSecretKey);byte[] enData =Base64.getEncoder().encode(data.getBytes());byte[] result = cipher.doFinal(enData);//输入要加密的内容
System.out.println("加密的结果:" +Hex.encodeHexString(result));returnHex.encodeHexString(result);
}/*** 解密
*@paramconvertSecretKey
*@paramdate
*@return*@throwsGeneralSecurityException
*@throwsDecoderException*/
public static String decodeString(Key convertSecretKey, String data) throwsGeneralSecurityException, DecoderException {
Cipher cipher= Cipher.getInstance("DES/ECB/PKCS5Padding");//通过Cipher这个类进行加解密相关操作
cipher.init(Cipher.DECRYPT_MODE, convertSecretKey);byte[] hdata =Hex.decodeHex(data.toCharArray());byte[] result =cipher.doFinal(hdata);byte[] decode =Base64.getDecoder().decode(result);
System.out.println("解密结果:" + newString(decode));return newString(decode);
}
}