const {ccclass, property} = cc._decorator; import CryptoJS = require('./crypto-js.min.js'); //引用AES源码js const BASE_URL = "https://api.sparkus.cn"; //只负责网络接口 次类只负责和后端交互,不负责处理数据 数据处理在GameTool @ccclass export default class HttpUtil extends cc.Component { //排行榜 } // 响应拦截器 // Rq.interceptors.response.use(responseHandler) const config = { gameId: "100012", secretKey: "onnfPKJW", EK:"hui231%1" }; interface CrypotoType { encryptByDES: any decryptByDES: any hmacSha256: any } class Crypoto implements CrypotoType { // 加密的向明值,自己根据项目实际情况定,需要跟后端开发保持一致 private keyHex = this.getHetKey() private getHetKey() { return CryptoJS.enc.Utf8.parse(config.EK); } /** DES加密 */ encryptByDES(message: string, secret?: string) { if(!message) { return message } const key = secret? CryptoJS.enc.Utf8.parse(secret): this.keyHex const encrypted = CryptoJS.DES.encrypt(message, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); return encrypted.toString() } /** DES解密 */ decryptByDES(message: string, secret?: string) { const key = secret? CryptoJS.enc.Utf8.parse(secret): this.keyHex const decrypted = CryptoJS.DES.decrypt({ ciphertext: CryptoJS.enc.Base64.parse(message) }, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }) return decrypted.toString(CryptoJS.enc.Utf8) } /** hmacSHA256加密 */ hmacSha256(message: string, secret?: string) { const keyHex = secret? CryptoJS.enc.Utf8.parse(secret): this.keyHex const hash = CryptoJS.HmacSHA256(message, keyHex); return hash.toString() } /** hmacSHA256验证 */ verifyHmacSha256(message: string, signature: string) { const hash = CryptoJS.HmacSHA256(message, this.keyHex); return hash.toString() === signature } /** CBC加密 */ encryptCBC(word: string) { if (!word) { return word; } const srcs = CryptoJS.enc.Utf8.parse(word); const encrypted = CryptoJS.AES.encrypt(srcs, this.keyHex, { iv: this.keyHex, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding }); return encrypted.toString(); } /** CBC解密 */ decryptCBC(word: string) { if (!word) { return word; } const encryptedHexStr = CryptoJS.enc.Hex.parse(word); const srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr); const decrypt = CryptoJS.AES.decrypt(srcs, this.keyHex, { iv: this.keyHex, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding }); const decryptedStr = decrypt.toString(CryptoJS.enc.Utf8); return decryptedStr.toString(); } } const fxCry = new Crypoto();