| 12345678910111213141516171819202122232425262728293031323334353637 |
- import CryptoJS from 'crypto-js'
- import JSEncrypt from 'jsencrypt'
- const publicKey = atob(import.meta.env.VITE_RSA_PUBLIC_KEY)
- // 生成随机 AES 密钥
- export function generateAesKey(length = 16) {
- const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
- let key = ''
- for (let i = 0; i < length; i++) {
- key += chars.charAt(Math.floor(Math.random() * chars.length))
- }
- return key
- }
- // AES 加密
- export function aesEncrypt(data, key) {
- return CryptoJS.AES.encrypt(JSON.stringify(data), CryptoJS.enc.Utf8.parse(key), {
- mode: CryptoJS.mode.ECB,
- padding: CryptoJS.pad.Pkcs7
- }).toString()
- }
- export function aesDecrypt(encryptedData, aesKey) {
- const bytes = CryptoJS.AES.decrypt(encryptedData, CryptoJS.enc.Utf8.parse(aesKey), {
- mode: CryptoJS.mode.ECB,
- padding: CryptoJS.pad.Pkcs7
- })
- return JSON.parse(bytes.toString(CryptoJS.enc.Utf8))
- }
- // RSA 加密 AES 密钥
- export function rsaEncryptKey(aesKey) {
- const encryptor = new JSEncrypt()
- encryptor.setPublicKey(publicKey)
- return encryptor.encrypt(aesKey)
- }
|