735 lines
21 KiB
JavaScript
735 lines
21 KiB
JavaScript
/**
|
|
* [js-md5]{@link https://github.com/emn178/js-md5}
|
|
*
|
|
* @namespace md5
|
|
* @version 0.7.3
|
|
* @author Chen, Yi-Cyuan [emn178@gmail.com]
|
|
* @copyright Chen, Yi-Cyuan 2014-2017
|
|
* @license MIT
|
|
*/
|
|
!(function () {
|
|
'use strict'
|
|
function t(t) {
|
|
if (t)
|
|
(d[0] =
|
|
d[16] =
|
|
d[1] =
|
|
d[2] =
|
|
d[3] =
|
|
d[4] =
|
|
d[5] =
|
|
d[6] =
|
|
d[7] =
|
|
d[8] =
|
|
d[9] =
|
|
d[10] =
|
|
d[11] =
|
|
d[12] =
|
|
d[13] =
|
|
d[14] =
|
|
d[15] =
|
|
0),
|
|
(this.blocks = d),
|
|
(this.buffer8 = l)
|
|
else if (a) {
|
|
var r = new ArrayBuffer(68)
|
|
;(this.buffer8 = new Uint8Array(r)), (this.blocks = new Uint32Array(r))
|
|
} else this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
|
;(this.h0 = this.h1 = this.h2 = this.h3 = this.start = this.bytes = this.hBytes = 0),
|
|
(this.finalized = this.hashed = !1),
|
|
(this.first = !0)
|
|
}
|
|
var r = 'input is invalid type',
|
|
e = 'object' == typeof window,
|
|
i = e ? window : {}
|
|
i.JS_MD5_NO_WINDOW && (e = !1)
|
|
var s = !e && 'object' == typeof self,
|
|
h =
|
|
!i.JS_MD5_NO_NODE_JS &&
|
|
'object' == typeof process &&
|
|
process.versions &&
|
|
process.versions.node
|
|
h ? (i = global) : s && (i = self)
|
|
var f = !i.JS_MD5_NO_COMMON_JS && 'object' == typeof module && module.exports,
|
|
o = 'function' == typeof define && define.amd,
|
|
a = !i.JS_MD5_NO_ARRAY_BUFFER && 'undefined' != typeof ArrayBuffer,
|
|
n = '0123456789abcdef'.split(''),
|
|
u = [128, 32768, 8388608, -2147483648],
|
|
y = [0, 8, 16, 24],
|
|
c = ['hex', 'array', 'digest', 'buffer', 'arrayBuffer', 'base64'],
|
|
p = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''),
|
|
d = [],
|
|
l
|
|
if (a) {
|
|
var A = new ArrayBuffer(68)
|
|
;(l = new Uint8Array(A)), (d = new Uint32Array(A))
|
|
}
|
|
;(!i.JS_MD5_NO_NODE_JS && Array.isArray) ||
|
|
(Array.isArray = function (t) {
|
|
return '[object Array]' === Object.prototype.toString.call(t)
|
|
}),
|
|
!a ||
|
|
(!i.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW && ArrayBuffer.isView) ||
|
|
(ArrayBuffer.isView = function (t) {
|
|
return 'object' == typeof t && t.buffer && t.buffer.constructor === ArrayBuffer
|
|
})
|
|
var b = function (r) {
|
|
return function (e) {
|
|
return new t(!0).update(e)[r]()
|
|
}
|
|
},
|
|
v = function () {
|
|
var r = b('hex')
|
|
h && (r = w(r)),
|
|
(r.create = function () {
|
|
return new t()
|
|
}),
|
|
(r.update = function (t) {
|
|
return r.create().update(t)
|
|
})
|
|
for (var e = 0; e < c.length; ++e) {
|
|
var i = c[e]
|
|
r[i] = b(i)
|
|
}
|
|
return r
|
|
},
|
|
w = function (t) {
|
|
var e = eval("require('crypto')"),
|
|
i = eval("require('buffer').Buffer"),
|
|
s = function (s) {
|
|
if ('string' == typeof s) return e.createHash('md5').update(s, 'utf8').digest('hex')
|
|
if (null === s || void 0 === s) throw r
|
|
return (
|
|
s.constructor === ArrayBuffer && (s = new Uint8Array(s)),
|
|
Array.isArray(s) || ArrayBuffer.isView(s) || s.constructor === i
|
|
? e.createHash('md5').update(new i(s)).digest('hex')
|
|
: t(s)
|
|
)
|
|
}
|
|
return s
|
|
}
|
|
;(t.prototype.update = function (t) {
|
|
if (!this.finalized) {
|
|
var e,
|
|
i = typeof t
|
|
if ('string' !== i) {
|
|
if ('object' !== i) throw r
|
|
if (null === t) throw r
|
|
if (a && t.constructor === ArrayBuffer) t = new Uint8Array(t)
|
|
else if (!(Array.isArray(t) || (a && ArrayBuffer.isView(t)))) throw r
|
|
e = !0
|
|
}
|
|
for (var s, h, f = 0, o = t.length, n = this.blocks, u = this.buffer8; f < o; ) {
|
|
if (
|
|
(this.hashed &&
|
|
((this.hashed = !1),
|
|
(n[0] = n[16]),
|
|
(n[16] =
|
|
n[1] =
|
|
n[2] =
|
|
n[3] =
|
|
n[4] =
|
|
n[5] =
|
|
n[6] =
|
|
n[7] =
|
|
n[8] =
|
|
n[9] =
|
|
n[10] =
|
|
n[11] =
|
|
n[12] =
|
|
n[13] =
|
|
n[14] =
|
|
n[15] =
|
|
0)),
|
|
e)
|
|
)
|
|
if (a) for (h = this.start; f < o && h < 64; ++f) u[h++] = t[f]
|
|
else for (h = this.start; f < o && h < 64; ++f) n[h >> 2] |= t[f] << y[3 & h++]
|
|
else if (a)
|
|
for (h = this.start; f < o && h < 64; ++f)
|
|
(s = t.charCodeAt(f)) < 128
|
|
? (u[h++] = s)
|
|
: s < 2048
|
|
? ((u[h++] = 192 | (s >> 6)), (u[h++] = 128 | (63 & s)))
|
|
: s < 55296 || s >= 57344
|
|
? ((u[h++] = 224 | (s >> 12)),
|
|
(u[h++] = 128 | ((s >> 6) & 63)),
|
|
(u[h++] = 128 | (63 & s)))
|
|
: ((s = 65536 + (((1023 & s) << 10) | (1023 & t.charCodeAt(++f)))),
|
|
(u[h++] = 240 | (s >> 18)),
|
|
(u[h++] = 128 | ((s >> 12) & 63)),
|
|
(u[h++] = 128 | ((s >> 6) & 63)),
|
|
(u[h++] = 128 | (63 & s)))
|
|
else
|
|
for (h = this.start; f < o && h < 64; ++f)
|
|
(s = t.charCodeAt(f)) < 128
|
|
? (n[h >> 2] |= s << y[3 & h++])
|
|
: s < 2048
|
|
? ((n[h >> 2] |= (192 | (s >> 6)) << y[3 & h++]),
|
|
(n[h >> 2] |= (128 | (63 & s)) << y[3 & h++]))
|
|
: s < 55296 || s >= 57344
|
|
? ((n[h >> 2] |= (224 | (s >> 12)) << y[3 & h++]),
|
|
(n[h >> 2] |= (128 | ((s >> 6) & 63)) << y[3 & h++]),
|
|
(n[h >> 2] |= (128 | (63 & s)) << y[3 & h++]))
|
|
: ((s = 65536 + (((1023 & s) << 10) | (1023 & t.charCodeAt(++f)))),
|
|
(n[h >> 2] |= (240 | (s >> 18)) << y[3 & h++]),
|
|
(n[h >> 2] |= (128 | ((s >> 12) & 63)) << y[3 & h++]),
|
|
(n[h >> 2] |= (128 | ((s >> 6) & 63)) << y[3 & h++]),
|
|
(n[h >> 2] |= (128 | (63 & s)) << y[3 & h++]))
|
|
;(this.lastByteIndex = h),
|
|
(this.bytes += h - this.start),
|
|
h >= 64 ? ((this.start = h - 64), this.hash(), (this.hashed = !0)) : (this.start = h)
|
|
}
|
|
return (
|
|
this.bytes > 4294967295 &&
|
|
((this.hBytes += (this.bytes / 4294967296) << 0), (this.bytes = this.bytes % 4294967296)),
|
|
this
|
|
)
|
|
}
|
|
}),
|
|
(t.prototype.finalize = function () {
|
|
if (!this.finalized) {
|
|
this.finalized = !0
|
|
var t = this.blocks,
|
|
r = this.lastByteIndex
|
|
;(t[r >> 2] |= u[3 & r]),
|
|
r >= 56 &&
|
|
(this.hashed || this.hash(),
|
|
(t[0] = t[16]),
|
|
(t[16] =
|
|
t[1] =
|
|
t[2] =
|
|
t[3] =
|
|
t[4] =
|
|
t[5] =
|
|
t[6] =
|
|
t[7] =
|
|
t[8] =
|
|
t[9] =
|
|
t[10] =
|
|
t[11] =
|
|
t[12] =
|
|
t[13] =
|
|
t[14] =
|
|
t[15] =
|
|
0)),
|
|
(t[14] = this.bytes << 3),
|
|
(t[15] = (this.hBytes << 3) | (this.bytes >>> 29)),
|
|
this.hash()
|
|
}
|
|
}),
|
|
(t.prototype.hash = function () {
|
|
var t,
|
|
r,
|
|
e,
|
|
i,
|
|
s,
|
|
h,
|
|
f = this.blocks
|
|
this.first
|
|
? (r =
|
|
((((r =
|
|
((t = ((((t = f[0] - 680876937) << 7) | (t >>> 25)) - 271733879) << 0) ^
|
|
((e =
|
|
((((e =
|
|
(-271733879 ^
|
|
((i =
|
|
((((i = (-1732584194 ^ (2004318071 & t)) + f[1] - 117830708) << 12) |
|
|
(i >>> 20)) +
|
|
t) <<
|
|
0) &
|
|
(-271733879 ^ t))) +
|
|
f[2] -
|
|
1126478375) <<
|
|
17) |
|
|
(e >>> 15)) +
|
|
i) <<
|
|
0) &
|
|
(i ^ t))) +
|
|
f[3] -
|
|
1316259209) <<
|
|
22) |
|
|
(r >>> 10)) +
|
|
e) <<
|
|
0)
|
|
: ((t = this.h0),
|
|
(r = this.h1),
|
|
(e = this.h2),
|
|
(r =
|
|
((((r +=
|
|
((t =
|
|
((((t += ((i = this.h3) ^ (r & (e ^ i))) + f[0] - 680876936) << 7) | (t >>> 25)) +
|
|
r) <<
|
|
0) ^
|
|
((e =
|
|
((((e +=
|
|
(r ^
|
|
((i =
|
|
((((i += (e ^ (t & (r ^ e))) + f[1] - 389564586) << 12) | (i >>> 20)) +
|
|
t) <<
|
|
0) &
|
|
(t ^ r))) +
|
|
f[2] +
|
|
606105819) <<
|
|
17) |
|
|
(e >>> 15)) +
|
|
i) <<
|
|
0) &
|
|
(i ^ t))) +
|
|
f[3] -
|
|
1044525330) <<
|
|
22) |
|
|
(r >>> 10)) +
|
|
e) <<
|
|
0)),
|
|
(r =
|
|
((((r +=
|
|
((t = ((((t += (i ^ (r & (e ^ i))) + f[4] - 176418897) << 7) | (t >>> 25)) + r) << 0) ^
|
|
((e =
|
|
((((e +=
|
|
(r ^
|
|
((i =
|
|
(( |