一、加密
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;
}