vue2中使用AES实现密码加密解密

介绍

ECB

是一种基础的加密方式,密文被分割成分组长度详情的块(不足补齐),然后单独一个个加密,一个个输出组成密文。

CBC

是一种循环模式,前一个分组的密文和当前分组的明文异或操作后在加密,这样做的目的是增加破解难度(不容易主动攻击,安全性高于ECB,是SSL,IPSec的标准)

安装

npm install crypto-js

ECB模式使用

注意:key最少要有16个字符,否则解密返回结果为空

(1)在plugins文件夹下创建一个公用的aes.js文件
    import CryptoJS from "crypto-js";
        let keyStr =  "\0net.newdon@2024";

    export const encryptData = (word) => {
        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();
    }

    // 解密
    export const   decryptData = (word) => {
        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();
    }

(2)引用
<script>
//引入文件
import {encryptData , decryptData}   from '@/plugins/ecb.js'
export default {
  data() {
    return {},
  },
  mounted() {
  },
  created() {
//调用方法
     let a =  encryptData("123456789")
     console.log(a,'a');
     let b =  decryptData(a)
     console.log(b,'b');
  },
  methods: {
  },
};
</script>

CBC模式使用

(1)在plugins文件夹下创建一个公用的aes.js文件
    import CryptoJS from "crypto-js";
  let keyStr = keyStr ? keyStr : "absoietlj32fai12";
  let   ivStr = ivStr ? ivStr : "absoietlj32fai12";
  // 加密
 export const    encryptData  =(word) => {
    let key = CryptoJS.enc.Utf8.parse(keyStr);
    let iv = CryptoJS.enc.Utf8.parse(ivStr);
    let srcs = CryptoJS.enc.Utf8.parse(word);
 
    let encrypted = CryptoJS.AES.encrypt(srcs, key, {
      iv:iv,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.ZeroPadding
    });
    return encrypted.toString();
  },
  // 解密
   export  const  decryptData = (word) => {
    var key = CryptoJS.enc.Utf8.parse(keyStr);
    let iv = CryptoJS.enc.Utf8.parse(ivStr);
    var decrypt = CryptoJS.AES.decrypt(word, key, {
      iv:iv,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.ZeroPadding
    });
    return decrypt.toString(CryptoJS.enc.Utf8);
  }

(2)引用
<script>
//引入文件
import {encryptData , decryptData}   from '@/plugins/ecb.js'
export default {
  data() {
    return {},
  },
  mounted() {
  },
  created() {
//调用方法
     let a =  encryptData("123456789")
     console.log(a,'a');
     let b =  decryptData(a)
     console.log(b,'b');
  },
  methods: {
  },
};
</script>

参考资料:
1 https://ly1024.blog.csdn.net/article/details/103051386

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容