All pastes #2081623 Raw Edit

Someone

public text v1 · immutable
#2081623 ·published 2011-09-20 18:39 UTC
rendered paste body
SignUp.Encrypt = function() {
    this.EncryptData = function(b, c, j) { 
        var a = [];
        switch (j.toLowerCase()) {
        case "pwdsa":
            if (b == null || c == null) return null;
            a = e(b, c);
            break;
        case "pwd":
            if (b == null) return null;
            a = d(b)
        }
        if (a == null || typeof a == "undefined") return a;
        if (typeof Key != "undefined" && typeof f != "undefined") var i = f(Key);
        var h = x(a, i, randomNum),
            g = m(h);
        return g;

        function e(d, e) {
            var a = [],
                c = 0;
            a[c++] = 1;
            a[c++] = 1;
            var g = d.length;
            a[c++] = d.length;
            var b;
            for (b = 0; b < g; b++) a[c++] = d.charCodeAt(b) & 127;
            var f = e.length;
            a[c++] = f * 2;
            for (b = 0; b < f; b++) {
                a[c++] = e.charCodeAt(b) & 255;
                a[c++] = (e.charCodeAt(b) & 65280) >> 8
            }
            a[c] = 0;
            return a
        }
        function d(d) {
            var a = [],
                b = 0;
            a[b++] = 1;
            a[b++] = 1;
            var c, e = d.length;
            a[b++] = e;
            for (c = 0; c < e; c++) {
            	a[b++] = d.charCodeAt(c) & 127;
            }
            a[b++] = 0;
            a[b++] = 0;
            return a
        }
    };

    function o(a) {
        if (a >= 0 && a < 26) return String.fromCharCode(65 + a);
        else if (a >= 26 && a < 52) return String.fromCharCode(97 + a - 26);
        else if (a >= 52 && a < 62) return String.fromCharCode(48 + a - 52);
        else if (a == 62) return "+";
        else if (a == 63) return "/"
    }
    function d(b, d) {
        var a, c = "";
        for (a = d; a < 4; a++) b = b >> 6;
        for (a = 0; a < d; a++) {
            c = o(b & 63) + c;
            b = b >> 6
        }
        return c
    }
    function m(e) {
        var g = e.length,
            b = "",
            a, c;
        for (a = g - 3; a >= 0; a -= 3) {
            c = e[a] | e[a + 1] << 8 | e[a + 2] << 16;
            b = b + d(c, 4)
        }
        var f = g % 3;
        c = 0;
        for (a += 2; a >= 0; a--) c = c << 8 | e[a];
        if (f == 0) b = b + d(c, 4);
        else if (f == 1) b = b + d(c << 16, 2) + "==";
        else if (f == 2) b = b + d(c << 8, 3) + "=";
        return b
    }
    function f(b) {
        var c = b.indexOf(";");
        if (c < 0) {
        	return null;
        }
        var f = b.substr(0, c),
            e = b.substr(c + 1),
            a = f.indexOf("=");
        if (a < 0) {
        	return null;
        }
        var g = f.substr(a + 1);
        a = e.indexOf("=");
        if (a < 0) {
        	return null;
        }
        var h = e.substr(a + 1),
            d = {};
        d["n"] = q(h);
        d["e"] = parseInt(g, 16);
        return d
    }
    function x(a, e, h) {
        var c = e.n,
            i = e.e,
            j = a.length,
            f = c.size * 2,
            g = 42;
        if (j + g > f) return null;
        l(a, f, h);
        a = a.reverse();
        var k = p(a),
            d = v(k, i, c);
        d.size = c.size;
        var b = r(d);
        b = b.reverse();
        return b
    }
    function c() {
        this.size = 1;
        this.data = [];
        this.data[0] = 0
    }
    function u(b) {
        var a = new c;
        a.size = b.size;
        a.data = b.data.slice(0);
        return a
    }
    function p(d) {
        var b = new c,
            a = 0,
            e = d.length,
            f = e >> 1;
        for (a = 0; a < f; a++) b.data[a] = d[2 * a] + (d[1 + 2 * a] << 8);
        if (e % 2) b.data[a++] = d[e - 1];
        b.size = a;
        return b
    }
    function r(c) {
        var b = [],
            a = 0,
            d = c.size;
        for (a = 0; a < d; a++) {
            b[a * 2] = c.data[a] & 255;
            var e = c.data[a] >>> 8;
            b[a * 2 + 1] = e
        }
        return b
    }
    function v(f, b, e) {
        var h = [],
            c = 0;
        while (b > 0) {
            h[c] = b & 1;
            b = b >>> 1;
            c++
        }
        var a = u(f);
        for (var d = c - 2; d >= 0; d--) {
            a = g(a, a, e);
            if (h[d] == 1) a = g(a, f, e)
        }
        return a
    }
    function g(e, d, b) {
        var c = w(e, d),
            a = y(c, b);
        return a.r
    }
    function w(e, g) {
        var d = new c;
        d.size = e.size + g.size;
        var a, b;
        for (a = 0; a < d.size; a++) d.data[a] = 0;
        var f = e.data,
            i = g.data,
            h = d.data;
        if (e == g) {
            for (a = 0; a < e.size; a++) h[2 * a] += f[a] * f[a];
            for (a = 1; a < e.size; a++) for (b = 0; b < a; b++) h[a + b] += 2 * f[a] * f[b]
        } else for (a = 0; a < e.size; a++) for (b = 0; b < g.size; b++) h[a + b] += f[a] * i[b];
        s(d);
        return d
    }
    function s(d) {
        var b, c, e, a, g, f;
        e = d.size;
        c = 0;
        for (b = 0; b < e; b++) {
            a = d.data[b];
            a += c;
            f = a;
            c = Math.floor(a / 65536);
            a -= c * 65536;
            d.data[b] = a
        }
    }
    function k(a) {
        var b = a.size - 1;
        while (b > 0 && a.data[b--] == 0) a.size--
    }
    function y(a, b) {
        var m = a.size,
            f = b.size,
            o = b.data[f - 1],
            n = b.data[f - 1] + b.data[f - 2] / 65536,
            j = new c;
        j.size = m - f + 1;
        a.data[m] = 0;
        for (var g = m - 1; g >= f - 1; g--) {
            var h = g - f + 1,
                d = Math.floor((a.data[g + 1] * 65536 + a.data[g]) / n);
            if (d > 0) {
                var i = e(a, d, b, h);
                if (i < 0) {
                    d--;
                    e(a, d, b, h)
                }
                while (i > 0 && a.data[g] >= o) {
                    i = e(a, 1, b, h);
                    if (i > 0) d++
                }
            }
            j.data[h] = d
        }
        var l = {};
        l["q"] = j;
        k(a);
        l["r"] = a;
        return l
    }
    function e(f, i, g, d) {
        var a, h = f.data.slice(0),
            b = 0,
            e = f.data;
        for (a = 0; a < g.size; a++) {
            var c = b + g.data[a] * i;
            b = c >>> 16;
            c = c - b * 65536;
            if (c > e[a + d]) {
                e[a + d] += 65536 - c;
                b++
            } else e[a + d] -= c
        }
        if (b > 0) e[a + d] -= b;
        if (e[a + d] < 0) {
            f.data = h.slice(0);
            return -1
        }
        return +1
    }
    function l(d, f, o) {
        var q = d.length,
            a, p = [218, 57, 163, 238, 94, 107, 75, 13, 50, 85, 191, 239, 149, 96, 24, 144, 175, 216, 7, 9],
            k = f - q - 40 - 2,
            e = [];
        for (a = 0; a < k; a++) e[a] = 0;
        e[k] = 1;
        var r = p.concat(e, d),
            c = [];
        for (a = 0; a < 20; a++) c[a] = Math.floor(Math.random() * 256);
        c = i(c.concat(o));
        var n = j(c, f - 21),
            g = h(r, n),
            m = j(g, 20),
            l = h(c, m),
            b = [];
        b[0] = 0;
        b = b.concat(l, g);
        for (a = 0; a < b.length; a++) d[a] = b[a]
    }
    function j(f, d) {
        if (d > 4096) return null;
        var a = f.slice(0),
            b = a.length;
        a[b++] = 0;
        a[b++] = 0;
        a[b++] = 0;
        a[b] = 0;
        var e = 0,
            c = [];
        while (c.length < d) {
            a[b] = e++;
            c = c.concat(i(a))
        }
        return c.slice(0, d)
    }
    function h(b, d) {
        if (b.length != d.length) return null;
        var c = [],
            e = b.length;
        for (var a = 0; a < e; a++) c[a] = b[a] ^ d[a];
        return c
    }
    function i(f) {
        var d, e = f.slice(0);
        t(e);
        var a = {};
        a["A"] = 1732584193;
        a["B"] = 4023233417;
        a["C"] = 2562383102;
        a["D"] = 271733878;
        a["E"] = 3285377520;
        for (d = 0; d < e.length; d += 64) n(a, e, d);
        var c = [];
        b(a.A, c, 0);
        b(a.B, c, 4);
        b(a.C, c, 8);
        b(a.D, c, 12);
        b(a.E, c, 16);
        return c
    }
    function b(b, d, c) {
        var a;
        for (a = 3; a >= 0; a--) {
            d[c + a] = b & 255;
            b = b >>> 8
        }
    }
    function t(b) {
        var d = b.length,
            e = d,
            f = d % 64,
            g = f < 55 ? 56 : 120,
            a;
        b[e++] = 128;
        for (a = f + 1; a < g; a++) b[e++] = 0;
        var c = d * 8;
        for (a = 1; a < 8; a++) {
            b[e + 8 - a] = c & 255;
            c = c >>> 8
        }
    }
    function n(c, m, n) {
        var o = 1518500249,
            p = 1859775393,
            q = 2400959708,
            r = 3395469782,
            b, h, l, i = [],
            g = c.A,
            d = c.B,
            e = c.C,
            f = c.D,
            j = c.E;
        for (h = 0, l = n; h < 16; h++, l += 4) i[h] = m[l] << 24 | m[l + 1] << 16 | m[l + 2] << 8 | m[l + 3] << 0;
        for (h = 16; h < 80; h++) i[h] = a(i[h - 3] ^ i[h - 8] ^ i[h - 14] ^ i[h - 16], 1);
        var k;
        for (b = 0; b < 20; b++) {
            k = a(g, 5) + (d & e | ~d & f) + j + i[b] + o & 4294967295;
            j = f;
            f = e;
            e = a(d, 30);
            d = g;
            g = k
        }
        for (b = 20; b < 40; b++) {
            k = a(g, 5) + (d ^ e ^ f) + j + i[b] + p & 4294967295;
            j = f;
            f = e;
            e = a(d, 30);
            d = g;
            g = k
        }
        for (b = 40; b < 60; b++) {
            k = a(g, 5) + (d & e | d & f | e & f) + j + i[b] + q & 4294967295;
            j = f;
            f = e;
            e = a(d, 30);
            d = g;
            g = k
        }
        for (b = 60; b < 80; b++) {
            k = a(g, 5) + (d ^ e ^ f) + j + i[b] + r & 4294967295;
            j = f;
            f = e;
            e = a(d, 30);
            d = g;
            g = k
        }
        c.A = c.A + g & 4294967295;
        c.B = c.B + d & 4294967295;
        c.C = c.C + e & 4294967295;
        c.D = c.D + f & 4294967295;
        c.E = c.E + j & 4294967295
    }
    function a(b, a) {
        var c = b >>> 32 - a,
            e = (1 << 32 - a) - 1,
            d = b & e;
        return d << a | c
    }
    function q(f) {
        var a, e, b = Math.ceil(f.length / 4),
            d = new c;
        d.size = b;
        for (a = 0; a < b; a++) {
            e = f.substr(a * 4, 4);
            d.data[b - 1 - a] = parseInt(e, 16)
        }
        return d
    }
};