兰宝车间质量管理系统-前端
LiuHao
2023-07-10 d160c3a61cc38359de4794b208884bba430f0a1c
src/utils/crypto.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
import CryptoJS from 'crypto-js';
/**
 * éšæœºç”Ÿæˆ32位的字符串
 * @returns {string}
 */
const generateRandomString = () => {
  const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
  let result = '';
  const charactersLength = characters.length;
  for (let i = 0; i < 32; i++) {
    result += characters.charAt(Math.floor(Math.random() * charactersLength));
  }
  return result;
};
/**
 * éšæœºç”Ÿæˆaes å¯†é’¥
 * @returns {string}
 */
export const generateAesKey = () => {
  return CryptoJS.enc.Utf8.parse(generateRandomString());
};
/**
 * åР坆base64
 * @returns {string}
 */
export const encryptBase64 = (str: CryptoJS.lib.WordArray) => {
  return CryptoJS.enc.Base64.stringify(str);
};
/**
 * ä½¿ç”¨å¯†é’¥å¯¹æ•°æ®è¿›è¡ŒåР坆
 * @param message
 * @param aesKey
 * @returns {string}
 */
export const encryptWithAes = (message: string, aesKey: CryptoJS.lib.WordArray) => {
  const encrypted = CryptoJS.AES.encrypt(message, aesKey, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
  });
  return encrypted.toString();
};