1. var hexcase = 0;
  2. var b64pad = "";
  3. var chrsz = 8;
  4. function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
  5. function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
  6. function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
  7. function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
  8. function calcMD5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
  9.  
  10. function core_md5(x, len)
  11. {
  12.  
  13. x[len >> 5] |= 0x80 << ((len) % 32);
  14. x[(((len + 64) >>> 9) << 4) + 14] = len;
  15. var a = 1732584193;
  16. var b = -271733879;
  17. var c = -1732584194;
  18. var d = 271733878;
  19. for(var i = 0; i < x.length; i += 16)
  20. {
  21. var olda = a;
  22. var oldb = b;
  23. var oldc = c;
  24. var oldd = d;
  25.  
  26. a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
  27. d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
  28. c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
  29. b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
  30. a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
  31. d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
  32. c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
  33. b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
  34. a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
  35. d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
  36. c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
  37. b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
  38. a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
  39. d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
  40. c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
  41. b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
  42. a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
  43. d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
  44. c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
  45. b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
  46. a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
  47. d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
  48. c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
  49. b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
  50. a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
  51. d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
  52. c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
  53. b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
  54. a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
  55. d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
  56. c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
  57. b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
  58. a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
  59. d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
  60. c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
  61. b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
  62. a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
  63. d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
  64. c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
  65. b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
  66. a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
  67. d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
  68. c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
  69. b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
  70. a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
  71. d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
  72. c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
  73. b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
  74. a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
  75. d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
  76. c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
  77. b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
  78. a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
  79. d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
  80. c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
  81. b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
  82. a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
  83. d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
  84. c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
  85. b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
  86. a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
  87. d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
  88. c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
  89. b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
  90.  
  91. a = safe_add(a, olda);
  92. b = safe_add(b, oldb);
  93. c = safe_add(c, oldc);
  94. d = safe_add(d, oldd);
  95. }
  96. return Array(a, b, c, d);
  97.  
  98. }
  99.  
  100. function md5_cmn(q, a, b, x, s, t)
  101. {
  102. return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
  103. }
  104. function md5_ff(a, b, c, d, x, s, t)
  105. {
  106. return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
  107. }
  108. function md5_gg(a, b, c, d, x, s, t)
  109. {
  110. return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
  111. }
  112. function md5_hh(a, b, c, d, x, s, t)
  113. {
  114. return md5_cmn(b ^ c ^ d, a, b, x, s, t);
  115. }
  116. function md5_ii(a, b, c, d, x, s, t)
  117. {
  118. return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
  119. }
  120.  
  121. function core_hmac_md5(key, data)
  122. {
  123. var bkey = str2binl(key);
  124. if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);
  125.  
  126. var ipad = Array(16), opad = Array(16);
  127. for(var i = 0; i < 16; i++)
  128. {
  129. ipad[i] = bkey[i] ^ 0x36363636;
  130. opad[i] = bkey[i] ^ 0x5C5C5C5C;
  131. }
  132.  
  133. var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
  134. return core_md5(opad.concat(hash), 512 + 128);
  135. }
  136.  
  137. function safe_add(x, y)
  138. {
  139. var lsw = (x & 0xFFFF) + (y & 0xFFFF);
  140. var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
  141. return (msw << 16) | (lsw & 0xFFFF);
  142. }
  143.  
  144. function bit_rol(num, cnt)
  145. {
  146. return (num << cnt) | (num >>> (32 - cnt));
  147. }
  148.  
  149. function str2binl(str)
  150. {
  151. var bin = Array();
  152. var mask = (1 << chrsz) - 1;
  153. for(var i = 0; i < str.length * chrsz; i += chrsz)
  154. bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
  155. return bin;
  156. }
  157.  
  158. function binl2hex(binarray)
  159. {
  160. var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
  161. var str = "";
  162. for(var i = 0; i < binarray.length * 4; i++)
  163. {
  164. str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
  165. hex_tab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF);
  166. }
  167. return str;
  168. }
  169.  
  170. function binl2b64(binarray)
  171. {
  172. var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  173. var str = "";
  174. for(var i = 0; i < binarray.length * 4; i += 3)
  175. {
  176. var triplet = (((binarray[i >> 2] >> 8 * ( i %4)) & 0xFF) << 16)
  177. | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
  178. | ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
  179. for(var j = 0; j < 4; j++)
  180. {
  181. if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
  182. else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
  183. }
  184. }
  185. return str;
  186. }

