gx
chenyc
2026-05-24 a43f8991d3f5fa2ef4e0f3eeeca00fb4afc263c0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
"use strict";
 
const DEFAULT_KEY = "jms-gc110n-log-obfuscate-default";
 
function getKey() {
  return process.env.JMS_LOG_KEY || DEFAULT_KEY;
}
 
function obfuscate(text) {
  if (!text) return text;
  const key = Buffer.from(getKey(), "utf-8");
  const data = Buffer.from(text, "utf-8");
  const out = Buffer.alloc(data.length);
  for (let i = 0; i < data.length; i++) {
    out[i] = data[i] ^ key[i % key.length];
  }
  return "[OBF]" + out.toString("base64");
}
 
function deobfuscate(encoded) {
  if (!encoded) return encoded;
  if (encoded.startsWith("[OBF]")) {
    encoded = encoded.slice(5);
  }
  const key = Buffer.from(getKey(), "utf-8");
  const data = Buffer.from(encoded, "base64");
  const out = Buffer.alloc(data.length);
  for (let i = 0; i < data.length; i++) {
    out[i] = data[i] ^ key[i % key.length];
  }
  return out.toString("utf-8");
}
 
module.exports = { obfuscate, deobfuscate };