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

AES 加解密算法

程序员文章站 2024-03-14 18:53:17
...

最近的vue项目有用到对密码进行加解密操作
MD5不可逆
网上看了一些别的算法,最后确认使用AES算法进行加解密

// 安装crypto-js
npm install crypto-js --save

创建CryptoJS.js文件封装加解密方法,内容如下

//封装加解密方法
import CryptoJS from "crypto-js";
export default {
  // 加密
  encrypt(word, keyStr) {
    keyStr = keyStr ? keyStr : "xxxxxxxxxxxxxxxx";
    let key = CryptoJS.enc.Utf8.parse(keyStr);
    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();
  },
  // 解密
  decrypt(word, keyStr) {
    keyStr = keyStr ? keyStr : "xxxxxxxxxxxxxxxx";
    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();
  }
};

第一个参数word是待加密或者解密的字符串;
第二个参数keyStr是aes加密需要用到的16位字符串的key,keyStr 的长度要不小于14位,否则解密时会显示空白----这个keyStr可自定义,由前端和后端共同约定好即可;
如果想对一个js对象加密,需要先把该对象转成json字符串

在需要的页面引入该js文件

import CryptoJS from '../assets/js/CryptoJS';
// 加密值根据keyStr的变化而变化
// 加密--888888
let oldEncryPwd = CryptoJS.encrypt(this.pwdForm.oldPwd);      // Fof8zAtAP9OccD4qVBTU32==
// 解密
let dePwd = CryptoJS.decrypt('Fof8zAtAP9OccD4qVBTU3g==');      // 888888