js-md5 - npm https://www.npmjs.com/package/js-md5

  1. var rotateLeft = function(lValue, iShiftBits) {
  2. return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
  3. }
  4. var addUnsigned = function(lX, lY) {
  5. var lX4, lY4, lX8, lY8, lResult;
  6. lX8 = (lX & 0x80000000);
  7. lY8 = (lY & 0x80000000);
  8. lX4 = (lX & 0x40000000);
  9. lY4 = (lY & 0x40000000);
  10. lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
  11. if (lX4 & lY4) return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
  12. if (lX4 | lY4) {
  13. if (lResult & 0x40000000) return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
  14. else return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
  15. } else {
  16. return (lResult ^ lX8 ^ lY8);
  17. }
  18. }
  19. var F = function(x, y, z) {
  20. return (x & y) | ((~x) & z);
  21. }
  22. var G = function(x, y, z) {
  23. return (x & z) | (y & (~z));
  24. }
  25. var H = function(x, y, z) {
  26. return (x ^ y ^ z);
  27. }
  28. var I = function(x, y, z) {
  29. return (y ^ (x | (~z)));
  30. }
  31. var FF = function(a, b, c, d, x, s, ac) {
  32. a = addUnsigned(a, addUnsigned(addUnsigned(F(b, c, d), x), ac));
  33. return addUnsigned(rotateLeft(a, s), b);
  34. };
  35. var GG = function(a, b, c, d, x, s, ac) {
  36. a = addUnsigned(a, addUnsigned(addUnsigned(G(b, c, d), x), ac));
  37. return addUnsigned(rotateLeft(a, s), b);
  38. };
  39. var HH = function(a, b, c, d, x, s, ac) {
  40. a = addUnsigned(a, addUnsigned(addUnsigned(H(b, c, d), x), ac));
  41. return addUnsigned(rotateLeft(a, s), b);
  42. };
  43. var II = function(a, b, c, d, x, s, ac) {
  44. a = addUnsigned(a, addUnsigned(addUnsigned(I(b, c, d), x), ac));
  45. return addUnsigned(rotateLeft(a, s), b);
  46. };
  47. var convertToWordArray = function(string) {
  48. var lWordCount;
  49. var lMessageLength = string.length;
  50. var lNumberOfWordsTempOne = lMessageLength + 8;
  51. var lNumberOfWordsTempTwo = (lNumberOfWordsTempOne - (lNumberOfWordsTempOne % 64)) / 64;
  52. var lNumberOfWords = (lNumberOfWordsTempTwo + 1) * 16;
  53. var lWordArray = Array(lNumberOfWords - 1);
  54. var lBytePosition = 0;
  55. var lByteCount = 0;
  56. while (lByteCount < lMessageLength) {
  57. lWordCount = (lByteCount - (lByteCount % 4)) / 4;
  58. lBytePosition = (lByteCount % 4) * 8;
  59. lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition));
  60. lByteCount++;
  61. }
  62. lWordCount = (lByteCount - (lByteCount % 4)) / 4;
  63. lBytePosition = (lByteCount % 4) * 8;
  64. lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
  65. lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
  66. lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
  67. return lWordArray;
  68. };
  69. var wordToHex = function(lValue) {
  70. var WordToHexValue = "",
  71. WordToHexValueTemp = "",
  72. lByte, lCount;
  73. for (lCount = 0; lCount <= 3; lCount++) {
  74. lByte = (lValue >>> (lCount * 8)) & 255;
  75. WordToHexValueTemp = "0" + lByte.toString(16);
  76. WordToHexValue = WordToHexValue + WordToHexValueTemp.substr(WordToHexValueTemp.length - 2, 2);
  77. }
  78. return WordToHexValue;
  79. };
  80. var uTF8Encode = function(string) {
  81. string = string.replace(/\x0d\x0a/g, "\x0a");
  82. var output = "";
  83. for (var n = 0; n < string.length; n++) {
  84. var c = string.charCodeAt(n);
  85. if (c < 128) {
  86. output += String.fromCharCode(c);
  87. } else if ((c > 127) && (c < 2048)) {
  88. output += String.fromCharCode((c >> 6) | 192);
  89. output += String.fromCharCode((c & 63) | 128);
  90. } else {
  91. output += String.fromCharCode((c >> 12) | 224);
  92. output += String.fromCharCode(((c >> 6) & 63) | 128);
  93. output += String.fromCharCode((c & 63) | 128);
  94. }
  95. }
  96. return output;
  97. };
  98.  
  99. function md5(string) {
  100. var x = Array();
  101. var k, AA, BB, CC, DD, a, b, c, d;
  102. var S11 = 7,
  103. S12 = 12,
  104. S13 = 17,
  105. S14 = 22;
  106. var S21 = 5,
  107. S22 = 9,
  108. S23 = 14,
  109. S24 = 20;
  110. var S31 = 4,
  111. S32 = 11,
  112. S33 = 16,
  113. S34 = 23;
  114. var S41 = 6,
  115. S42 = 10,
  116. S43 = 15,
  117. S44 = 21;
  118. string = uTF8Encode(string);
  119. x = convertToWordArray(string);
  120. a = 0x67452301;
  121. b = 0xEFCDAB89;
  122. c = 0x98BADCFE;
  123. d = 0x10325476;
  124. for (k = 0; k < x.length; k += 16) {
  125. AA = a;
  126. BB = b;
  127. CC = c;
  128. DD = d;
  129. a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);
  130. d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);
  131. c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB);
  132. b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);
  133. a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);
  134. d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);
  135. c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613);
  136. b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501);
  137. a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8);
  138. d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);
  139. c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);
  140. b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);
  141. a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122);
  142. d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193);
  143. c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E);
  144. b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821);
  145. a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);
  146. d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340);
  147. c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);
  148. b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);
  149. a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);
  150. d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);
  151. c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);
  152. b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);
  153. a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);
  154. d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);
  155. c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);
  156. b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);
  157. a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);
  158. d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);
  159. c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);
  160. b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);
  161. a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);
  162. d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681);
  163. c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);
  164. b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);
  165. a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);
  166. d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);
  167. c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);
  168. b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);
  169. a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);
  170. d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);
  171. c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);
  172. b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05);
  173. a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);
  174. d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);
  175. c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);
  176. b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);
  177. a = II(a, b, c, d, x[k + 0], S41, 0xF4292244);
  178. d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97);
  179. c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);
  180. b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039);
  181. a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3);
  182. d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);
  183. c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);
  184. b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1);
  185. a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);
  186. d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);
  187. c = II(c, d, a, b, x[k + 6], S43, 0xA3014314);
  188. b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);
  189. a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82);
  190. d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);
  191. c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);
  192. b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391);
  193. a = addUnsigned(a, AA);
  194. b = addUnsigned(b, BB);
  195. c = addUnsigned(c, CC);
  196. d = addUnsigned(d, DD);
  197. }
  198. var tempValue = wordToHex(a) + wordToHex(b) + wordToHex(c) + wordToHex(d);
  199. return tempValue.toLowerCase();
  200. }
  201.  
  202. //用于微信小程序
  203. module.exports = {
  204. md5: md5
  205. }
  206.  
  207. // http://zixuephp.net/static/js/md5.js
  208. // 在线测试,用前端js实现MD5()加密 http://www.zixuephp.net/uploads/file/20171102/1509614764989508.html

  

