java openssl_PHP的openssl_encrypt方法的Java实现
importjavax.crypto.BadPaddingException;importjavax.crypto.Cipher;importjavax.crypto.IllegalBlockSizeException;importjavax.crypto.NoSuchPaddingException;importjavax.crypto.spec.IvParameterSpec;importja
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;
}
}
更多推荐
所有评论(0)