SOURCE

// var d = c.MD5 = l.extend({
    var d = {
            _doReset: function() {
                this._hash = new o.init([1732584193, 4023233417, 2562383102, 271733878])
            },
            _doProcessBlock: function(e, t) {
                for (var i = 0; i < 16; i++) {
                    var n = t + i
                      , r = e[n];
                    e[n] = 16711935 & (r << 8 | r >>> 24) | 4278255360 & (r << 24 | r >>> 8)
                }
                var o = this._hash.words
                  , l = e[t + 0]
                  , c = e[t + 1]
                  , d = e[t + 2]
                  , _ = e[t + 3]
                  , x = e[t + 4]
                  , w = e[t + 5]
                  , S = e[t + 6]
                  , C = e[t + 7]
                  , k = e[t + 8]
                  , O = e[t + 9]
                  , M = e[t + 10]
                  , D = e[t + 11]
                  , I = e[t + 12]
                  , T = e[t + 13]
                  , A = e[t + 14]
                  , E = e[t + 15]
                  , a = o[0]
                  , b = o[1]
                  , P = o[2]
                  , j = o[3];
                a = f(a, b, P, j, l, 7, h[0]),
                j = f(j, a, b, P, c, 12, h[1]),
                P = f(P, j, a, b, d, 17, h[2]),
                b = f(b, P, j, a, _, 22, h[3]),
                a = f(a, b, P, j, x, 7, h[4]),
                j = f(j, a, b, P, w, 12, h[5]),
                P = f(P, j, a, b, S, 17, h[6]),
                b = f(b, P, j, a, C, 22, h[7]),
                a = f(a, b, P, j, k, 7, h[8]),
                j = f(j, a, b, P, O, 12, h[9]),
                P = f(P, j, a, b, M, 17, h[10]),
                b = f(b, P, j, a, D, 22, h[11]),
                a = f(a, b, P, j, I, 7, h[12]),
                j = f(j, a, b, P, T, 12, h[13]),
                P = f(P, j, a, b, A, 17, h[14]),
                a = m(a, b = f(b, P, j, a, E, 22, h[15]), P, j, c, 5, h[16]),
                j = m(j, a, b, P, S, 9, h[17]),
                P = m(P, j, a, b, D, 14, h[18]),
                b = m(b, P, j, a, l, 20, h[19]),
                a = m(a, b, P, j, w, 5, h[20]),
                j = m(j, a, b, P, M, 9, h[21]),
                P = m(P, j, a, b, E, 14, h[22]),
                b = m(b, P, j, a, x, 20, h[23]),
                a = m(a, b, P, j, O, 5, h[24]),
                j = m(j, a, b, P, A, 9, h[25]),
                P = m(P, j, a, b, _, 14, h[26]),
                b = m(b, P, j, a, k, 20, h[27]),
                a = m(a, b, P, j, T, 5, h[28]),
                j = m(j, a, b, P, d, 9, h[29]),
                P = m(P, j, a, b, C, 14, h[30]),
                a = v(a, b = m(b, P, j, a, I, 20, h[31]), P, j, w, 4, h[32]),
                j = v(j, a, b, P, k, 11, h[33]),
                P = v(P, j, a, b, D, 16, h[34]),
                b = v(b, P, j, a, A, 23, h[35]),
                a = v(a, b, P, j, c, 4, h[36]),
                j = v(j, a, b, P, x, 11, h[37]),
                P = v(P, j, a, b, C, 16, h[38]),
                b = v(b, P, j, a, M, 23, h[39]),
                a = v(a, b, P, j, T, 4, h[40]),
                j = v(j, a, b, P, l, 11, h[41]),
                P = v(P, j, a, b, _, 16, h[42]),
                b = v(b, P, j, a, S, 23, h[43]),
                a = v(a, b, P, j, O, 4, h[44]),
                j = v(j, a, b, P, I, 11, h[45]),
                P = v(P, j, a, b, E, 16, h[46]),
                a = y(a, b = v(b, P, j, a, d, 23, h[47]), P, j, l, 6, h[48]),
                j = y(j, a, b, P, C, 10, h[49]),
                P = y(P, j, a, b, A, 15, h[50]),
                b = y(b, P, j, a, w, 21, h[51]),
                a = y(a, b, P, j, I, 6, h[52]),
                j = y(j, a, b, P, _, 10, h[53]),
                P = y(P, j, a, b, M, 15, h[54]),
                b = y(b, P, j, a, c, 21, h[55]),
                a = y(a, b, P, j, k, 6, h[56]),
                j = y(j, a, b, P, E, 10, h[57]),
                P = y(P, j, a, b, S, 15, h[58]),
                b = y(b, P, j, a, T, 21, h[59]),
                a = y(a, b, P, j, x, 6, h[60]),
                j = y(j, a, b, P, D, 10, h[61]),
                P = y(P, j, a, b, d, 15, h[62]),
                b = y(b, P, j, a, O, 21, h[63]),
                o[0] = o[0] + a | 0,
                o[1] = o[1] + b | 0,
                o[2] = o[2] + P | 0,
                o[3] = o[3] + j | 0
            },
            _doFinalize: function() {
                var data = this._data
                  , t = data.words
                  , n = 8 * this._nDataBytes
                  , r = 8 * data.sigBytes;
                t[r >>> 5] |= 128 << 24 - r % 32;
                var o = e.floor(n / 4294967296)
                  , l = n;
                t[15 + (r + 64 >>> 9 << 4)] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8),
                t[14 + (r + 64 >>> 9 << 4)] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8),
                data.sigBytes = 4 * (t.length + 1),
                this._process();
                for (var c = this._hash, h = c.words, i = 0; i < 4; i++) {
                    var d = h[i];
                    h[i] = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8)
                }
                return c
            },
            clone: function() {
                var e = l.clone.call(this);
                return e._hash = this._hash.clone(),
                e
            }
        };

x =  {
                stringify: function(e) {
                    try {
                        return decodeURIComponent(escape(_.stringify(e)))
                    } catch (e) {
                        throw new Error("Malformed UTF-8 data")
                    }
                },
                parse: function(e) {
                    return _.parse(unescape(encodeURIComponent(e)))
                }
            }
 function concat(e) {
                    var t = this.words
                      , n = e.words
                      , r = this.sigBytes
                      , o = e.sigBytes;
                    if (this.clamp(),
                    r % 4)
                        for (var i = 0; i < o; i++) {
                            var l = n[i >>> 2] >>> 24 - i % 4 * 8 & 255;
                            t[r + i >>> 2] |= l << 24 - (r + i) % 4 * 8
                        }
                    else
                        for (var c = 0; c < o; c += 4)
                            t[r + c >>> 2] = n[c >>> 2];
                    return this.sigBytes += o,
                    this
    }

function _append(data) {
    "string" == typeof data && (data = x.parse(data)),
    console.log("data: " + data);
    this._data.concat(data),
    this._nDataBytes += data.sigBytes
    }

function finalize(e) {
                    return e && _append(e),
                    d._doFinalize()
    }
 var str = "1735525479019PC3661pc(%+(-A/#*-C^%!.$)";               
console.log("str: " + finalize(str));
// console.log("str: " + JSON.stringify(d))
console 命令行工具 X clear

                    
>
console