import java.security.Key; import javax.crypto.Cipher; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESedeKeySpec; import com.sun.org.apache.xerces.internal.impl.dv.util.Base64; /** * 加密解密工具 */ public class DesEncrypt { private Key key; private static final String KEY_ALGORITHM = "DESede"; private static final String CIPHER_ALGORITHM = "DESede/ECB/PKCS5Padding"; /** * 默认构造函数 */ public DesEncrypt() { } /** * 构造函数,初始化Key * @param keyStore */ public DesEncrypt(String keyStore) { this.toKey(keyStore); } /** * 初始化Key对象 * @param keyText * @return */ public void toKey(String keyText) { DESedeKeySpec dks; SecretKeyFactory factory =null; if(check(keyText)){ try { dks = new DESedeKeySpec(keyText.getBytes()); factory= SecretKeyFactory.getInstance(KEY_ALGORITHM); this.key = factory.generateSecret(dks); } catch (Exception e) { e.printStackTrace(); } } } /** * * @param 密钥keyText * @return 校验密钥格式是否通过 */ public boolean check(String keyText){ boolean flag = false ; if(keyText!=null&&!"".equals(keyText.trim())){ if(keyText.trim().length()>=24){ flag = true ; } } return flag ; } /** * 加密 * @param 明文 inputText * @return 密文 outputText */ public String getEncString(String inputText) { Cipher cipher = null; String outputText = null ; try { cipher =Cipher.getInstance(CIPHER_ALGORITHM) ; cipher.init(Cipher.ENCRYPT_MODE, this.key) ; outputText= Base64.encode(cipher.doFinal(inputText.getBytes("UTF8"))); } catch (Exception e) { e.printStackTrace(); }finally{ cipher= null; } return outputText; } /** * 解密 * @param 密文 inputText * @return 明文 outputText */ public String getDesString(String inputText) { Cipher cipher = null; String outputText = null ; try { cipher =Cipher.getInstance(CIPHER_ALGORITHM) ; cipher.init(Cipher.DECRYPT_MODE, this.key) ; outputText= new String(cipher.doFinal(Base64.decode(inputText))); } catch (Exception e) { e.printStackTrace(); }finally{ cipher= null; } return outputText; } }
java在调用Base64后会自动换行,可添加replaceAll("\r","").replaceAll("\n","")