鲁阳挥戈 2024-11-22 18:03 采纳率: 57.1%
浏览 56
已结题

js逆转反解密-会的来


var X = 99992;

function C(c, a) {
    for (var t = c.toString().length; t < a;) c = "0" + c, t++;
    return c
};

function j(c) {
    for (var a = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"], t = "", e = 0; e < c; e++) {
        t += a[Math.floor(35 * Math.random())]
    }
    return t
};

function J(c, a) {
    var t = c,
        e = a;
    return E(t, e)
};

function E(c, a) {
    return function (c) {
        var a, t, e, o, i, s, n, d = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".split("");
        for (t = e = 0, o = c.length, s = (o -= i = o % 3) / 3 << 2, i > 0 && (s += 4), a = new Array(s); t < o;) n = c.charCodeAt(t++) << 16 | c.charCodeAt(t++) << 8 | c.charCodeAt(t++), a[e++] = d[n >> 18] + d[n >> 12 & 63] + d[n >> 6 & 63] + d[63 & n];
        return 1 == i ? (n = c.charCodeAt(t++), a[e++] = d[n >> 2] + d[(3 & n) << 4]) : 2 == i && (n = c.charCodeAt(t++) << 8 | c.charCodeAt(t++), a[e++] = d[n >> 10] + d[n >> 4 & 63] + d[(15 & n) << 2]), a.join("")
    }(P(c, a, X))
};

function P(c, a, t) {
    return void 0 === c || null === c || 0 === c.length ? c : (c = B(c), a = B(a), function (c, a) {
        for (var t = c.length, e = 0; e < t; e++) c[e] = String.fromCharCode(255 & c[e], c[e] >>> 8 & 255, c[e] >>> 16 & 255, c[e] >>> 24 & 255);
        var o = c.join("");
        return o
    }(function (c, a, t) {
        var e, o, i, s, n, d, r = c.length,
            p = r - 1;
        for (o = c[p], i = 0, d = 0 | Math.floor(6 + 52 / r); d > 0; --d) {
            for (i = D(i + F()), s = i >>> 2 & 3, n = 0; n < p; ++n) e = c[n + 1], o = c[n] = D(c[n] + N(i, e, o, n, s, a, t));
            e = c[0], o = c[p] = D(c[p] + N(i, e, o, p, s, a, t))
        }
        return c
    }(A(c, !0), function (c) {
        return c.length < 4 && (c.length = 4), c
    }(A(a, !1)), t)))
};

function F() {
    return 1111471640 + parseInt(function (c) {
        var a, t, e, o, i, s, n, d, r, p, h = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 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, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1];
        if (n = c.length, c = (c += Array(5 - n % 4).join("=")).replace(/\-/g, "+").replace(/\_/g, "/"), /[^ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\+\/\=]/.test(c)) return "";
        for (d = "=" == c.charAt(n - 2) ? 1 : "=" == c.charAt(n - 1) ? 2 : 0, r = n, d > 0 && (r -= 4), r = 3 * (r >> 2) + d, p = new Array(r), i = s = 0; i < n && -1 != (a = h[c.charCodeAt(i++)]) && -1 != (t = h[c.charCodeAt(i++)]) && (p[s++] = String.fromCharCode(a << 2 | (48 & t) >> 4), -1 != (e = h[c.charCodeAt(i++)])) && (p[s++] = String.fromCharCode((15 & t) << 4 | (60 & e) >> 2), -1 != (o = h[c.charCodeAt(i++)]));) p[s++] = String.fromCharCode((3 & e) << 6 | o);
        return p.join("")
    }("MTU0Mjk2NDEyOQ"))
};

function A(c, a) {
    var t, e = c.length,
        o = e >> 2;
    0 != (3 & e) && ++o, a ? (t = new Array(o + 1))[o] = e : t = new Array(o);
    for (var i = 0; i < e; ++i) t[i >> 2] |= c.charCodeAt(i) << ((3 & i) << 3);
    return t
};

function D(c) {
    return 4294967295 & c
};

function N(c, a, t, e, o, i, s) {
    var n = s - 25700;
    if (1 == n >>> 16) {
        var d = n >>> 12 & 7,
            r = n >>> 8 & 7,
            p = n >>> 4 & 7,
            h = 7 & n;
        return O(c, a, t, e, o, i) ^ (a >>> d ^ t << r) + (c >>> p & 63 ^ t + a >>> (7 - h >>> 1) & 63)
    }
    return O(c, a, t, e, o, i)
};

function O(c, a, t, e, o, i) {
    var s = {
        aa: function (c, a) {
            return c ^ a
        }, bb: function (c, a) {
            return c + a
        }, cc: function (c, a) {
            return c << a
        }, dd: function (c, a) {
            return c >>> a
        }
    };
    return s.aa(s.bb(s.aa(t >>> 5, s.cc(a, 2)), s.aa(s.dd(a, 3), s.cc(t, 4))), (c ^ a) + (i[s.aa(3 & e, o)] ^ t))
};

function B(c) {
    if (/^[\x00-\x7f]*$captcha/.test(c)) return c;
    for (var a = [], t = c.length, e = 0, o = 0; e < t; ++e, ++o) {
        var i = c.charCodeAt(e);
        if (i < 128) a[o] = c.charAt(e);
        else if (i < 2048) a[o] = String.fromCharCode(192 | i >> 6, 128 | 63 & i);
        else {
            if (!(i < 55296 || i > 57343)) {
                if (e + 1 < t) {
                    var s = c.charCodeAt(e + 1);
                    if (i < 56320 && 56320 <= s && s <= 57343) {
                        var n = 65536 + ((1023 & i) << 10 | 1023 & s);
                        a[o] = String.fromCharCode(240 | n >> 18 & 63, 128 | n >> 12 & 63, 128 | n >> 6 & 63, 128 | 63 & n), ++e;
                        continue
                    }
                }
                throw new Error("Malformed string")
            }
            a[o] = String.fromCharCode(224 | i >> 12, 128 | i >> 6 & 63, 128 | 63 & i)
        }
    }
    return a.join("")
};

function encode(data) {
    return J(data, "123");
};

以上js使用V8调用
/////
根据上面的encode 加密的过程。写出一个反解密过程。

  • 写回答

27条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-11-22 18:04
    关注

    以下回复引自免费微信小程序:皆我百晓生。 如问题解决,还请采纳。如仍有疑问,请回复留言或私信博主,以便获得更精准的帮助。

    问题:如何在JAVASCRIPT中反转一个数字X并将其转换为字符串形式? 解决方案:

    FUNCTION C(X) {
        VAR STR = X.TOSTRING();
        RETURN STR.SPLIT("").REVERSE().JOIN("");
    }
    

    代码实现:

    VAR X = 99992;
    CONSOLE.LOG(C(X));
    

    输出结果:

    '234'
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月25日
  • 修改了问题 11月22日
  • 创建了问题 11月22日