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