3DES加解密工具類
阿新 • • 發佈:2018-11-05
package test; import java.security.Key; import javax.crypto.Cipher; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESedeKeySpec; import javax.crypto.spec.IvParameterSpec; import org.apache.commons.lang.StringUtils; import com.sun.org.apache.xml.internal.security.utils.Base64; /** * @author guoxk * * @version 建立時間2017年5月23日 * * 類描述:3DES加密工具類 */ public class DES3 { private final static String encoding = "UTF-8"; /** * 方法描述:3DES加密 * @author guoxk * @createTime 2017年5月23日 上午9:03:44 * * @param plainText 明文 * @param secretKey 金鑰 * @param iv 加密向量 * @return String 密文 * @throws Exception */ public static String encode(String plainText, String secretKey, String iv) throws Exception { Key deskey = null; DESedeKeySpec spec = new DESedeKeySpec(secretKey.getBytes()); SecretKeyFactory keyfactory = SecretKeyFactory.getInstance("desede"); deskey = keyfactory.generateSecret(spec); Cipher cipher = Cipher.getInstance("desede/CBC/PKCS5Padding"); IvParameterSpec ips = new IvParameterSpec(iv.getBytes()); cipher.init(Cipher.ENCRYPT_MODE, deskey, ips); byte[] encryptData = cipher.doFinal(plainText.getBytes(encoding)); return Base64.encode(encryptData); } /** * 方法描述: 3DES解密 * @author guoxk * @createTime 2017年5月23日 上午9:04:37 * * @param encryptText 密文 * @param secretKey 金鑰 * @param iv 加密向量 * @return String 明文 * @throws Exception */ public static String decode(String encryptText, String secretKey, String iv) throws Exception { if (StringUtils.isBlank(encryptText) || StringUtils.isBlank(secretKey)) { return ""; } Key deskey = null; DESedeKeySpec spec = new DESedeKeySpec(secretKey.getBytes()); SecretKeyFactory keyfactory = SecretKeyFactory.getInstance("desede"); deskey = keyfactory.generateSecret(spec); Cipher cipher = Cipher.getInstance("desede/CBC/NoPadding"); IvParameterSpec ips = new IvParameterSpec(iv.getBytes()); cipher.init(Cipher.DECRYPT_MODE, deskey, ips); byte[] decryptData = cipher.doFinal(Base64.decode(encryptText)); return new String(decryptData, encoding).trim(); } /** * 方法描述:測試方法 * @author guoxk * @createTime 2017年5月23日 上午9:12:24 * * @param args */ public static void main(String[] args) { try { String key = "4SF6BJ3D8TDOT8NOCZ8T7P1K"; String iv = "13002542";//IV length must be 8 bytes long //加密 String encryptStr = DES3.encode("明文", key, iv); System.out.println(encryptStr); //解密 String decryptStr = DES3.decode(encryptStr, key, iv); System.out.println(decryptStr); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
jar包:jar包