欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

AES加密vue 实际应用

程序员文章站 2022-06-15 17:46:40
...

需求:登录页面需要做登录密码加密

首先需要后端确定和提供如下内容
AES加密vue 实际应用
AEC 加密模式常用有CBC / ECB 下面分别对此做下说明

1、安装:npm install crypto-js --save

AES加密vue 实际应用

2、引入: import CryptoJs from ‘crypto-js’;

AES加密vue 实际应用
AES加密vue 实际应用

3、使用

ECB/CBC模式

		// 使用,调用方法
		let password = 'aa123456' // 需要加密的数据
       	let crypted = this.encryptByAES(password) // 调用加密方法
       	console.log('base64密文:', crypted) // base64密文: 
     	let decrypt = this.decryptByAES(crypted) //调用解密方法
       	console.log('解密后的数据:', decrypt) // 解密后的数据: aa123456
      	vm.submitLogin(crypted);//把加密后的密码传给后台调登录接口
		//在methods: {}里面写方法
     	// An highlighted block
		//   加密,调用该方法时,传入的data必须是字符串类型,
        //   故,如果要加密对象等类型,需要先用JSON.stringify()将其字符串化再传入
        encryptByAES (data) {
          let keyStr = 'Kw9d$wx[NNL^$9qd' // 16位,**字符串
          let iva = 'FRJ9op4MKgTvfBEA';
          let key = CryptoJs.enc.Utf8.parse(keyStr); // 将字符串的转为WordArray类型
          let mydata = CryptoJs.enc.Utf8.parse(data);
          let iv = CryptoJs.enc.Utf8.parse(iva);
          //加密模式为CBC,补码方式为PKCS5Padding(也就是PKCS7)
          let udata = CryptoJs.AES.encrypt(mydata, key, {
            iv: iv,//如果用ECB,指定**偏移量iv去掉即可
            mode: CryptoJs.mode.CBC, // 加密模式,CBC模式;
            padding: CryptoJs.pad.Pkcs7 // 填充方式
          })
          let encrypted = udata.toString()//  返回的是base64的密文,是字符串类型
          return encrypted
        },
        // 解密, 调用该方法时,传入的data是base64的密文
        decryptByAES (data) {
          let keyStr = 'Kw9d$wx[NNL^$9qd'
          let iva = 'FRJ9op4MKgTvfBEA';
          let key = CryptoJs.enc.Utf8.parse(keyStr);
          let iv = CryptoJs.enc.Utf8.parse(iva);
          let udata = CryptoJs.AES.decrypt(data, key, {
            iv: iv,
            mode: CryptoJs.mode.CBC,
            padding: CryptoJs.pad.Pkcs7
          })
          // 返回的是加密之前的原始数据,是字符串类型
          let decrypted = udata.toString(CryptoJs.enc.Utf8)
          return decrypted
        }