前端加密解密crypto-js

1,424 阅读1分钟

预览效果

安装 npm install crypto-js -- 并新建加密方法 crypto-js

import cryptoJs from 'crypto-js'
let keywords = 'yourKey';//加密钥匙

// 加密函數
export function encryption(word) {
	let key = cryptoJs.enc.Hex.parse(keywords);
	let enc = '';
	if (typeof word === 'string') {
		enc = cryptoJs.AES.encrypt(word, key, {
			// iv: iv
			mode: cryptoJs.mode.ECB,
			padding: cryptoJs.pad.Pkcs7
		})
	} else if (typeof word === 'object') {
		let data = JSON.stringify(word);
		enc = cryptoJs.AES.encrypt(data, key, {
			// iv: iv
			mode: cryptoJs.mode.ECB,
			padding: cryptoJs.pad.Pkcs7
		})
	}
	let encResult = enc.ciphertext.toString();
	return encResult;
}

// 解密函數
export function decrypt(word) {
	let key = cryptoJs.enc.Hex.parse(keywords);
	let dec = cryptoJs.AES.decrypt(cryptoJs.format.Hex.parse(word), key, {
		// vi: vi
		mode: cryptoJs.mode.ECB,
		padding: cryptoJs.pad.Pkcs7
	})
	let decData = cryptoJs.enc.Utf8.stringify(dec);
	return decData;
}

引入加密文件

import {encryption,decrypt} from '../../tools/crypto.js'

加密

const data = res.data.data;
const token = data.access_token;
localStorage.setItem("token", token);
localStorage.setItem("userInfo", JSON.stringify(data.userInfo));
//是否记住账号密码
if(this.rememberUserNamePassword){
	//加密账号密码
	let encryptionUserName = encryption(this.form.username);//加密账号
	let encryptionPassword = encryption(this.form.password);//加密密码
	localStorage.setItem("rememberLoginInfo", JSON.stringify({
		username: encryptionUserName,
		password: encryptionPassword
	}));
}else{
	localStorage.removeItem("rememberLoginInfo");
}

解密

created() {
	//是否有记住密码
	if(localStorage.rememberLoginInfo){
		let rememberLoginInfo = JSON.parse(localStorage.rememberLoginInfo);
		//解密
		this.form.username = decrypt(rememberLoginInfo.username);
		this.form.password = decrypt(rememberLoginInfo.password);
		this.rememberUserNamePassword = true;
	}
}