本文共 1772 字,大约阅读时间需要 5 分钟。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | /* DES 加密、解密 */ /** * DES 加密 * * @param data * 明文 * @return * @throws Exception */ public static String DESEncrypt(String data) throws Exception { try { // 生成一个可信任的随机数源 SecureRandom sr = new SecureRandom(); // 从原始密钥数据创建DESKeySpec对象 DESKeySpec dks = new DESKeySpec(KEY.getBytes()); // 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey securekey = keyFactory.generateSecret(dks); // Cipher对象实际完成加密操作 Cipher cipher = Cipher.getInstance("DES"); // 用密钥初始化Cipher对象 cipher.init(Cipher.ENCRYPT_MODE, securekey, sr); // 加密数据 String strs = new BASE64Encoder().encodeBuffer(cipher.doFinal(data.getBytes())); return strs; } catch (Exception e) { e.printStackTrace(); } return null; } /** * DES 解密 * * @param data * 密文 * @return 明文 * @throws Exception */ public static String DESDecrypt(String data) throws Exception, Exception { if (data == null ) return null ; byte [] buf = new BASE64Decoder().decodeBuffer(data); // 生成一个可信任的随机数源 SecureRandom sr = new SecureRandom(); // 从原始密钥数据创建DESKeySpec对象 DESKeySpec dks = new DESKeySpec(KEY.getBytes()); // 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance( "DES" ); SecretKey securekey = keyFactory.generateSecret(dks); // Cipher对象实际完成加密操作 Cipher cipher = Cipher.getInstance( "DES" ); // 用密钥初始化Cipher对象 cipher.init(Cipher.ENCRYPT_MODE, securekey, sr); return new String(cipher.doFinal(buf)); } |
上面代码在测试的时候,解密出现了乱码,
建议采用自己对base64进行编码格式控制,这样就能够保证加密,解密格式一致,不会出现乱码
。