Narración:
- Hay dos esquemas de cifrado en la interfaz, uno es un algoritmo de cifrado reversible y el otro es un algoritmo de cifrado irreversible.
DES
y AES
es reversible, por lo que el cifrado y descifrado se pueden realizar mediante la clave,
MD5
Es irreversible y solo se puede determinar si el texto sin formato es el mismo cifrándolo nuevamente.
1. Cifrado frontal MD5 (irreversible)
npm install --save js-md5
- Introducido
main.js
y montado Vue的prototype
en
import md5 from 'js-md5';
Vue.prototype.$md5 = md5;
- Cifrar al enviar la solicitud
this.login({
username: that.formLogin.username,
password: that.$md5(that.formLogin.password),
captcha: that.formLogin.captcha,
captchaKey: that.captchaKey
})
2. Cifrado y descifrado AES/DES
- Instalar paquetes de dependencia
npm install crypto-js
- Encapsular métodos públicos de cifrado y descifrado
import CryptoJS from 'crypto-js';
export const generatekey=(num)=> {
let library = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
let key = "";
for (var i = 0; i < num; i++) {
let randomPoz = Math.floor(Math.random() * library.length);
key += library.substring(randomPoz, randomPoz + 1);
}
return key;
}
export const encrypt=(word, keyStr)=> {
keyStr = keyStr ? keyStr : 'XXXXXXXXXXXXX';
var key = CryptoJS.enc.Utf8.parse(keyStr);
var srcs = CryptoJS.enc.Utf8.parse(word);
var encrypted = CryptoJS.AES.encrypt(srcs, key, {
mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
return encrypted.toString();
}
export const listdecrypt=(word, keyStr)=>{
keyStr = keyStr ? keyStr : 'XXXXXXXXXXXXX';
var key = CryptoJS.enc.Utf8.parse(keyStr);
var decrypt = CryptoJS.AES.decrypt(word, key, {
mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
return CryptoJS.enc.Utf8.stringify(decrypt).toString();
}
- Utilizado en archivos Vue
addAES() {
const aseKey = "12345678";
const message = "[email protected]";
this.password = encrypt(message,aseKey);
console.log(this.password);
},
addAESJIEmi() {
const aseKey = "12345678";
const data = listdecrypt(this.password,aseKey);
console.log(data);
},