package io.jpress.utils; /** * Created by A007 on 2016/12/29. * 北京滔米科技有限公司 CloudPass项目 */ import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import java.security.SecureRandom; /** * 解密 */ public class MyDecryptUtils { /** * 对数据进行DES加密. * @param data 待进行DES加密的数据 * @return 返回经过DES加密后的数据 * @throws Exception * @author AmigoXie * Creation date: 2007-7-31 - 下午12:06:24 */ public final static String decrypt(String data) throws Exception { return new String(decrypt(hex2byte(data.getBytes()),"kEHrDooxWHCWtfeSxvDvgqZq".getBytes())); } private static byte[] decrypt(byte[] data, byte[] key) throws Exception { // DES算法要求有一个可信任的随机数源 SecureRandom sr = new SecureRandom(); // 从原始密匙数据创建一个DESKeySpec对象 DESKeySpec dks = new DESKeySpec(key); // 创建一个密匙工厂,然后用它把DESKeySpec对象转换成 // 一个SecretKey对象 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey securekey = keyFactory.generateSecret(dks); // Cipher对象实际完成解密操作 Cipher cipher = Cipher.getInstance("DES"); // 用密匙初始化Cipher对象 cipher.init(Cipher.DECRYPT_MODE, securekey, sr); // 现在,获取数据并解密 // 正式执行解密操作 return cipher.doFinal(data); } public static byte[] hex2byte(byte[] b) { if ((b.length % 2) != 0) throw new IllegalArgumentException("长度不是偶数"); byte[] b2 = new byte[b.length / 2]; for (int n = 0; n < b.length; n += 2) { String item = new String(b, n, 2); b2[n / 2] = (byte) Integer.parseInt(item, 16); } return b2; } }