1.前端导入crypto-js.js
aesEncrypt: function (data, key, iv) {
var key = CryptoJS.enc.Utf8.parse(key);
var iv = CryptoJS.enc.Utf8.parse(iv);
var encrypted =CryptoJS.AES.encrypt(data,key,{
iv:iv,
mode:CryptoJS.mode.CBC,
padding:CryptoJS.pad.Pkcs7
});
//返回的是base64格式的密文
return encrypted.toString();
},
2.后端解密
import org.apache.commons.codec.binary.Base64;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.Security;
/**
* @Description:
* @ClassName AESUtil
* @date:
* @Author: hyc
*/
public class AESUtil {
/**
* 密钥算法
*/
private static final String KEY_ALGORITHM = "AES";
/**
* 加密/解密算法 / 工作模式 / 填充方式
* Java 6支持PKCS5Padding填充方式
* Bouncy Castle支持PKCS7Padding填充方式
* "AES/CBC/PKCS5Padding"
* "AES/CBC/PKCS7Padding"
*/
private static final String CIPHER_ALGORITHM = "AES/CBC/PKCS5Padding";
/**
* 偏移量=
*/
private final static String ivParameter = "ABCDEF1234123412";
/**
* 密钥
*/
private static String mkey = "1234123412ABCDEF";
/**
* 编码格式
*/
public static final String ENCODING = "utf-8";
static {
//如果是PKCS7Padding填充方式,则必须加上下面这行
Security.addProvider(new BouncyCastleProvider());
}
public static String encrypt(String content){
try {
SecretKeySpec key = new SecretKeySpec(mkey.getBytes(), KEY_ALGORITHM);
Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE,key, new IvParameterSpec(ivParameter.getBytes()));
byte[] result = cipher.doFinal(decryptBASE64(content));
return byteToString(result);
} catch (Exception e) {
System.out.println("exception:"+e.toString());
}
return null;
}
public static String decrypt(String content){
try {
SecretKeySpec key = new SecretKeySpec(mkey.getBytes(), KEY_ALGORITHM);
Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
cipher.init(Cipher.DECRYPT_MODE,key, new IvParameterSpec(ivParameter.getBytes()));
byte[] result = cipher.doFinal(decryptBASE64(content));
return byteToString(result);
} catch (Exception e) {
System.out.println("exception:"+e.toString());
}
return null;
}
public static byte[] decryptBASE64(String key) throws Exception {
return Base64.decodeBase64(key.getBytes());
}
public static String encryptBASE64(byte[] key) throws Exception {
return new String(Base64.encodeBase64(key));
}
public static String byteToString(byte[] byte1){
return new String(byte1);
}
public static void main(String[] args) throws Exception {
String sfz="11111111";
String enString = AESUtil.encrypt(sfz);
System.out.println("加密后的数据:" + enString);
String decrypted = AESUtil.decrypt(enString);
System.out.println("解密后的数据:" + decrypted);
}
}
一次过