123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import CryptoJS from 'crypto-js'
- const MODE_CBC = "CBC"
- const PADDING_MODE = "PKCS7Padding"
- const DEFAULT_IV = "@ZiyiTechProduct"
- const AES_DEFAULT_KEY = "ZiyiTechPro#2025"
- export function encryptAESCBC(data) {
- const key = CryptoJS.enc.Utf8.parse(AES_DEFAULT_KEY)
- const iv = CryptoJS.enc.Utf8.parse(DEFAULT_IV)
-
- const plaintext = typeof data === 'object'
- ? JSON.stringify(data)
- : String(data)
-
- const encrypted = CryptoJS.AES.encrypt(
- plaintext,
- key,
- {
- iv: iv,
- mode: CryptoJS.mode.CBC,
- padding: CryptoJS.pad.Pkcs7
- }
- ).ciphertext.toString(CryptoJS.enc.Hex)
- return encrypted
- }
- export function decryptAESCBC(encryptedHex) {
- const key = CryptoJS.enc.Utf8.parse(AES_DEFAULT_KEY)
- const iv = CryptoJS.enc.Utf8.parse(DEFAULT_IV)
-
- const ciphertext = CryptoJS.enc.Hex.parse(encryptedHex)
- const encryptedData = { ciphertext: ciphertext }
-
- const decrypted = CryptoJS.AES.decrypt(
- encryptedData,
- key,
- {
- iv: iv,
- mode: CryptoJS.mode.CBC,
- padding: CryptoJS.pad.Pkcs7
- }
- )
-
- const decryptedStr = decrypted.toString(CryptoJS.enc.Utf8)
- try {
- return JSON.parse(decryptedStr)
- } catch {
- return decryptedStr
- }
- }
|