1.前端 crypto-js aes 加解密
首先安装crypyo-js
1.1安装crypto-js
1.1.1使用npm安装
npm install crypto-js --save
1.1.2直接引入js
js资源地址 也可直接访问开源项目地址https://github.com/brix/crypto-js 自行打包
<script type="text/javascript" src="path-to/bower_components/crypto-js/crypto-js.js"></script>
<script type="text/javascript">
var encrypted = CryptoJS.AES(...);
var encrypted = CryptoJS.SHA256(...);
</script>
1.2加密方法
import CryptoJS from 'crypto-js/crypto-js'
// 默认的 KEY 与 iv 如果没有给
const KEY = CryptoJS.enc.Utf8.parse("密钥");
const IV = CryptoJS.enc.Utf8.parse('密钥');
/**
* AES加密 :字符串 key iv 返回base64
*/
export function Encrypt(word, keyStr, ivStr) {
let key = KEY
let iv = IV
if (keyStr) {
key = CryptoJS.enc.Utf8.parse(keyStr);
iv = CryptoJS.enc.Utf8.parse(ivStr);
}
let srcs = CryptoJS.enc.Utf8.parse(word);
var encrypted = CryptoJS.AES.encrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
// console.log("-=-=-=-", encrypted.ciphertext)
return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
}
/**
* AES 解密 :字符串 key iv 返回base64
*
*/
export function Decrypt(word, keyStr, ivStr) {
let key = KEY
let iv = IV
if (keyStr) {
key = CryptoJS.enc.Utf8.parse(keyStr);
iv = CryptoJS.enc.Utf8.parse(ivStr);
}
let base64 = CryptoJS.enc.Base64.parse(word);
let src = CryptoJS.enc.Base64.stringify(base64);
var decrypt = CryptoJS.AES.decrypt(src, key, {
iv: iv,
mode: CryptoJS.mode.CBC
});
var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
return decryptedStr.toString().replace(/[\r\n]/g,"");
}
2.后端 aes 加密解密
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
@SuppressWarnings("restriction")
public class AESUtils {
// 编码方式
public static final String charset = "UTF-8";
/**
* 加密
*
* @param source
* @param key
* @return
*/
public static String encrypt(String source, String key) {
try {
IvParameterSpec Iv = new IvParameterSpec(key.getBytes(charset));
SecretKeySpec sks = new SecretKeySpec(key.getBytes(charset), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, sks, Iv);
byte[] encryptedData = cipher.doFinal(source.getBytes(charset));
return Base64.encode(encryptedData);
} catch (Exception e) {
System.out.println("AESUtils.encrypt():" + e.toString());
return "";
}
}
/**
* 解密
*
* @param encrypted
* @param key
* @return
*/
public static String decrypt(String encrypted, String key) {
try {
byte[] byteMi = Base64.decode(encrypted);
IvParameterSpec Iv = new IvParameterSpec(key.getBytes(charset));
SecretKeySpec sks = new SecretKeySpec(key.getBytes(charset), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, sks, Iv);
byte[] decryptedData = cipher.doFinal(byteMi);
return new String(decryptedData, charset);
} catch (Exception e) {
System.out.println("AESUtils.decrypt():" + e.toString());
return "";
}
}
}