md5 js的更多相关文章

  1. JS分段上传文件(File)并使用MD5.js加密文件段用来后台校验

    HTML <form method="POST" name="form1" action="/mupload/upload/" enc ...

  2. 微信小程序引入md5.js

    今天给大家安利一下微信小程序引入md5.js的方法,不多说 md5.js在下面 直接复制到项目的utils/md5.js即可 /* * A JavaScript implementation of t ...

  3. JavaScript-Tool:jquery.md5.js

    ylbtech-JavaScript-Tool:jquery.md5.js 1.返回顶部 1. 引入js后 使用方法:document.write($.md5('1234')); 加密结果:81dc9 ...

  4. 前端(小程序)项目Aes.js/Md5.js加密的处理方法

    做项目中需要对前端数据加密传输这个时候需要用到前端加密的算法主要是:Aes.js,Md5.js 一.Vue项目用到的aes.js加密. 1.直接在index.html引入aes.js或者在npm in ...

  5. JavaScript-Tool:md5.js

    ylbtech-JavaScript-Tool:md5.js 1.返回顶部 1.md5.js /* CryptoJS v3.1.2 code.google.com/p/crypto-js (c) 20 ...

  6. vue项目中使用md5.js及base64.js

    一.在项目根目录下安装 npm install --save js-base64 npm install --save js-md5 二.在项目文件中引入 import md5 from 'js-md ...

  7. 如何在vue项目中使用md5.js及base64.js

    一.在项目根目录下安装 npm install --save js-base64 npm install --save js-md5 二.在项目文件中引入 import md5 from 'js-md ...

  8. 在vue项目中使用MD5.js

    1.安装 npm install --save js-md5 2.引入 import md5 from 'js-md5'; 3.使用 md5('holle') // bcecb35d0a12baad4 ...

  9. node 下载 md5.js

    命令:npm install js-md5

随机推荐

  1. CSRF verification failed. Request aborted. 表单提交方法为POST时的报错

    本人所用Django版本为1.11,在设置请求方法为POST时,遇到标题中的错误,尝试了多种方法,最终通过下面的操作来修复: 在template文件中添加图中红框部分 接着,导入csrf_exempt ...

  2. Uncaught ReferenceError: 板栗 is not defined at HTMLButtonElement.onclick (view:1)

    对JS传值一直以为都是随便传过去就行,直到今天遇到了中文传值的问题 中文传值不能够需要在调用的位置加 对于要传的值加单引号或者双引号 比如说下面这个样子,我这里还还记反斜杠注释 '<button ...

  3. HDU 5487 Difference of Languages

    Difference of Languages Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. ...

  4. hdu 4539

    #include<stdio.h> #include<string.h> ]; int s]; int main() { int i,j,n,m; int ch; while( ...

  5. VS Code 列编辑功能说明

    新版本v1.13.1或者附近的版本中的列编辑功能已经调整. 一.多光标插入功能 Alt+鼠标左键,添加多光标输入 二.自由多行选择 Alt键+鼠标左键拖动选择各行的部分内容 三.列选择 Shift+A ...

  6. 修改textfield的占位符颜色

    [self.titleField setValue:UIColorFromHEXWithAlpha(0x999999, 1) forKeyPath:@"_placeholderLabel.t ...

  7. Intersection--poj1410(判断线段与矩形的关系)

    http://poj.org/problem?id=1410 题目大意:给你一个线段和矩形的对角两点  如果相交就输出'T'  不想交就是'F' 注意: 1,给的矩形有可能不是左上 右下  所以要先判 ...

  8. 继续畅通工程--hdu1879(最小生成树 模板题)

    http://acm.hdu.edu.cn/showproblem.php?pid=1879 刚开始么看清题  以为就是n行  后来一看是n*(n-1)/2行   是输入错误  真是够够的 #incl ...

  9. union关键字和字节大小端序的确定

    union 关键字的用法与struct 的用法非常类似. union 维护足够的空间来置放多个数据成员中的“一种”,而不是为每一个数据成员配置空间,在union 中所有的数据成员共用一个空间,同一时间 ...

  10. Myeclipse配置jad

    下载地址:http://pan.baidu.com/s/1bnpMEuF 1.下载jad158g.win.zip 下载后解压.解压缩后将jad.exe拷贝到自定义的文件夹内:我这里用的是D:/jad/ ...