IntelligentRecognition/ah-jjsp-service/.svn/pristine/59/59375e5950bc22ecaf2ce145586...

170 lines
5.4 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.securityControl.common.core.utils.aes;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.StringUtils;
import sun.misc.BASE64Decoder;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.spec.SecretKeySpec;
import java.math.BigInteger;
/**
* AES的加密和解密
* @author libo
*/
public class Aes {
//密钥 (需要前端和后端保持一致)
private static final String KEY = "jjbns@jysoft1088";
//算法
private static final String ALGORITHMSTR = "AES/ECB/PKCS5Padding";
/**
* aes解密
* @param encrypt 内容
* @return
* @throws Exception
*/
public static String aesDecrypt(String encrypt) {
try {
String str=encrypt.replaceAll(" ","+");
return aesDecrypt(str, KEY);
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
/**
* aes加密
* @param content
* @return
* @throws Exception
*/
public static String aesEncrypt(String content) {
try {
return aesEncrypt(content, KEY);
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
/**
* 将byte[]转为各种进制的字符串
* @param bytes byte[]
* @param radix 可以转换进制的范围从Character.MIN_RADIX到Character.MAX_RADIX超出范围后变为10进制
* @return 转换后的字符串
*/
public static String binary(byte[] bytes, int radix){
// 这里的1代表正数
return new BigInteger(1, bytes).toString(radix);
}
/**
* base 64 encode
* @param bytes 待编码的byte[]
* @return 编码后的base 64 code
*/
public static String base64Encode(byte[] bytes){
return Base64.encodeBase64String(bytes);
}
/**
* base 64 decode
* @param base64Code 待解码的base 64 code
* @return 解码后的byte[]
* @throws Exception
*/
public static byte[] base64Decode(String base64Code) throws Exception{
return StringUtils.isEmpty(base64Code) ? null : new BASE64Decoder().decodeBuffer(base64Code);
}
/**
* AES加密
* @param content 待加密的内容
* @param encryptKey 加密密钥
* @return 加密后的byte[]
* @throws Exception
*/
public static byte[] aesEncryptToBytes(String content, String encryptKey) throws Exception {
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128);
Cipher cipher = Cipher.getInstance(ALGORITHMSTR);
cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(encryptKey.getBytes(), "AES"));
return cipher.doFinal(content.getBytes("utf-8"));
}
/**
* AES加密为base 64 code
* @param content 待加密的内容
* @param encryptKey 加密密钥
* @return 加密后的base 64 code
* @throws Exception
*/
public static String aesEncrypt(String content, String encryptKey) throws Exception {
return base64Encode(aesEncryptToBytes(content, encryptKey));
}
/**
* AES解密
* @param encryptBytes 待解密的byte[]
* @param decryptKey 解密密钥
* @return 解密后的String
* @throws Exception
*/
public static String aesDecryptByBytes(byte[] encryptBytes, String decryptKey) throws Exception {
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128);
Cipher cipher = Cipher.getInstance(ALGORITHMSTR);
cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(decryptKey.getBytes(), "AES"));
byte[] decryptBytes = cipher.doFinal(encryptBytes);
return new String(decryptBytes);
}
/**
* 将base 64 code AES解密
* @param encryptStr 待解密的base 64 code
* @param decryptKey 解密密钥
* @return 解密后的string
* @throws Exception
*/
public static String aesDecrypt(String encryptStr, String decryptKey) throws Exception {
return StringUtils.isEmpty(encryptStr) ? null : aesDecryptByBytes(base64Decode(encryptStr), decryptKey);
}
/**
* 测试
*/
public static void main(String[] args) throws Exception {
String pwd="oBZFG5LIOMMNbo40z9Bapw==";
String use="cXsFziKLX5ekmWYyNhwMFg==";
String puid =aesEncrypt("201115200124195471");
String type =aesEncrypt("1");
System.out.println("加密:" + puid);
System.out.println("加密:" + type);
String usename =aesDecrypt(use);
String password =aesDecrypt(pwd);
System.out.println("解密后:" + usename);
System.out.println("解密后:" + password);
// String content = "test";
// System.out.println("加密前:" + content);
// System.out.println("加密密钥和解密密钥:" + KEY);
// String encrypt = aesEncrypt(content, KEY);
// System.out.println("加密后:" + encrypt);
// String decrypt = aesDecrypt(encrypt, KEY);
// System.out.println("解密后:" + decrypt);
// String result= AesEncryptUtils.decrypt("3qO06ijUcELmiJgymXD3CbVPiwD1+MGTxWRoC3TWm1Cv+vlWIXEKhNNtkJGmas/oG+F9yImSCFefMmRW5fkhFFmEemNrt4wVhte3mHbZpqNsEJANwixB4nT9o5HKeZtr/b8z1JfS6yuaWse46ZFNdqSt6gTErN7K+QYVLdnOpMUyVckLlYlj5H7h5of9KPoi6dEDbkJW7lpL6uFZRuE3kA==",AesEncryptUtils.KEY_NAME);
// String str= AesEncryptUtils.encrypt("8F12517D-0D",AesEncryptUtils.KEY_NAME);
// System.out.println("解密后:" + result);
}
}