加密,解密 样例

发布时间 2023-06-11 13:29:14作者: AngDH

 

 

 

加密

function _compress(e, t, n) {
                    if (null == e)
                        return "";
                    var r, o, i, a = {}, s = {}, c = "", u = "", l = "", d = 2, f = 3, p = 2, h = [], v = 0, m = 0;
                    for (i = 0; i < e.length; i += 1)
                        if (c = e.charAt(i),
                        Object.prototype.hasOwnProperty.call(a, c) || (a[c] = f++,
                        s[c] = !0),
                        u = l + c,
                        Object.prototype.hasOwnProperty.call(a, u))
                            l = u;
                        else {
                            if (Object.prototype.hasOwnProperty.call(s, l)) {
                                if (l.charCodeAt(0) < 256) {
                                    for (r = 0; r < p; r++)
                                        v <<= 1,
                                        m == t - 1 ? (m = 0,
                                        h.push(n(v)),
                                        v = 0) : m++;
                                    for (o = l.charCodeAt(0),
                                    r = 0; r < 8; r++)
                                        v = v << 1 | 1 & o,
                                        m == t - 1 ? (m = 0,
                                        h.push(n(v)),
                                        v = 0) : m++,
                                        o >>= 1
                                } else {
                                    for (o = 1,
                                    r = 0; r < p; r++)
                                        v = v << 1 | o,
                                        m == t - 1 ? (m = 0,
                                        h.push(n(v)),
                                        v = 0) : m++,
                                        o = 0;
                                    for (o = l.charCodeAt(0),
                                    r = 0; r < 16; r++)
                                        v = v << 1 | 1 & o,
                                        m == t - 1 ? (m = 0,
                                        h.push(n(v)),
                                        v = 0) : m++,
                                        o >>= 1
                                }
                                0 == --d && (d = Math.pow(2, p),
                                p++),
                                delete s[l]
                            } else
                                for (o = a[l],
                                r = 0; r < p; r++)
                                    v = v << 1 | 1 & o,
                                    m == t - 1 ? (m = 0,
                                    h.push(n(v)),
                                    v = 0) : m++,
                                    o >>= 1;
                            0 == --d && (d = Math.pow(2, p),
                            p++),
                            a[u] = f++,
                            l = String(c)
                        }
                    if ("" !== l) {
                        if (Object.prototype.hasOwnProperty.call(s, l)) {
                            if (l.charCodeAt(0) < 256) {
                                for (r = 0; r < p; r++)
                                    v <<= 1,
                                    m == t - 1 ? (m = 0,
                                    h.push(n(v)),
                                    v = 0) : m++;
                                for (o = l.charCodeAt(0),
                                r = 0; r < 8; r++)
                                    v = v << 1 | 1 & o,
                                    m == t - 1 ? (m = 0,
                                    h.push(n(v)),
                                    v = 0) : m++,
                                    o >>= 1
                            } else {
                                for (o = 1,
                                r = 0; r < p; r++)
                                    v = v << 1 | o,
                                    m == t - 1 ? (m = 0,
                                    h.push(n(v)),
                                    v = 0) : m++,
                                    o = 0;
                                for (o = l.charCodeAt(0),
                                r = 0; r < 16; r++)
                                    v = v << 1 | 1 & o,
                                    m == t - 1 ? (m = 0,
                                    h.push(n(v)),
                                    v = 0) : m++,
                                    o >>= 1
                            }
                            0 == --d && (d = Math.pow(2, p),
                            p++),
                            delete s[l]
                        } else
                            for (o = a[l],
                            r = 0; r < p; r++)
                                v = v << 1 | 1 & o,
                                m == t - 1 ? (m = 0,
                                h.push(n(v)),
                                v = 0) : m++,
                                o >>= 1;
                        0 == --d && (d = Math.pow(2, p),
                        p++)
                    }
                    for (o = 2,
                    r = 0; r < p; r++)
                        v = v << 1 | 1 & o,
                        m == t - 1 ? (m = 0,
                        h.push(n(v)),
                        v = 0) : m++,
                        o >>= 1;
                    for (; ; ) {
                        if (v <<= 1,
                        m == t - 1) {
                            h.push(n(v));
                            break
                        }
                        m++
                    }
                    return h.join("")
                };

var n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$';

_compress(
    '{"5":{"p":2,"pp":25}}',
     6, (function(e) {
                        return n.charAt(e)
                    }
                    )
)