加密
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) } ) )