如何使用crypto-js进行加密解密 | 少将全栈
  • 欢迎访问少将全栈,学会感恩,乐于付出,珍惜缘份,成就彼此、推荐使用最新版火狐浏览器和Chrome浏览器访问本网站。
  • 吐槽,投稿,删稿,交个朋友
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏少将全栈吧

如何使用crypto-js进行加密解密

点滴 admin 2年前 (2023-06-13) 1772次浏览 已收录 扫描二维码

先引入包

npm install crypto-js

引入

import CryptoJS from "crypto-js";

直接使用import会报错

import { decrypt, encrypt } from “./utils/encrypt”;
^^^^^^

SyntaxError: Cannot use import statement outside a module

Node.js 中使用了 ES6 的 import 语法,但 Node.js 默认不支持这种语法。要解决这个问题,你可以尝试以下方法:

方法1:将文件扩展名更改为 .mjs

将你的文件扩展名从 .js 更改为 .mjs,然后使用 import 语法。例如,将 src/utils/encrypt.js 和 src/main.js 的扩展名更改为 .mjs。

方法2:在 package.json 中设置 “type”: “module”

在你的项目的 package.json 文件中,添加以下设置:

{
  “type”: “module”
}
这将允许你在整个项目中使用 ES6 的 import 语法。

#### 方法3:使用 require 代替 import

将你的 import 语句更改为使用 require 语法。例如,将 src/main.js 中的 import 语句更改为:

const CryptoJS = require("crypto-js");

 

具体代码如下:

import CryptoJS from “crypto-js”;
// 导入CryptoJS库
// 十六位十六进制数作为密钥
const KEY = CryptoJS.enc.Utf8.parse(“1212131212131111”);
// 十六位十六进制数作为密钥偏移量
const IV = CryptoJS.enc.Utf8.parse(“1212121213121213”);
/**
 * 加密方法
 * @param data 需要加密的数据
 * @returns {string} 加密后的字符串
 */
export function encrypt(data) {
    if (typeof data === “object”) {
      try {
        // 将对象转换为JSON字符串
        // eslint-disable-next-line no-param-reassign
        data = JSON.stringify(data);
      } catch (error) {
        console.log(“encrypt error:”, error);
      }
    }
    // 将数据转换为UTF8编码的十六进制字符串
    const dataHex = CryptoJS.enc.Utf8.parse(data);
    // 使用AES加密算法,加密数据
    const encrypted = CryptoJS.AES.encrypt(dataHex, KEY, {
      iv: IV,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7
    });
    // 返回加密后的字符串
    return encrypted.ciphertext.toString();
  }
/**
 * 解密方法
 * @param data 需要解密的数据
 * @returns {string} 解密后的字符串
 */
export function decrypt(data) {
    // 将加密后的数据转换为十六进制字符串
    const encryptedHexStr = CryptoJS.enc.Hex.parse(data);
    // 将十六进制字符串转换为Base64编码的字符串
    const str = CryptoJS.enc.Base64.stringify(encryptedHexStr);
    // 使用AES解密算法,解密数据
    const decrypt = CryptoJS.AES.decrypt(str, KEY, {
      iv: IV,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7
    });
    // 将解密后的数据转换为UTF8编码的字符串
    const decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
    // 返回解密后的字符串
    return decryptedStr.toString();
  }
// 测试数据
const data = “13222”
// 对数据进行加密
const encryptText = encrypt(data);
console.log(“加密”, encryptText);
// 对加密后的数据进行解密
const decryptText = decrypt(encryptText);
console.log(“解密”, decryptText);
喜欢 (1)
[🍬谢谢你请我吃糖果🍬🍬~]
分享 (0)
关于作者:
少将,关注Web全栈开发、项目管理,持续不断的学习、努力成为一个更棒的开发,做最好的自己,让世界因你不同。