原理比较复杂,不过人类区别与其他动物是因为会用工具,所以,把下面代码复制保存一下就好了。

  1. <script>
  2. var hex_chr = "0123456789abcdef";
  3.  
  4. function rhex(num) {
  5. str = "";
  6. for (j = ; j <= ; j++)
  7. str += hex_chr.charAt((num >> (j * + )) & 0x0F) +
  8. hex_chr.charAt((num >> (j * )) & 0x0F);
  9. return str;
  10. }
  11.  
  12. function str2blks_MD5(str) {
  13. nblk = ((str.length + ) >> ) + ;
  14. blks = new Array(nblk * );
  15. for (i = ; i < nblk * ; i++) blks[i] = ;
  16. for (i = ; i < str.length; i++)
  17. blks[i >> ] |= str.charCodeAt(i) << ((i % ) * );
  18. blks[i >> ] |= 0x80 << ((i % ) * );
  19. blks[nblk * - ] = str.length * ;
  20. return blks;
  21. }
  22.  
  23. function add(x, y) {
  24. var lsw = (x & 0xFFFF) + (y & 0xFFFF);
  25. var msw = (x >> ) + (y >> ) + (lsw >> );
  26. return (msw << ) | (lsw & 0xFFFF);
  27. }
  28.  
  29. function rol(num, cnt) {
  30. return (num << cnt) | (num >>> ( - cnt));
  31. }
  32.  
  33. function cmn(q, a, b, x, s, t) {
  34. return add(rol(add(add(a, q), add(x, t)), s), b);
  35. }
  36.  
  37. function ff(a, b, c, d, x, s, t) {
  38. return cmn((b & c) | ((~b) & d), a, b, x, s, t);
  39. }
  40.  
  41. function gg(a, b, c, d, x, s, t) {
  42. return cmn((b & d) | (c & (~d)), a, b, x, s, t);
  43. }
  44.  
  45. function hh(a, b, c, d, x, s, t) {
  46. return cmn(b ^ c ^ d, a, b, x, s, t);
  47. }
  48.  
  49. function ii(a, b, c, d, x, s, t) {
  50. return cmn(c ^ (b | (~d)), a, b, x, s, t);
  51. }
  52.  
  53. function MD5(str) {
  54. var x = str2blks_MD5(str);
  55. var a = ;
  56. var b = -;
  57. var c = -;
  58. var d = ;
  59. for (i = ; i < x.length; i += ) {
  60. var olda = a;
  61. var oldb = b;
  62. var oldc = c;
  63. var oldd = d;
  64. a = ff(a, b, c, d, x[i + ], , -);
  65. d = ff(d, a, b, c, x[i + ], , -);
  66. c = ff(c, d, a, b, x[i + ], , );
  67. b = ff(b, c, d, a, x[i + ], , -);
  68. a = ff(a, b, c, d, x[i + ], , -);
  69. d = ff(d, a, b, c, x[i + ], , );
  70. c = ff(c, d, a, b, x[i + ], , -);
  71. b = ff(b, c, d, a, x[i + ], , -);
  72. a = ff(a, b, c, d, x[i + ], , );
  73. d = ff(d, a, b, c, x[i + ], , -);
  74. c = ff(c, d, a, b, x[i + ], , -);
  75. b = ff(b, c, d, a, x[i + ], , -);
  76. a = ff(a, b, c, d, x[i + ], , );
  77. d = ff(d, a, b, c, x[i + ], , -);
  78. c = ff(c, d, a, b, x[i + ], , -);
  79. b = ff(b, c, d, a, x[i + ], , );
  80. a = gg(a, b, c, d, x[i + ], , -);
  81. d = gg(d, a, b, c, x[i + ], , -);
  82. c = gg(c, d, a, b, x[i + ], , );
  83. b = gg(b, c, d, a, x[i + ], , -);
  84. a = gg(a, b, c, d, x[i + ], , -);
  85. d = gg(d, a, b, c, x[i + ], , );
  86. c = gg(c, d, a, b, x[i + ], , -);
  87. b = gg(b, c, d, a, x[i + ], , -);
  88. a = gg(a, b, c, d, x[i + ], , );
  89. d = gg(d, a, b, c, x[i + ], , -);
  90. c = gg(c, d, a, b, x[i + ], , -);
  91. b = gg(b, c, d, a, x[i + ], , );
  92. a = gg(a, b, c, d, x[i + ], , -);
  93. d = gg(d, a, b, c, x[i + ], , -);
  94. c = gg(c, d, a, b, x[i + ], , );
  95. b = gg(b, c, d, a, x[i + ], , -);
  96. a = hh(a, b, c, d, x[i + ], , -);
  97. d = hh(d, a, b, c, x[i + ], , -);
  98. c = hh(c, d, a, b, x[i + ], , );
  99. b = hh(b, c, d, a, x[i + ], , -);
  100. a = hh(a, b, c, d, x[i + ], , -);
  101. d = hh(d, a, b, c, x[i + ], , );
  102. c = hh(c, d, a, b, x[i + ], , -);
  103. b = hh(b, c, d, a, x[i + ], , -);
  104. a = hh(a, b, c, d, x[i + ], , );
  105. d = hh(d, a, b, c, x[i + ], , -);
  106. c = hh(c, d, a, b, x[i + ], , -);
  107. b = hh(b, c, d, a, x[i + ], , );
  108. a = hh(a, b, c, d, x[i + ], , -);
  109. d = hh(d, a, b, c, x[i + ], , -);
  110. c = hh(c, d, a, b, x[i + ], , );
  111. b = hh(b, c, d, a, x[i + ], , -);
  112. a = ii(a, b, c, d, x[i + ], , -);
  113. d = ii(d, a, b, c, x[i + ], , );
  114. c = ii(c, d, a, b, x[i + ], , -);
  115. b = ii(b, c, d, a, x[i + ], , -);
  116. a = ii(a, b, c, d, x[i + ], , );
  117. d = ii(d, a, b, c, x[i + ], , -);
  118. c = ii(c, d, a, b, x[i + ], , -);
  119. b = ii(b, c, d, a, x[i + ], , -);
  120. a = ii(a, b, c, d, x[i + ], , );
  121. d = ii(d, a, b, c, x[i + ], , -);
  122. c = ii(c, d, a, b, x[i + ], , -);
  123. b = ii(b, c, d, a, x[i + ], , );
  124. a = ii(a, b, c, d, x[i + ], , -);
  125. d = ii(d, a, b, c, x[i + ], , -);
  126. c = ii(c, d, a, b, x[i + ], , );
  127. b = ii(b, c, d, a, x[i + ], , -);
  128. a = add(a, olda);
  129. b = add(b, oldb);
  130. c = add(c, oldc);
  131. d = add(d, oldd);
  132. }
  133. return rhex(a) + rhex(b) + rhex(c) + rhex(d);
  134. }
  135. </script>

