package com.pasenger.aes;
import lombok.Data;
import org.apache.commons.codec.binary.Base64;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
/**
* AES加解密服务
* <br>
*
* @author pasenger
* @date 2019-01-22
*/
@Service
@Data
public class EncryptService implements InitializingBean {
/**
* 加密key
*/
@Value("${encrypt.key}")
private String key;
/**
* 加密iv
*/
@Value("${encrypt.iv}")
private String iv;
/**
* 加密Cipher
*/
private Cipher encryptCipher;
/**
* 解密Cipher
*/
private Cipher decryptCipher;
/**
* encrypt
*
* @param content
* @return
* @throws Exception
*/
public String encrypt(String content) throws Exception {
byte[] result = encryptCipher.doFinal(content.getBytes());
return Base64.encodeBase64String(result);
}
/**
* decrpty
*
* @param content
* @return
* @throws Exception
*/
public String decrypt(String content) throws Exception {
byte[] c = Base64.decodeBase64(content.getBytes());
byte[] result = decryptCipher.doFinal(c);
return new String(result);
}
@Override
public void afterPropertiesSet() throws Exception {
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
decryptCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
decryptCipher.init(Cipher.DECRYPT_MODE, secretKeySpec, new IvParameterSpec(Base64.decodeBase64(iv.getBytes())));
encryptCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
encryptCipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, new IvParameterSpec(Base64.decodeBase64(iv.getBytes())));
}
}
转载于:https://my.oschina.net/pasenger/blog/3004716