You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从TYPO3的JS解码函数推导对应编码函数?

实现TYPO3 CMS linkTo_UnCryptMailto对应的编码函数encodeMyString

先拆解解码逻辑:decodeMyString 核心是调用 decryptString 并传入偏移量 -3,也就是对指定字符集中的每个字符**减3(循环补位)完成解密。编码逻辑只需反向操作,对同一字符集内的字符加3(循环补位)**即可。

以下是对应的编码实现:

/// 加密辅助函数
function encryptCharcode(n, start, end, offset) {
    n = n + offset;
    if (offset > 0 && n > end) {
        n = start + (n - end - 1);
    } else if (offset < 0 && n < start) {
        n = end - (start - n - 1);
    }
    return String.fromCharCode(n);
}

/// 加密字符串
function encryptString(dec, offset) {
    var enc = "";
    var len = dec.length;
    for(var i=0; i < len; i++) {
        var n = dec.charCodeAt(i);
        if (n >= 0x2B && n <= 0x3A) {
            enc += encryptCharcode(n, 0x2B, 0x3A, offset); // 0-9 . , - + / :
        } else if (n >= 0x40 && n <= 0x5A) {
            enc += encryptCharcode(n, 0x40, 0x5A, offset); // A-Z @
        } else if (n >= 0x61 && n <= 0x7A) {
            enc += encryptCharcode(n, 0x61, 0x7A, offset); // a-z
        } else {
            enc += dec.charAt(i);
        }
    }
    return enc;
}

/// 主编码函数
function encodeMyString(s) {
    console.log( encryptString(s, 3) );
}

关键说明

  • 编码偏移量用 3,与解码的 -3 完全对称,确保编码后的数据能被原解码函数正确还原
  • 仅处理和解码逻辑一致的三类字符区间,其余字符直接保留,不做修改
  • 循环补位逻辑与解码辅助函数完全相同,仅偏移方向相反

验证示例

比如对字符串 test@example.com 执行编码,将得到的结果传入原 decodeMyString 函数,会完整还原出原字符串,证明逻辑匹配。

内容的提问来源于stack exchange,提问作者Fred F.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 08:35:23