package org.hepx.jgt.common.encrypt;
import org.hepx.jgt.common.JgtConstant;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
/**
* AES 对称加密
*
* @author koala
* @Date 2014-8-23
*/
public class AES extends Encrypt {
private static final Logger LOGGER = LoggerFactory.getLogger(AES.class);
private static final String ALGORITHM = "AES";
SecretKeySpec secretKey;
public AES() {
setKey(JgtConstant.SECRET_KEY);//secret key
}
public AES(String str) {
setKey(str);//generate secret key
}
public SecretKey getSecretKey() {
return secretKey;
}
/**
* generate KEY
*/
public void setKey(String strKey) {
try {
byte[] bk = MD5.md5Raw(strKey.getBytes(JgtConstant.ENCODING));
this.secretKey = new SecretKeySpec(bk, ALGORITHM);
} catch (Exception e) {
LOGGER.error("Encrypt setKey is exception:", e.getMessage());
}
}
/**
* @param str
* @return
* @Description AES encrypt
*/
public String encryptAES(String str) {
byte[] encryptBytes = null;
String encryptStr = null;
try {
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, getSecretKey());
encryptBytes = cipher.doFinal(str.getBytes());
if (encryptBytes != null) {
encryptStr = Base64Util.encryptBASE64(encryptBytes);
}
} catch (Exception e) {
LOGGER.error("Encrypt encryptAES is exception:", e.getMessage());
}
return encryptStr;
}
/**
* @param str
* @return
* @Description AES decrypt
*/
public String decryptAES(String str) {
byte[] decryptBytes = null;
String decryptStr = null;
try {
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.DECRYPT_MODE, getSecretKey());
byte[] scrBytes = Base64Util.decryptBASE64(str);
decryptBytes = cipher.doFinal(scrBytes);
} catch (Exception e) {
LOGGER.error("Encrypt decryptAES is exception:", e.getMessage());
}
if (decryptBytes != null) {
decryptStr = new String(decryptBytes);
}
return decryptStr;
}
/**
* AES encrypt
*/
@Override
public String encrypt(String value, String key) throws Exception {
return this.encryptAES(value);
}
/**
* AES decrypt
*/
@Override
public String decrypt(String value, String key) throws Exception {
return this.decryptAES(value);
}
}