纯 JavaScript 计算 MD5
// @copyright https://g.alicdn.com/??mui/mtb-windvane/5.1.2/index.js,mui/mtop/5.0.2/index.js,mui/zebra-dynamic/6.0.8/config.js,mui/zebra-dynamic/6.0.8/io.js,mui/zebra-dynamic/6.0.8/ald-bottom.js,mui/zebra-dynamic/6.0.8/request.js,mui/zebra-dynamic/6.0.8/plugins/region/index.js,mui/zebra-dynamic/6.0.8/plugins/chaoshi/index.js,mui/zebra-dynamic/6.0.8/plugins/userId/index.js,mui/zebra-dynamic/6.0.8/plugins/utcp-debug/index.js,mui/zebra-dynamic/6.0.8/plugins/bottom/index.js,mui/zebra-dynamic/6.0.8/plugins/utcp/index.js,mui/zebra-dynamic/6.0.8/plugin.js,mui/zebra-dynamic/6.0.8/base-channel-dynamic.js,mui/zebra-dynamic/6.0.8/channel.js,mui/cookie/5.0.2/index.js,mui/fetch/5.0.4/fetch.js,mui/fetch/5.0.4/tool.js,mui/fetch/5.0.4/jsonp.js
function p(e){function t(e,t){return e<<t|e>>>32-t}function n(e,t){var n,o,i,r,s;return i=2147483648&e,r=2147483648&t,n=1073741824&e,o=1073741824&t,s=(1073741823&e)+(1073741823&t),n&o?2147483648^s^i^r:n|o?1073741824&s?3221225472^s^i^r:1073741824^s^i^r:s^i^r}function o(e,t,n){return e&t|~e&n}function i(e,t,n){return e&n|t&~n}function r(e,t,n){return e^t^n}function s(e,t,n){return t^(e|~n)}function a(e,i,r,s,a,p,u){return e=n(e,n(n(o(i,r,s),a),u)),n(t(e,p),i)}function p(e,o,r,s,a,p,u){return e=n(e,n(n(i(o,r,s),a),u)),n(t(e,p),o)}function u(e,o,i,s,a,p,u){return e=n(e,n(n(r(o,i,s),a),u)),n(t(e,p),o)}function c(e,o,i,r,a,p,u){return e=n(e,n(n(s(o,i,r),a),u)),n(t(e,p),o)}function d(e){for(var t,n=e.length,o=n+8,i=(o-o%64)/64,r=16*(i+1),s=new Array(r-1),a=0,p=0;n>p;)t=(p-p%4)/4,a=p%4*8,s[t]=s[t]|e.charCodeAt(p)<<a,p++;return t=(p-p%4)/4,a=p%4*8,s[t]=s[t]|128<<a,s[r-2]=n<<3,s[r-1]=n>>>29,s}function l(e){var t,n,o="",i="";for(n=0;3>=n;n++)t=e>>>8*n&255,i="0"+t.toString(16),o+=i.substr(i.length-2,2);return o}function f(e){e=e.replace(/\r\n/g,"\n");for(var t="",n=0;n<e.length;n++){var o=e.charCodeAt(n);128>o?t+=String.fromCharCode(o):o>127&&2048>o?(t+=String.fromCharCode(o>>6|192),t+=String.fromCharCode(63&o|128)):(t+=String.fromCharCode(o>>12|224),t+=String.fromCharCode(o>>6&63|128),t+=String.fromCharCode(63&o|128))}return t}var m,h,g,y,_,v,R,w,S,O=[],E=7,b=12,T=17,x=22,q=5,A=9,C=14,N=20,J=4,k=11,L=16,I=23,D=6,P=10,j=15,F=21;for(e=f(e),O=d(e),v=1732584193,R=4023233417,w=2562383102,S=271733878,m=0;m<O.length;m+=16)h=v,g=R,y=w,_=S,v=a(v,R,w,S,O[m+0],E,3614090360),S=a(S,v,R,w,O[m+1],b,3905402710),w=a(w,S,v,R,O[m+2],T,606105819),R=a(R,w,S,v,O[m+3],x,3250441966),v=a(v,R,w,S,O[m+4],E,4118548399),S=a(S,v,R,w,O[m+5],b,1200080426),w=a(w,S,v,R,O[m+6],T,2821735955),R=a(R,w,S,v,O[m+7],x,4249261313),v=a(v,R,w,S,O[m+8],E,1770035416),S=a(S,v,R,w,O[m+9],b,2336552879),w=a(w,S,v,R,O[m+10],T,4294925233),R=a(R,w,S,v,O[m+11],x,2304563134),v=a(v,R,w,S,O[m+12],E,1804603682),S=a(S,v,R,w,O[m+13],b,4254626195),w=a(w,S,v,R,O[m+14],T,2792965006),R=a(R,w,S,v,O[m+15],x,1236535329),v=p(v,R,w,S,O[m+1],q,4129170786),S=p(S,v,R,w,O[m+6],A,3225465664),w=p(w,S,v,R,O[m+11],C,643717713),R=p(R,w,S,v,O[m+0],N,3921069994),v=p(v,R,w,S,O[m+5],q,3593408605),S=p(S,v,R,w,O[m+10],A,38016083),w=p(w,S,v,R,O[m+15],C,3634488961),R=p(R,w,S,v,O[m+4],N,3889429448),v=p(v,R,w,S,O[m+9],q,568446438),S=p(S,v,R,w,O[m+14],A,3275163606),w=p(w,S,v,R,O[m+3],C,4107603335),R=p(R,w,S,v,O[m+8],N,1163531501),v=p(v,R,w,S,O[m+13],q,2850285829),S=p(S,v,R,w,O[m+2],A,4243563512),w=p(w,S,v,R,O[m+7],C,1735328473),R=p(R,w,S,v,O[m+12],N,2368359562),v=u(v,R,w,S,O[m+5],J,4294588738),S=u(S,v,R,w,O[m+8],k,2272392833),w=u(w,S,v,R,O[m+11],L,1839030562),R=u(R,w,S,v,O[m+14],I,4259657740),v=u(v,R,w,S,O[m+1],J,2763975236),S=u(S,v,R,w,O[m+4],k,1272893353),w=u(w,S,v,R,O[m+7],L,4139469664),R=u(R,w,S,v,O[m+10],I,3200236656),v=u(v,R,w,S,O[m+13],J,681279174),S=u(S,v,R,w,O[m+0],k,3936430074),w=u(w,S,v,R,O[m+3],L,3572445317),R=u(R,w,S,v,O[m+6],I,76029189),v=u(v,R,w,S,O[m+9],J,3654602809),S=u(S,v,R,w,O[m+12],k,3873151461),w=u(w,S,v,R,O[m+15],L,530742520),R=u(R,w,S,v,O[m+2],I,3299628645),v=c(v,R,w,S,O[m+0],D,4096336452),S=c(S,v,R,w,O[m+7],P,1126891415),w=c(w,S,v,R,O[m+14],j,2878612391),R=c(R,w,S,v,O[m+5],F,4237533241),v=c(v,R,w,S,O[m+12],D,1700485571),S=c(S,v,R,w,O[m+3],P,2399980690),w=c(w,S,v,R,O[m+10],j,4293915773),R=c(R,w,S,v,O[m+1],F,2240044497),v=c(v,R,w,S,O[m+8],D,1873313359),S=c(S,v,R,w,O[m+15],P,4264355552),w=c(w,S,v,R,O[m+6],j,2734768916),R=c(R,w,S,v,O[m+13],F,1309151649),v=c(v,R,w,S,O[m+4],D,4149444226),S=c(S,v,R,w,O[m+11],P,3174756917),w=c(w,S,v,R,O[m+2],j,718787259),R=c(R,w,S,v,O[m+9],F,3951481745),v=n(v,h),R=n(R,g),w=n(w,y),S=n(S,_);return(l(v)+l(R)+l(w)+l(S)).toLowerCase()}
References
- https://stackoverflow.com/a/33486055.
- https://github.com/blueimp/JavaScript-MD5.git.
- https://www.webtoolkit.info/javascript_md5.html.
- https://www.queness.com/code-snippet/6523/generate-md5-hash-with-javascript.