MD5加密 js文件的更多相关文章

  1. MD5工具类,提供字符串MD5加密、文件MD5值获取(校验)功能

    MD5工具类,提供字符串MD5加密(校验).文件MD5值获取(校验)功能 : package com.yzu.utils; import java.io.File; import java.io.Fi ...

  2. MD5加密获得文件的MD5码

    哈希函数将任意长度的二进制字符串映射为固定长度的小型二进制字符串.加密哈希函数有这样一个属性:在计算不大可能找到散列为相同的值的两个不同的输入:也就是说,两组数据的哈希值仅在对应的数据也匹配时才会匹配 ...

  3. JS使用MD5加密

    MD5加密JS代码 /* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message * Digest Algor ...

  4. asp.net && javascript MD5加密

    /* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message * Digest Algorithm, as d ...

  5. JavaScript的MD5加密

    1.首先要到http://pajhome.org.uk/crypt/md5/下载js文件. 2.在页面文件中添加: <script type="text/javascript" ...

  6. JS中使用MD5加密

    下载 MD5 使用MD5加密的方法:下载md5.js文件,在网页中引用该文件: < script type="text/javascript" src="md5.j ...

  7. Js实现MD5加密

    在页面中引用md5.js文件,调用方法为 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8&qu ...

  8. C# js asp.net 字符串MD5加密GetMD5Hash

    赵小虎老师 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sy ...

  9. JS实现的base64加密、md5加密及sha1加密详解

    1.base64加密 在页面中引入base64.js文件,调用方法为: <!DOCTYPE HTML> <html> <head> <meta charset ...

随机推荐

  1. java如何避免死锁

    在有些情况下死锁是可以避免的.本文将展示三种用于避免死锁的技术: 加锁顺序 加锁时限 死锁检测 加锁顺序 当多个线程需要相同的一些锁,但是按照不同的顺序加锁,死锁就很容易发生. 如果能确保所有的线程都 ...

  2. 简单的遮罩层效果,user登陆显示效果

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  3. Day1 老男孩python自动化运维课程学习笔记

    2017年1月7日老男孩python自动化运维课程正式开课 第一天学习内容: 上午 1.python语言的基本介绍 python语言是一门解释型的语言,与1989年的圣诞节期间,吉多·范罗苏姆为了在阿 ...

  4. 百度的hao123.com篡改浏览器首页,解决办法

    快捷方式右键找到chrome.exe, 把chorme.exe修改成别的名字例如 chromeFuckHao123.exe 就OK了. hao123是用病毒的形式查找chrome.exe然后进程注入的 ...

  5. magento模块的建立

    所有路径都是从根目录开始的: 1.建立模块的配置文件: 路径:app/etc/models/下建一个文件(模块名称是Orderlottery)为Bf170_Orderlottery.xml,内容如下: ...

  6. java基础:int和integer区别

    int是基础数据类型: integer是包装类,里面包含一些基础的方法,最常见的就是数据转换: 比如int转String: int a=0: String b=Integer.toString(a):

  7. Python操作redis、memcache和ORM框架_Day13

    一.memcache Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速 ...

  8. [转]Python跳过第一行读取文件内容

    from itertools import islice file_name='XXXX' input_file = open(file_name) for line in islice(input_ ...

  9. Web前端优质学习网站

    * 官方:           W3C:http://www.w3.org/           ECMA:http://www.ecmascript.org/           Mozilla:h ...

  10. CodeForces 706E Working routine

    十字链表. 开一个十字链表,矩阵中每一格作为一个节点,记录五个量: $s[i].L$:$i$节点左边的节点编号 $s[i].R$:$i$节点右边的节点编号 $s[i].U$:$i$节点上面的节点编号 ...