1、nodejs加解密工具類:node
/** * AES util */ const CryptoJS = require('crypto-js') export const AES = { //加密 encode: (params) => { let { data, param, key } = params let result = JSON.parse(JSON.stringify(data)) param.forEach(ele => { let data = result[ele] key = CryptoJS.enc.Utf8.parse(key) let iv = key let encrypted = CryptoJS.AES.encrypt(data,key,{ iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding }) result[ele] = encrypted.toString(); }) return result }, decode: (params) => { let { data, param, key } = params let result = JSON.parse(JSON.stringify(data)) param.forEach(ele => { let data = result[ele] key = CryptoJS.enc.Utf8.parse(key) let iv = key let decrypt = CryptoJS.AES.decrypt(data, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding }); let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8); result[ele] = decryptedStr.toString(); }) return result } }
- 使用方法:
(1)加密:
let user = AES.encode({ data: {//要加密的數據 username:'123456', password:'123456' }, key: '1234567887654321',//加密的key param: ['password']//要加密哪些屬性 })
(2)解密:工具
let user = AES.decode({ data: {//要解密的數據 username:'123456', password:'lBTqrKS0kZixOFXeZ0HRng==' }, key: '1234567887654321', param: ['user']//要解密哪些屬性 })
2、Java解密:ui
private static String decryptAES(String data, String pass) throws Exception { Cipher cipher = Cipher.getInstance("AES/CBC/NOPadding"); SecretKeySpec keyspec = new SecretKeySpec(pass.getBytes(), KEY_ALGORITHM); IvParameterSpec ivspec = new IvParameterSpec(pass.getBytes()); cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec); byte[] result=cipher.doFinal(Base64.decode(data.getBytes(CharsetUtil.UTF_8))); return new String(result, CharsetUtil.UTF_8); }
- 使用方法:
try { String s = decryptAES("lBTqrKS0kZixOFXeZ0HRng==", "1234567887654321"); System.out.println(s); } catch (Exception e) { e.printStackTrace(); }
3、Java加密:加密
private static String encryptAES(String data,String pass) throws Exception { byte[] raw = pass.getBytes("utf-8"); SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); IvParameterSpec iv = new IvParameterSpec(pass.getBytes()); cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv); byte[] encrypted = cipher.doFinal(data.getBytes()); return new Base64().encode(encrypted); }
- 使用方法:
String e=encryptAES("123456","1234567887654321"); System.out.println(e);
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">code