Vue AES+MD5加密 后台解密
2019-12-17 21:34
966 查看
前端VUE
vue项目中安装crypto-jsnpm install crypto-js --save-dev
CryptoJS (crypto.js) 为 JavaScript 提供了各种各样的加密算法。目前已支持的算法包括:
- MD5
- SHA-1
- SHA-256
- AES
\src\utils\
目录下新建aes.js文件
import Vue from 'vue' import CryptoJS from 'crypto-js' // AES-128-CBC偏移量 const CBCIV = "abcdefgabcdefg12"; export default { //加密 encrypt(data){ data = CryptoJS.MD5("copyright." + data + "pms@2016").toString(); let key = CryptoJS.enc.Utf8.parse(CBCIV); let secretData = CryptoJS.enc.Utf8.parse(data); let encrypted = CryptoJS.AES.encrypt( secretData, key, { iv: CryptoJS.enc.Utf8.parse(CBCIV), mode:CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 } ); return encrypted.toString(); }, //解密 decrypt(data){ let key = CryptoJS.enc.Utf8.parse(CBCIV); let decrypt = CryptoJS.AES.decrypt( data, key, { iv: CryptoJS.enc.Utf8.parse(CBCIV), mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); return CryptoJS.enc.Utf8.stringify(decrypt).toString(); } }调用
- 在需要使用加密的页面中引用
aes.js
import aes from "@/utils/aes";
/** * 密码加密 */ test() { console.log("原密码:" + "P@ssw0rd"); let encryptPassword = aes.encrypt('P@ssw0rd'); console.log("加密后:" + encryptPassword); let decryptPassword = aes.decrypt(encryptPassword); console.log("解密后:" + decryptPassword); },
后台Spring Boot
Aes.javaimport javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64; public class Aes { //密钥 (需要前端和后端保持一致) private static final String KEY = "abcdefgabcdefg12"; public static void main(String[] args) throws Exception { String encryptPassword = "CfMIyhzijEobTbtG9W24d55CwINGrmIj70WqrtPVKmwpgm63Ks7KoKUUuFN5uZch"; System.out.println("解密前:" + encryptPassword); String decryptPassword = Decrypt(encryptPassword, KEY); System.out.println("解密后:" + decryptPassword); } /** * 加密 * @param sSrc * @param sKey * @return * @throws Exception */ public static String Encrypt(String sSrc, String sKey) throws Exception { if (sKey == null) { System.out.print("Key为空null"); return null; } // 判断Key是否为16位 if (sKey.length() != 16) { System.out.print("Key长度不是16位"); return null; } byte[] raw = sKey.getBytes("utf-8"); SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");//"算法/模式/补码方式" IvParameterSpec iv = new IvParameterSpec(sKey.getBytes());//使用CBC模式,需要一个向量iv,可增加加密算法的强度 cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv); byte[] encrypted = cipher.doFinal(sSrc.getBytes()); return new Base64().encodeToString(encrypted);//此处使用BASE64做转码功能,同时能起到2次加密的作用。 } /** * 解密 * @param sSrc * @param sKey * @return * @throws Exception */ public static String Decrypt(String sSrc, String sKey) throws Exception { try { // 判断Key是否正确 if (sKey == null) { System.out.print("Key为空null"); return null; } // 判断Key是否为16位 if (sKey.length() != 16) { System.out.print("Key长度不是16位"); return null; } byte[] raw = sKey.getBytes("utf-8"); SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); IvParameterSpec iv = new IvParameterSpec(sKey.getBytes()); cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv); byte[] encrypted1 = new Base64().decode(sSrc);//先用base64解密 try { byte[] original = cipher.doFinal(encrypted1); String originalString = new String(original,"utf-8"); return originalString; } catch (Exception e) { System.out.println(e.toString()); return null; } } catch (Exception ex) { System.out.println(ex.toString()); return null; } } }
- 经常用到的加密场景大多就是登录密码加密了,在这里就不做具体的登录传输密码了,将前台
MD5+AES
加密后的密码拿来解密,模拟接收到登录密码后进行验证,从代码可以看出无论是前后台的解密都只是AES
,在这里我们并不进行MD5
解密,因为MD5也只是种算法,似乎也没这个必要,数据库存储AES
解密后的密码就可以了,运行main
方法可以看到解密后的密码与前端解密一致,至此,将解密后的密码与数据库存储的AES
解密后的密码拿来比对就行
end.
相关文章推荐
- 前台加密,后台解密功能的实现
- Java后台,安卓,iOS--3des解密后得到密文不同,解决方法
- 3DES加密,java后台,安卓,iOS三端加密解密
- ios客户端RSA公钥加密 .net后台私钥解密解决方案(基于Openssl)
- jquery对中文进行base64加密,后台用java进行base64解密
- RSA前台加密后台解密
- QQ18年,解密8亿月活的QQ后台服务接口隔离技术
- URL请求对参数前端JS加密,后台JAVA解密
- RSA基于Java Web的前台公钥加密后台私钥解密
- AES加密解密——AES在JavaWeb项目中前台JS加密,后台Java解密的使用
- Aes加密(Android与Java后台可以正常加解密 )
- Des前台加密、后台解密Demo
- 关于Des加密(Android与ios 与后台java服务器之间的加密解密
- java实用工具(用3des进行ios加密后台解密)
- rsa实现js前台加密java后台解密
- JAVA WEB实现前端加密后台解密
- JS实现BASE64加密解密-后台加密前台解密案例分析
- ios下使用RSA算法加密与java后台解密配合demo
- JS前台加密,java后台解密实现