加密:
public static String getEncString(String data, String key, String iv) throws Exception { Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding"); DESedeKeySpec dks = new DESedeKeySpec(key.getBytes()); IvParameterSpec ivs = new IvParameterSpec(iv.getBytes()); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede"); SecretKey securekey = keyFactory.generateSecret(dks); cipher.init(Cipher.ENCRYPT_MODE, securekey, ivs); BASE64Encoder base64Encoder = new BASE64Encoder(); return base64Encoder.encode(cipher.doFinal(data.getBytes())); }
解密
public static String getDesString(String data, String key, String iv) throws Exception{ BASE64Decoder base64Decoder = new BASE64Decoder(); byte[] databyte = base64Decoder.decodeBuffer(data); Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding"); DESedeKeySpec dks = new DESedeKeySpec(key.getBytes()); IvParameterSpec ivs = new IvParameterSpec(iv.getBytes()); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede"); SecretKey securekey = keyFactory.generateSecret(dks); cipher.init(Cipher.DECRYPT_MODE, securekey, ivs); return new String(cipher.doFinal(databyte)); }
key 大于24位
iv 位数为8的倍数