记录一下cryptoJs使用

使用场景:可以加密localStorage,这样数据就不会裸奔了
// 安装crypto-js
npm install crypto-js
// 引入 crypto-js 有以下两种方式
import CryptoJS from "crypto-js";
// 或者
const CryptoJS = require("crypto-js");
设置密钥和密钥偏移量
// 可以采用将一个私钥经 MD5 加密生成16位密钥获得
// 十六位十六进制数作为密钥
const SECRET_KEY = CryptoJS.enc.Utf8.parse("3333e6e143439161");
// 十六位十六进制数作为密钥偏移量
const SECRET_IV = CryptoJS.enc.Utf8.parse("e3bbe7e3ba84431a");
加密方法封装
/**
 * 加密方法
 * @param data
 * @returns {string}
 */
export function encrypt(data) {
  if (typeof data === "object") {
    try {
      data = JSON.stringify(data);
    } catch (error) {
      console.log("encrypt error:", error);
    }
  }
  const dataHex = CryptoJS.enc.Utf8.parse(data);
  const encrypted = CryptoJS.AES.encrypt(dataHex, SECRET_KEY, {
    iv: SECRET_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);
  const str = CryptoJS.enc.Base64.stringify(encryptedHexStr);
  const decrypt = CryptoJS.AES.decrypt(str, SECRET_KEY, {
    iv: SECRET_IV,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  });
  const decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
  return decryptedStr.toString();
}
使用方法
import { encrypt, decrypt } from '@/utils/encrypt';
实战
import { encrypt, decrypt } from './CryptoJS';
class FnStorage {
    set(key: string, obj) {
        // 这个是base64加密方法
        // localStorage.setItem(key, window.btoa(window.encodeURIComponent(JSON.stringify(obj))));
        localStorage.setItem(key, encrypt(JSON.stringify(obj)));
    }
    get(key: string) {
        if (localStorage.getItem(key) === null) {
            return '';
        }
        // 这个是base64解密方法
        // return JSON.parse(decodeURIComponent(window.atob(localStorage.getItem(key))));
        return JSON.parse(decrypt(localStorage.getItem(key)));
    }
    remove(key: string) {
        localStorage.removeItem(key);
    }
    clear() {
        localStorage.clear();
    }
};
export default FnStorage;
CryptoJS 是一个 JavaScript 库,用于提供各种加密和解密算法的实现。它支持常见的对称加密算法(如 AES、DES、Triple DES)和哈希算法(如 MD5、SHA-1、SHA-256),以及其他一些加密相关的功能。 要使用 CryptoJS,首先需要在你的 HTML 页面中引入 CryptoJS 的脚本文件。你可以从官方网站 (https://cryptojs.gitbook.io/docs/) 下载最新版的 CryptoJS,或者通过 CDN 引入,如下所示: ```html <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.min.js"></script> ``` 一旦脚本文件被引入,你就可以在你的 JavaScript 代码中使用 CryptoJS 提供的各种功能了。下面是一个简单的示例,演示如何使用 CryptoJS 进行 AES 加密和解密: ```javascript // 加密 var message = "Hello, World!"; var key = CryptoJS.enc.Utf8.parse('0123456789012345'); var iv = CryptoJS.enc.Utf8.parse('0123456789012345'); var encrypted = CryptoJS.AES.encrypt(message, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); var ciphertext = encrypted.ciphertext.toString(CryptoJS.enc.Base64); console.log(ciphertext); // 解密 var decrypted = CryptoJS.AES.decrypt({ ciphertext: CryptoJS.enc.Base64.parse(ciphertext) }, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); var plaintext = decrypted.toString(CryptoJS.enc.Utf8); console.log(plaintext); ``` 在上面的示例中,我们使用 AES 加密算法对消息进行加密,并使用相同的密钥和初始向量进行解密。注意,密钥和初始向量需要使用 `CryptoJS.enc.Utf8.parse` 方法进行转换。 这只是 CryptoJS 的一个简单用法示例,你可以根据需要选择其他加密算法和功能。详细的 API 文档可以在 CryptoJS 的官方网站上找到。希望这能帮助到你!如果有更多问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值