forked from drone/command-center-dashboard

罗广辉
2025-04-21 2800fa4f32f3900509cb4d6eefaf2bfaf54efdd7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import CryptoJS from 'crypto-js'
 
export default class crypto {
    /**
     * token加密key 使用@org.springblade.test.CryptoKeyGenerator获取,需和后端配置保持一致
     * @type {string}
     */
    static cryptoKey = '请配置cryptoKey'
    /**
     * 报文加密key 使用@org.springblade.test.CryptoKeyGenerator获取,需和后端配置保持一致
     * @type {string}
     */
    static aesKey = '请配置aesKey'
    /**
     * 报文加密key 使用@org.springblade.test.CryptoKeyGenerator获取,需和后端配置保持一致
     * @type {string}
     */
    static desKey = '请配置desKey'
 
    /**
     * aes 加密方法
     * @param data
     * @returns {*}
     */
    static encrypt(data) {
        return this.encryptAES(data, this.aesKey)
    }
 
    /**
     * aes 解密方法
     * @param data
     * @returns {*}
     */
    static decrypt(data) {
        return this.decryptAES(data, this.aesKey)
    }
 
    /**
     * aes 加密方法,同java:AesUtil.encryptToBase64(text, aesKey);
     */
    static encryptAES(data, key) {
        const dataBytes = CryptoJS.enc.Utf8.parse(data)
        const keyBytes = CryptoJS.enc.Utf8.parse(key)
        const encrypted = CryptoJS.AES.encrypt(dataBytes, keyBytes, {
            iv: keyBytes,
            mode: CryptoJS.mode.CBC,
            padding: CryptoJS.pad.Pkcs7,
        })
        return CryptoJS.enc.Base64.stringify(encrypted.ciphertext)
    }
 
    /**
     * aes 解密方法,同java:AesUtil.decryptFormBase64ToString(encrypt, aesKey);
     */
    static decryptAES(data, key) {
        const keyBytes = CryptoJS.enc.Utf8.parse(key)
        const decrypted = CryptoJS.AES.decrypt(data, keyBytes, {
            iv: keyBytes,
            mode: CryptoJS.mode.CBC,
            padding: CryptoJS.pad.Pkcs7,
        })
        return CryptoJS.enc.Utf8.stringify(decrypted)
    }
 
    /**
     * des 加密方法,同java:DesUtil.encryptToBase64(text, desKey)
     */
    static encryptDES(data, key) {
        const keyHex = CryptoJS.enc.Utf8.parse(key)
        const encrypted = CryptoJS.DES.encrypt(data, keyHex, {
            mode: CryptoJS.mode.ECB,
            padding: CryptoJS.pad.Pkcs7,
        })
        return encrypted.toString()
    }
 
    /**
     * des 解密方法,同java:DesUtil.decryptFormBase64(encryptBase64, desKey);
     */
    static decryptDES(data, key) {
        const keyHex = CryptoJS.enc.Utf8.parse(key)
        const decrypted = CryptoJS.DES.decrypt(
            {
                ciphertext: CryptoJS.enc.Base64.parse(data),
            },
            keyHex,
            {
                mode: CryptoJS.mode.ECB,
                padding: CryptoJS.pad.Pkcs7,
            }
        )
        return decrypted.toString(CryptoJS.enc.Utf8)
    }
}