package com.JUtils.encrypt;import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESKeySpec;/** * DES加解密工具类 * * @Author:chenssy * @date:2016年5月20日 下午5:19:00 * */class DESUtils { /** 默认key */ protected final static String KEY = "ScAKC0XhadTHT3Al0QIDAQAB"; /** * DES加密 * * @author : chenssy * @date : 2016年5月20日 下午5:51:37 * * @param data * 待加密字符串 * @param key * 校验位 * @return */ @SuppressWarnings("restriction") protected static String encrypt(String data,String key) { String encryptedData = null; try { // DES算法要求有一个可信赖的随机数源 SecureRandom sr = new SecureRandom(); DESKeySpec deskey = new DESKeySpec(key.getBytes()); // 创立一个密匙工厂,而后用它把DESKeySpec转换成一个SecretKey对象 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey secretKey = keyFactory.generateSecret(deskey); // 加密对象 Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.ENCRYPT_MODE, secretKey, sr); // 加密,并把字节数组编码成字符串 encryptedData = new sun.misc.BASE64Encoder().encode(cipher.doFinal(data.getBytes())); } catch (Exception e) { throw new RuntimeException("加密谬误,错误信息:", e); } return encryptedData; } /** * DES解密 * * @author : chenssy * @date : 2016年5月20日 下午5:52:23 * * @param cryptData * 待解密密文 * @param key * 校验位 * @return */ @SuppressWarnings("restriction") protected static String decrypt(String cryptData,String key) { String decryptedData = null; try { // DES算法要求有一个可信赖的随机数源 SecureRandom sr = new SecureRandom(); DESKeySpec deskey = new DESKeySpec(key.getBytes()); // 创立一个密匙工厂,而后用它把DESKeySpec转换成一个SecretKey对象 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey secretKey = keyFactory.generateSecret(deskey); // 解密对象 Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.DECRYPT_MODE, secretKey, sr); // 把字符串解码为字节数组,并解密 decryptedData = new String(cipher.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(cryptData))); } catch (Exception e) { throw new RuntimeException("解密谬误,错误信息:", e); } return decryptedData; } }
package com.JUtils.encrypt;import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.spec.SecretKeySpec;/** * AES加解密 * * @Author:chenssy * @date:2016年5月21日 上午9:01:41 */class AESUtils { /** 默认秘钥 */ protected static final String KEY = "NOPO3nzMD3dndwS0MccuMeXCHgVlGOoYyFwLdS24Im2e7YyhB0wrUsyYf0"; /** * AES解密 * * @author:chenssy * @date : 2016年5月21日 上午9:48:12 * * @param encryptValue * 待解密内容 * @param key * 秘钥 * @return * @throws Exception */ protected static String decrypt(String encryptValue, String key) throws Exception { return aesDecryptByBytes(base64Decode(encryptValue), key); } /** * AES加密 * * @author:chenssy * @date : 2016年5月21日 上午9:48:42 * * @param value * 待加密内容 * @param key * 秘钥 * @return * @throws Exception */ protected static String encrypt(String value, String key) throws Exception { return base64Encode(aesEncryptToBytes(value, key)); } private static String base64Encode(byte[] bytes){ return Base64Utils.encrypt(bytes); } @SuppressWarnings("static-access") private static byte[] base64Decode(String base64Code) throws Exception{ return base64Code == null ? null : new Base64Utils().decrypt(base64Code); } private static byte[] aesEncryptToBytes(String content, String encryptKey) throws Exception { KeyGenerator kgen = KeyGenerator.getInstance("AES"); kgen.init(128, new SecureRandom(encryptKey.getBytes())); Cipher cipher = Cipher.getInstance("AES"); cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(kgen.generateKey().getEncoded(), "AES")); return cipher.doFinal(content.getBytes("utf-8")); } private static String aesDecryptByBytes(byte[] encryptBytes, String decryptKey) throws Exception { KeyGenerator kgen = KeyGenerator.getInstance("AES"); kgen.init(128, new SecureRandom(decryptKey.getBytes())); Cipher cipher = Cipher.getInstance("AES"); cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(kgen.generateKey().getEncoded(), "AES")); byte[] decryptBytes = cipher.doFinal(encryptBytes); return new String(decryptBytes); } }