importjavax.crypto.BadPaddingException;importjavax.crypto.Cipher;importjavax.crypto.IllegalBlockSizeException;importjavax.crypto.NoSuchPaddingException;importjavax.crypto.spec.IvParameterSpec;importjavax.crypto.spec.SecretKeySpec;importjava.io.UnsupportedEncodingException;importjava.net.URLDecoder;importjava.net.URLEncoder;importjava.security.InvalidAlgorithmParameterException;importjava.security.InvalidKeyException;importjava.security.NoSuchAlgorithmException;importjava.util.Base64;/***@authorAdministrator

* @create 2019-03-20

* @desc 安全工具类

**/

public classSecurityUtil {public static final String KEY = "09bd821d3e764f44899a9dc6";public static final String IV = "2M9tOpWi";public static final String DEFAULT_ENC_NAME = "UTF-8";public staticString java_openssl_encrypt(String data) {returnjava_openssl_encrypt(data, IV);

}/*** java_openssl_encrypt加密算法

*

*@paramdata

*@paramiv

*@return*@throwsException*/

public staticString java_openssl_encrypt(String data, String iv) {try{

Cipher cipher=createCipher(iv, Cipher.ENCRYPT_MODE);returnURLEncoder.encode(Base64.getEncoder().encodeToString(cipher.doFinal(data.getBytes())), DEFAULT_ENC_NAME);

}catch(NoSuchAlgorithmException e) {

e.printStackTrace();

}catch(NoSuchPaddingException e) {

e.printStackTrace();

}catch(InvalidKeyException e) {

e.printStackTrace();

}catch(InvalidAlgorithmParameterException e) {

e.printStackTrace();

}catch(IllegalBlockSizeException e) {

e.printStackTrace();

}catch(BadPaddingException e) {

e.printStackTrace();

}catch(UnsupportedEncodingException e) {

e.printStackTrace();

}return null;

}public staticString java_openssl_decrypt(String data) {returnjava_openssl_decrypt(data, IV);

}/*** java_openssl_decrypt解密

*

*@paramdata

*@paramiv

*@return

*/

public staticString java_openssl_decrypt(String data, String iv) {try{

Cipher cipher=createCipher(iv, Cipher.DECRYPT_MODE);return newString(cipher.doFinal(Base64.getDecoder().decode(URLDecoder.decode(data, DEFAULT_ENC_NAME))));

}catch(NoSuchAlgorithmException e) {

e.printStackTrace();

}catch(NoSuchPaddingException e) {

e.printStackTrace();

}catch(InvalidKeyException e) {

e.printStackTrace();

}catch(InvalidAlgorithmParameterException e) {

e.printStackTrace();

}catch(UnsupportedEncodingException e) {

e.printStackTrace();

}catch(IllegalBlockSizeException e) {

e.printStackTrace();

}catch(BadPaddingException e) {

e.printStackTrace();

}return null;

}/*** 创建密码器Cipher

*

*@paramiv

*@parammode 加/解密模式

*@return*@throwsNoSuchAlgorithmException

*@throwsNoSuchPaddingException

*@throwsInvalidKeyException

*@throwsInvalidAlgorithmParameterException*/

private static Cipher createCipher(String iv, int mode) throwsNoSuchAlgorithmException, NoSuchPaddingException,

InvalidKeyException, InvalidAlgorithmParameterException {byte[] key =KEY.getBytes();

Cipher cipher= Cipher.getInstance("DESede/CBC/PKCS5Padding");

IvParameterSpec ivParameterSpec= newIvParameterSpec(iv.getBytes());

cipher.init(mode,new SecretKeySpec(key, "DESede"), ivParameterSpec);returncipher;

}

}

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