将 Javascript 函数翻译成 Python

Translating Javascript Function to Python

我完全不了解 javascript,但我正在尝试解决解码函数并将其转换为 python。在站点代码中,它生成一个长度为 100 个字符的字符串,该字符串被插入到一个名为 decode 的函数中,如此处所示,returns 一个长度为 96 个字符的字符串。我已经开始尝试将其转化为可用的 python 函数。

decode.call(undefined, "TaYWuqsVvO1zjYWnzcZaSyOucBGnvoz7Jiq2RLZBvTk35uaNHlYrwFb8V2fqQqBjVOGPyuu4WD1dMXeX1Si1GqVIWJYXey75PQMS");

function decode(message) {
  /** @type {number} */
  var offset = 71 + 28 * 75 + 14 + 38;
  if (this.angular.isDate(offset)) {
    console.log("Offset derived as: {", offset, "}");
  }
  return _.replace(message, /./g, function(char, increment) {
    return String.fromCharCode((char.charCodeAt(0) * increment + offset) % 77 + 48);
  });
}
;

Javascript 不是我的母语,因此对不同函数调用的任何帮助和解释都会有很大帮助。我已经知道,在这种情况下,我们的偏移量是一个整数值 2223。然后我们获取消息并替换其内容。但是我对增量函数和 /./g 部分感到有点困惑。

在您的代码中不清楚 this.angular 是什么,但您似乎对字符串替换最感兴趣。在 python 中,您可以执行以下操作:

def decode(s):
    offset = 71 + 28 * 75 + 14 + 38;
    return "".join(chr((ord(a) * increment + offset)  % 77 + 48) for increment, a in enumerate(s) )

p = decode("TaYWuqsVvO1zjYWnzcZaSyOucBGnvoz7Jiq2RLZBvTk35uaNHlYrwFb8V2fqQqBjVOGPyuu4WD1dMXeX1Si1GqVIWJYXey75PQMS")

这使得 p 等于:

's:>Dy@pe:8BGNueGAhvnQsRohGqRldO1`sk^@NFG=^BK<CoUj^cMB4^sPtfS|N1^K[hUhgBoAJzEss><l>eeI_wKGOusZ11D_vs]'

这与我在 javascript.

中得到的值相同

chr()ord()String.fromCharCode()char.charCodeAt()大致相同。您可以使用 enumerate 获得 increment 和值。之后剩下的就是数学了。