js 生成md5的更多相关文章

  1. 【转】js生成接口请求参数签名加密

    js生成接口请求参数签名加密 签名算法规则: 第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=v ...

  2. js生成接口请求参数签名加密

    js生成接口请求参数签名加密 定义规则:将所有参数字段按首字母排序, 拼接成key1 = value1 & key2 = value2的格式,再在末尾拼接上key = appSecret, 再 ...

  3. postman发送HTTP请求自动生成MD5签名

    POSTMAN是常用的接口测试工具 如何进行MD5签名呢? 代码如下: /** * 通过request.data获取body的内容,这个是postman内置变量 * 常用内置参数如下: * reque ...

  4. 利用scrapy-splash爬取JS生成的动态页面

    目前,为了加速页面的加载速度,页面的很多部分都是用JS生成的,而对于用scrapy爬虫来说就是一个很大的问题,因为scrapy没有JS engine,所以爬取的都是静态页面,对于JS生成的动态页面都无 ...

  5. JS生成二维码,允许中文转码

    一.使用jquery-qrcode生成二维码 先简单说一下jquery-qrcode,这个开源的三方库(可以从https://github.com/jeromeetienne/jquery-qrcod ...

  6. js生成随即字符串

    js生成随即字符串 /* *js生成随即字符串原来如此简单 *toString() radix argument must be between 2 and 36 */ function uuid() ...

  7. js生成[n,m]的随机数

    一.预备知识 Math.ceil();  //向上取整. Math.floor();  //向下取整. Math.round();  //四舍五入. Math.random();  //0.0 ~ 1 ...

  8. JS生成随机数的各种函数

    第一种方法 /* *@desc:生成随机字符串 *@remark:toString方法可以接收一个基数作为参数的原理,这个基数从2到36封顶.如果不指定,默认基数是10进制 */ function g ...

  9. js生成当前时间

    js生成当前时间 var today=new Date(); function itArray(){ this.length=itArray.arguments.length for(var i=0; ...

随机推荐

  1. redis cluster 部署过程

    一, 特点 高性能: 1.在多分片节点中,将16384个槽位,均匀分布到多个分片节点中 2.存数据时,将key做crc16(key),然后和16384进行取模,得出槽位值(0-16383之间) 3.根 ...

  2. <数据挖掘导论>读书笔记8FP树

    1FP树

  3. Java入门系列-25-NIO(实现非阻塞网络通信)

    还记得之前介绍NIO时对比传统IO的一大特点吗?就是NIO是非阻塞式的,这篇文章带大家来看一下非阻塞的网络操作. 补充:以数组的形式使用缓冲区 package testnio; import java ...

  4. js验证港澳居民通行证号码是否合规

    需求:最近要做实名验证的功能,但是验证我们要验证严谨一点,参考了网上关于验证港澳居民通行证号码的代码,总结一下. 代码: function checkHKMacao(code){ var tip = ...

  5. JS实现中英文混合文字溢出友好截取功能

    在显示字符串的时候,避免字符串过长往往会对字符串进行截取操作,通常会用到js的 substr 或者 substring方法, 以及 字符串的length属性 substr() 方法可在字符串中抽取从 ...

  6. Sequence contains no elements : LINQ error

    1.错误意思: 出现错误的原因是:你要从一个null中取的数据. 2.错误的处理 1,使用FirstOrDefault() 来代替 First() 2.使用SingleOrDefault 来代替 Si ...

  7. [android] 练习viewpagerindicator的使用(一)

    主要是学习一下使用这个库 activity_main.xml <?xml version="1.0" encoding="utf-8"?> < ...

  8. 一、快速构建Springboot应用

    1.基本概念 Spring的出现对于企业级应用来说是一个福音,它让企业级应用开发更加地简单.但是随着Spring的不断发展,它也慢慢变得越来越重.即使apache出品的maven工具能够使得项目创建. ...

  9. 流畅的python和cookbook学习笔记(九)

    1.减少可调用对象的参数个数,使用functools.partial冻结参数 使用functools.partial(),可以固定一个或者多个值,减少调用参数. >>> def sp ...

  10. zookeeper【6】负载均衡

    负载均衡是一种手段,用来把对某种资源的访问分摊给不同的设备,从而减轻单点的压力. 架构图 图中左侧为ZooKeeper集群,右侧上方为工作服务器,下面为客户端.每台工作服务器在启动时都会去zookee ...