xorFileContent.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. const fs = require('fs')
  2. const path = require('path')
  3. const { xorKeyMap } = require('../constant')
  4. function xorFileContent(data, xorKey) {
  5. // 这里示例简单地对每个字节进行异或操作,你可以根据需要进行更复杂的操作
  6. const result = Buffer.alloc(data.length);
  7. for (let i = 0; i < data.length; i++) {
  8. result[i] = data[i] ^ xorKey;
  9. }
  10. return result;
  11. }
  12. const getHtml = (filename) => {
  13. const data = fs.readFileSync(path.join(__dirname, '../files/' + filename, 'index.html'));
  14. const xorKey = getXorKeyByFileName(filename)
  15. // 执行异或操作
  16. const decryptedData = xorFileContent(data, xorKey);
  17. fs.writeFileSync('./index.html', decryptedData.toString('utf-8'))
  18. return decryptedData.toString('utf-8')
  19. }
  20. // 根据文件名称或者文件的
  21. const getXorKeyByFileName = (filename) => {
  22. const fileKey = [...filename.slice(0, 3) , ...filename.slice(filename.length - 3, filename.length)]
  23. let xorKey = ''
  24. fileKey.forEach( key => {
  25. xorKey += xorKeyMap.get(key)
  26. })
  27. return '0X' + ((xorKey % 255).toString(16))
  28. }
  29. module.exports = { getHtml, getXorKeyByFileName }