![ffcf1c45c7b89a0ec9b83b545f74c94a.png](https://img-blog.csdnimg.cn/img_convert/ffcf1c45c7b89a0ec9b83b545f74c94a.png)
文章回顾:
- Spring Security(一):整合JWT实现登录功能
- Spring Security(二):获取用户权限菜单树
- Spring Security(三):与Vue.js整合
- Spring Security(四):更新前端路由获取方式
- Spring Security(五):前后端权限控制详解
- Spring Security(六):前端菜单,角色权限页面的搭建
- Spring Security(七):自定义拦截器实现对权限异常的处理
之前系统中使用的都是没有对密码进行加密,今天简单说下如何在Vue
中对密码进行加密以及在java
后端进行解密,进而使用Spring Security
对密码进行匹配进而判断密码是否正确。
导入依赖
npm install crypto-js
建议新建一个工具类srcutilsencoder.js
这里需要我们自定义两个参数:key
,iv
在AES
算法中key
是密钥的意思。iv
是初始向量,不同的IV
加密后的字符串是不同的,加密和解密需要相同的 IV
。所以前后端分离的话,你自定义的iv
就要一致了,否则加密和解密的不一致麻烦就大了…
创建两个方法,一个是加密的,一个是解密的。
import CryptoJS from 'crypto-js/crypto-js'
// 默认的 KEY 与 iv
const KEY = CryptoJS.enc.Hex.parse("3132333435363738393041424344454631323334353637383930414243444566");
const IV = CryptoJS.enc.Hex.parse('30313233343536373839414243444546');
/**
* AES加密
*/
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 encrypted.ciphertext.toString()
}
/**
* AES 解密
*
*/
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);