从现有的DECODE函数推导出一些匹配的ENCODE函数

问题描述 投票:0回答:1

在一些网络项目中我发现了一些 JavaScript 中的 DECODE 函数。
那就是解密一些混淆的字符串。

我丢失了匹配对应项的源代码 - ENCODE 函数。
我只是不知道如何从解码逻辑中推断出它。

/// decrypt helper function
function decryptCharcode(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);
}

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

/// the main function
function decodeMyString(s) {
    console.log( decryptString(s, -3) );
}

代码中有“decodeMyString”。
我不知道如何编码对应的“encodeMyString”。

我已经在网上搜索过了。 “解码”实际上是由 TYPO3 CMS 作为一些名为“linkTo_UnCryptMailto”的函数生成的。 但我无法找出它是如何进行“编码”的。

javascript encoding decoding
1个回答
0
投票

这是一个旋转密码。偏移量为 -3 时,“a”始终显示为“x”,“b”显示为“y”,“c”显示为“z”,“d”显示为“a”,依此类推。

您的“加密”函数可能只是“解密”函数的反向偏移量:

function encodeMyString(s) {
    console.log( decryptString(s, 3) );
}
© www.soinside.com 2019 - 2024. All rights reserved.