vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > vue使用crypto-js实现加密解密

vue项目中使用crypto-js实现加密解密方式

作者:A_ugust__

这篇文章主要介绍了vue项目中使用crypto-js实现加密解密方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

vue使用crypto-js实现加密解密

注意:

crypto-js加密后可自行选择是否转为base64,也需要后端配合加解密方法

npm install crypto-js

uitls新建文件夹screate.js

const CryptoJS = require('crypto-js');  //引用AES源码js    
const key = CryptoJS.enc.Utf8.parse("1234123412ABCDEF");  //十六位十六进制数作为密钥
// const iv = CryptoJS.enc.Utf8.parse('ABCDEF1234123412');   //十六位十六进制数作为密钥偏移量 可用可不用

//加密方法
export function Encrypt(word:any){
  // 法一:加密后转化为base64
  // let srcs = CryptoJS.enc.Utf8.parse(word);
  // let encrypted = CryptoJS.AES.encrypt(srcs, key, {mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
  // return encrypted.ciphertext.toString();

  // 法二:不转
  let srcs = CryptoJS.enc.Utf8.parse(word);
  let encrypted = CryptoJS.AES.encrypt(srcs, key, {mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
  return encrypted.toString();
}

//解密方法
export function Decrypt(word:any){
  // 法一:对应解密
  // let encryptedHexStr = CryptoJS.enc.Hex.parse(word);
  // let srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
  // let decrypt = CryptoJS.AES.decrypt(srcs, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
  // let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
  // return decryptedStr.toString(); 

  // 法二:
  var decrypt = CryptoJS.AES.decrypt(word, key, {mode:CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7});
  return CryptoJS.enc.Utf8.stringify(decrypt).toString();
}

使用

参数是对象的话,加密需要 JSON.stringify(),解密需要JSON.parse()

getData(){
  letparams = {
    "appId": '0000',
    "bizData": {
      "appName": '测试名称',
      "authMode": "0x1113"
    },
    "bizType": 1000
  }
  var aa = Encrypt(JSON.stringify(params))
  console.log(aa, '加密')
  searchHandle('/xxx/xxx/xxx', aa).then(res=>{
    console.log('接口返回',res.data)
    var dd = JSON.parse(Decrypt(aa))
    console.log(dd, '解密')
    if(res.data.code === 0){}
  })
}


使用crypto-js时报错TypeError: Object(...) is not a function

控制台报错

如下:

原因

引入Encrypt时方式错误,少加了{}

正确形式:

import { Encrypt } from "../plugins/encoder";

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文