vue实现CBC加密/解密

我们现在终端引入输入

javascript 复制代码
npm install crypto-js

引入依赖 突然发现 crypto-js 确实是一个加密的神器

然后 我们直接在App.vue组件这样写吧

javascript 复制代码
<template>
  <div>
    <input v-model="plainText" placeholder="输入明文" />
    <button @click="encrypt">加密</button>
    <button @click="decrypt">解密</button>
    <p>密文: {{ cipherText }}</p>
    <p>解密后的明文: {{ decryptedText }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      plainText: '',
      cipherText: '',
      decryptedText: '',
      key: '0123456789abcdef', // 密钥
      iv: 'abcdef0123456789' // 初始向量
    };
  },
  methods: {
    encrypt() {
      // CBC加密
      const cipher = this.$CryptoJS.AES.encrypt(this.plainText, this.$CryptoJS.enc.Hex.parse(this.key), {
        iv: this.$CryptoJS.enc.Hex.parse(this.iv)
      }).ciphertext;
      this.cipherText = this.$CryptoJS.enc.Hex.stringify(cipher);
    },
    decrypt() {
      // CBC解密
      const cipher = this.$CryptoJS.enc.Hex.parse(this.cipherText);
      const decrypted = this.$CryptoJS.AES.decrypt({ ciphertext: cipher }, this.$CryptoJS.enc.Hex.parse(this.key), {
        iv: this.$CryptoJS.enc.Hex.parse(this.iv)
      });
      this.decryptedText = decrypted.toString(this.$CryptoJS.enc.Utf8);
    }
  },
  mounted() {
    // 在Vue实例中引入CryptoJS库
    this.$CryptoJS = require('crypto-js');
  }
};
</script>

这里 我并没有用npm 直接导入 而是用了require将crypto-js对象直接赋值给了原型链上的 $CryptoJS

这样方便整体使用

data中 plainText 是用户输入的 对应我们要加密的内容

然后 加密完之后 会赋值给 cipherText

最后解密通过 cipherText 解密 然后内容赋值给decryptedText

而 key 秘钥 和 iv初始化向量 大家则是要和对接自己的后端 或者其他人沟通清楚 因为这是个加密规则 如果那你数据的人规则跟你不一样 提示解密不出来的

加密解密的方法都是 crypto-js 官方提供的

大家自己看一下直接复制改一改拿取用就好了

相关推荐
777VG3 小时前
PostgreSQL +martin将多张表输出成一个 MVT
前端·数据库·postgresql
mayaairi3 小时前
JS循环语句深度解析:嵌套for、while与do...while
开发语言·前端·javascript
To_OC3 小时前
啃完流式输出:从一个卡顿的 LLM 接口开始,我搞懂了数据流到底怎么 “流”
前端·javascript·llm
阳光是sunny4 小时前
LangGraph实战教程:defer延迟节点——让收尾工作自动排到最后
前端·人工智能·后端
kyriewen4 小时前
我用了三周Claude Code Skills——总结出5条铁律,第3条最反直觉
前端·ai编程·claude
阳光是sunny4 小时前
LangGraph实战教程:控制流详解
前端·人工智能·后端
格尔曼Noah5 小时前
Safari浏览器中如何只允许指定网站下载
前端·safari
用户059540174466 小时前
用了3年Redis,才发现我一直没搞懂缓存一致性测试
前端·css
swipe6 小时前
07|(前端转后全栈)为什么后端也要缓存?从前端缓存思维理解 Redis
前端·后端·全栈
IT小盘6 小时前
05-企业项目统一接入多个大模型-适配器模式实战
前端·人工智能·适配器模式