数据加密与缓存

MuYan2021-09-15JSJS
npm i -S crypto-js js-cookie
  • 使用 AES 加密,其他加密方式自行更改
// encryption.js
import CryptoJS from "crypto-js";

const secretKey = "secret";

export const encrypt = (data) => {
  return CryptoJS.AES.encrypt(JSON.stringify(data), secretKey).toString();
};

export const decrypt = (ciphertext) => {
  const bytes = CryptoJS.AES.decrypt(ciphertext, secretKey);
  return JSON.parse(bytes.toString(CryptoJS.enc.Utf8));
};
  • 定义 cookie.js ,进行加密后缓存操作。
// cookie.js
import Cookies from "js-cookie";
import { encrypt, decrypt } from "./encryption.js";

const getSecretCookie = (name = "", field) => {
  const info = Cookies.get(name, { path: "" });
  if (!info) return null;
  try {
    if (info && decrypt(info)) {
      return field ? decrypt(info)[field] : decrypt(info);
    }
  } catch (e) {
    console.log("error===>", e);
  }
};

const setSecretCookie = (k, v) => {
  Cookies.set(k, encrypt(v), { path: "" });
};

export { getSecretCookie, setSecretCookie };

export const TOKEN_KEY = "token";

export function getToken() {
  return Cookies.get(TOKEN_KEY, { path: "" });
}

export function setToken(token) {
  return Cookies.set(TOKEN_KEY, token, { path: "" });
}

export function removeToken() {
  return Cookies.remove(TOKEN_KEY, { path: "" });
}

export function setCookie(k, v) {
  return setSecretCookie(k, v);
}

export function getCookie(k) {
  return getSecretCookie(k);
}

export function removeCookie(k) {
  return Cookies.remove(k, { path: "" });
}

export function removeAllCookies() {
  Object.keys(Cookies.get()).forEach((key) =>
    Cookies.remove(key, { path: "" })
  );
}
  • 使用方法
import { setCookie, getCookie } from "./cookie.js";
const name = "demo";
setCookie(name, {
  name: "demo",
  sex: "N",
});
// 获取所有信息
getCookie(name);

// 获取对象内的指定属性值
getCookie(name, "name");

住:如是小程序使用该加密方式,crypto-js 建议为 3.3.0 版本,并自行重定义 Cookie 相关信息。

上次更新 2026/6/23 11:49:15
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.8