module.exports = { /** * 文件异或加密处理 * @param {Buffer} fileBuffer 原文件Buffer * @param {String} key 加密KEY * @param {String} sign 加密签名 * @returns {Buffer} 加密文件Buffer */ xor (fileBuffer, key = '', sign = '') { if (!fileBuffer) { Editor.log('原文件Buffer不能为空'); return; } let keyBuffer = Buffer.from(key); let signBuffer = Buffer.from(sign); let kIndex = 0; let keyLen = keyBuffer.length; var byteLen = fileBuffer.length; for (let i = 0; i < byteLen; i++) { if (kIndex >= keyLen) { kIndex = 0; } fileBuffer[i] ^= keyBuffer[kIndex]; kIndex++; } return Buffer.concat([signBuffer, fileBuffer]); }, /** * 文件异或解密处理 * @param {Buffer} fileBuffer 加密文件Buffer * @param {String} key 加密KEY * @param {String} sign 加密签名 * @returns {Buffer} 原文件Buffer */ rox (fileBuffer, key = '', sign = '') { if (!fileBuffer) { Editor.log('加密文件Buffer不能为空'); return; } let keyBuffer = Buffer.from(key); let signBuffer = Buffer.from(sign); var buffer; var result = signBuffer.compare(fileBuffer); if (result < 0 || result == 0) { buffer = fileBuffer.slice(signBuffer.length, fileBuffer.length); } else { return fileBuffer; // 没有加密的图片 } let kIndex = 0; let keyLen = keyBuffer.length; var byteLen = buffer.length; for (let i = 0; i < byteLen; i++) { if (kIndex >= keyLen) { kIndex = 0; } buffer[i] ^= keyBuffer[kIndex]; kIndex++; } return buffer; } };