{"title":"\tT = (Y((function(e, t) {\n\t\t\tvar n;\n\t\te.exports = (n = D, function(e) {\n\t\t\tvar t = n,\n\t\t\t\ts = t.lib,\n\t\t\t\ta = s.WordArray,\n\t\t\t\ti = s.Hasher,\n\t\t\t\tr = t.algo,\n\t\t\t\to = [];\n\t\t\t! function() {\n\t\t\t\tfor (var t = 0; t < 64; t++) o[t] = 4294967296 * e.abs(e.sin(t + 1)) | 0\n\t\t\t}();\n\t\t\tvar u = r.MD5 = i.extend({\n\t\t\t\t_doReset: function() {\n\t\t\t\t\tthis._hash = new a.init([1732584193, 4023233417, 2562383102, 271733878])\n\t\t\t\t},\n\t\t\t\t_doProcessBlock: function(e, t) {\n\t\t\t\t\tfor (var n = 0; n < 16; n++) {\n\t\t\t\t\t\tvar s = t + n,\n\t\t\t\t\t\t\ta = e[s];\n\t\t\t\t\t\t\te[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8)\n\t\t\t\t\t}\n\t\t\t\t\tvar i = this._hash.words,\n\t\t\t\t\tr = e[t + 0],\n\t\t\t\t\tu = e[t + 1],\n\t\t\t\t\tf = e[t + 2],\n\t\t\t\t\tm = e[t + 3],\n\t\t\t\t\th = e[t + 4],\n\t\t\t\t\tp = e[t + 5],\n\t\t\t\t\ty = e[t + 6],\n\t\t\t\t\tv = e[t + 7],\n\t\t\t\t\tg = e[t + 8],\n\t\t\t\t\tM = e[t + 9],\n\t\t\t\t\tw = e[t + 10],\n\t\t\t\t\tk = e[t + 11],\n\t\t\t\t\tL = e[t + 12],\n\t\t\t\t\tb = e[t + 13],\n\t\t\t\t\tY = e[t + 14],\n\t\t\t\t\tx = e[t + 15],\n\t\t\t\t\tD = i[0],\n\t\t\t\t\tT = i[1],\n\t\t\t\t\tS = i[2],\n\t\t\t\t\tC = i[3];\n\t\t\t\t\tD = c(D, T, S, C, r, 7, o[0]), C = c(C, D, T, S, u, 12, o[1]), S = c(S, C, D, T, f, 17, o[2]), T = c(T, S, C, D, m, 22, o[3]), D = c(D, T, S, C, h, 7, o[4]), C = c(C, D, T, S, p, 12, o[5]), S = c(S, C, D, T, y, 17, o[6]), T = c(T, S, C, D, v, 22, o[7]), D = c(D, T, S, C, g, 7, o[8]), C = c(C, D, T, S, M, 12, o[9]), S = c(S, C, D, T, w, 17, o[10]), T = c(T, S, C, D, k, 22, o[11]), D = c(D, T, S, C, L, 7, o[12]), C = c(C, D, T, S, b, 12, o[13]), S = c(S, C, D, T, Y, 17, o[14]), D = d(D, T = c(T, S, C, D, x, 22, o[15]), S, C, u, 5, o[16]), C = d(C, D, T, S, y, 9, o[17]), S = d(S, C, D, T, k, 14, o[18]), T = d(T, S, C, D, r, 20, o[19]), D = d(D, T, S, C, p, 5, o[20]), C = d(C, D, T, S, w, 9, o[21]), S = d(S, C, D, T, x, 14, o[22]), T = d(T, S, C, D, h, 20, o[23]), D = d(D, T, S, C, M, 5, o[24]), C = d(C, D, T, S, Y, 9, o[25]), S = d(S, C, D, T, m, 14, o[26]), T = d(T, S, C, D, g, 20, o[27]), D = d(D, T, S, C, b, 5, o[28]), C = d(C, D, T, S, f, 9, o[29]), S = d(S, C, D, T, v, 14, o[30]), D = l(D, T = d(T, S, C, D, L, 20, o[31]), S, C, p, 4, o[32]), C = l(C, D, T, S, g, 11, o[33]), S = l(S, C, D, T, k, 16, o[34]), T = l(T, S, C, D, Y, 23, o[35]), D = l(D, T, S, C, u, 4, o[36]), C = l(C, D, T, S, h, 11, o[37]), S = l(S, C, D, T, v, 16, o[38]), T = l(T, S, C, D, w, 23, o[39]), D = l(D, T, S, C, b, 4, o[40]), C = l(C, D, T, S, r, 11, o[41]), S = l(S, C, D, T, m, 16, o[42]), T = l(T, S, C, D, y, 23, o[43]), D = l(D, T, S, C, M, 4, o[44]), C = l(C, D, T, S, L, 11, o[45]), S = l(S, C, D, T, x, 16, o[46]), D = _(D, T = l(T, S, C, D, f, 23, o[47]), S, C, r, 6, o[48]), C = _(C, D, T, S, v, 10, o[49]), S = _(S, C, D, T, Y, 15, o[50]), T = _(T, S, C, D, p, 21, o[51]), D = _(D, T, S, C, L, 6, o[52]), C = _(C, D, T, S, m, 10, o[53]), S = _(S, C, D, T, w, 15, o[54]), T = _(T, S, C, D, u, 21, o[55]), D = _(D, T, S, C, g, 6, o[56]), C = _(C, D, T, S, x, 10, o[57]), S = _(S, C, D, T, y, 15, o[58]), T = _(T, S, C, D, b, 21, o[59]), D = _(D, T, S, C, h, 6, o[60]), C = _(C, D, T, S, k, 10, o[61]), S = _(S, C, D, T, f, 15, o[62]), T = _(T, S, C, D, M, 21, o[63]), i[0] = i[0] + D | 0, i[1] = i[1] + T | 0, i[2] = i[2] + S | 0, i[3] = i[3] + C | 0\n\t\t\t\t},\n\t\t\t\t_doFinalize: function() {\n\t\t\t\t\tvar t = this._data,\n\t\t\t\t\tn = t.words,\n\t\t\t\t\ts = 8 * this._nDataBytes,\n\t\t\t\t\ta = 8 * t.sigBytes;\n\t\t\t\t\tn[a >>> 5] |= 128 << 24 - a % 32;\n\t\t\t\t\tvar i = e.floor(s / 4294967296),\n\t\t\t\t\tr = s;\n\t\t\t\t\tn[15 + (a + 64 >>> 9 << 4)] = 16711935 & (i << 8 | i >>> 24) | 4278255360 & (i << 24 | i >>> 8), n[14 + (a + 64 >>> 9 << 4)] = 16711935 & (r << 8 | r >>> 24) | 4278255360 & (r << 24 | r >>> 8), t.sigBytes = 4 * (n.length + 1), this._process();\n\t\t\t\t\tfor (var o = this._hash, u = o.words, c = 0; c < 4; c++) {\n\t\t\t\t\t\tvar d = u[c];\n\t\t\t\t\t\tu[c] = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8)\n\t\t\t\t\t}\n\t\t\t\t\treturn o\n\t\t\t\t},\n\t\t\t\tclone: function() {\n\t\t\t\t\tvar e = i.clone.call(this);\n\t\t\t\t\treturn e._hash = this._hash.clone(), e\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tfunction c(e, t, n, s, a, i, r) {\n\t\t\t\tvar o = e + (t & n | ~t & s) + a + r;\n\t\t\t\treturn (o << i | o >>> 32 - i) + t\n\t\t\t}\n\n\t\t\tfunction d(e, t, n, s, a, i, r) {\n\t\t\t\tvar o = e + (t & s | n & ~s) + a + r;\n\t\t\t\treturn (o << i | o >>> 32 - i) + t\n\t\t\t}\n\n\t\t\tfunction l(e, t, n, s, a, i, r) {\n\t\t\t\tvar o = e + (t ^ n ^ s) + a + r;\n\t\t\t\treturn (o << i | o >>> 32 - i) + t\n\t\t\t}\n\n\t\t\tfunction _(e, t, n, s, a, i, r) {\n\t\t\t\tvar o = e + (n ^ (t | ~s)) + a + r;\n\t\t\t\treturn (o << i | o >>> 32 - i) + t\n\t\t\t}\n\t\t\tt.MD5 = i._createHelper(u), t.HmacMD5 = i._createHmacHelper(u)\n\t\t}(Math), n.MD5)\n\t}))里面的hmacmd5方法是哪个,以及他的hmacmd5密钥是怎么来的内容:在给定的代码中,hmacmd5方法并没有直接出现,但是可以通过查看代码中的T.MD5和T.HmacMD5来了解。其中,T.MD5是MD5算法的实现,而T.HmacMD5是基于MD5算法的HMAC-MD5算法的实现。\n\nHMAC-MD5算法需要一个密钥来进行计算。在该代码中,并没有直接给出密钥的定义。一种常见的做法是将密钥作为参数传入HmacMD5方法,或者在代码其他地方定义密钥并通过变量传入。由于给定的代码片段中并没有提供完整的上下文,无法准确确定密钥是如何生成的。密钥的生成通常取决于具体的应用场景和需求。\n

JavaScript MD5 和 HMAC-MD5 算法实现解析

原文地址: https://www.cveoy.top/t/topic/qB3u 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录