一、加密
1.首先假设你已经将Excel表格数据导出为了json数据
2.然后可以通关nodejs对其进行xor加密
const fs = require('fs');// 读取配置文件
const path = "hero_info.json";
const data = fs.readFileSync(path, 'utf-8');
const jsonObject = JSON.parse(data);// XOR 加密函数
function xorEncrypt(buffer, key) {const encrypted = Buffer.alloc(buffer.length);console.log(encrypted);for (let i = 0; i < buffer.length; i++) {encrypted[i] = buffer[i] ^ key; // 对每个字节与密钥进行异或}return encrypted;
}// 将 JSON 对象转换为字符串
const jsonString = JSON.stringify(jsonObject);// 使用 Buffer 将字符串转换为二进制数据
const binaryData = Buffer.from(jsonString, 'utf-8');// 定义一个密钥(简单示例,使用一个字节)
const encryptionKey = 0x55; // 0x55 是一个简单的密钥// 对二进制数据进行加密
const encryptedData = xorEncrypt(binaryData, encryptionKey);// 将加密后的二进制数据写入文件
fs.writeFileSync('hero_info.bin', encryptedData);
二、解密
protected onLoad(): void {this.loadConfig();
}// 加载配置文件hero_info
loadConfig() {const encryptionKey = 0x55;let path = "hero_info";resources.load(path, (err, buffAsset: BufferAsset) => {const arrayBuff = buffAsset.buffer();const decAB = this.xorDecrypt(arrayBuff, encryptionKey);let decoder = new TextDecoder('utf-8');let decodedString = decoder.decode(decAB);console.log("data:", decodedString);});
}
// 异或解密
xorDecrypt(buffer, key) {return this.xorEncrypt(buffer, key); // 解密和加密是一样的操作
}
// 异或加密
xorEncrypt(buffer: ArrayBuffer, key: number) {const data = new Uint8Array(buffer);const out = new Uint8Array(data.length);for (let index = 0; index < data.length; index++) {out[index] = data[index] ^ key; }return out;
}