CocosCreator对配置文件加密

一、加密

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值