js 生成md5
原理比较复杂,不过人类区别与其他动物是因为会用工具,所以,把下面代码复制保存一下就好了。
<script>
var hex_chr = "0123456789abcdef"; function rhex(num) {
str = "";
for (j = ; j <= ; j++)
str += hex_chr.charAt((num >> (j * + )) & 0x0F) +
hex_chr.charAt((num >> (j * )) & 0x0F);
return str;
} function str2blks_MD5(str) {
nblk = ((str.length + ) >> ) + ;
blks = new Array(nblk * );
for (i = ; i < nblk * ; i++) blks[i] = ;
for (i = ; i < str.length; i++)
blks[i >> ] |= str.charCodeAt(i) << ((i % ) * );
blks[i >> ] |= 0x80 << ((i % ) * );
blks[nblk * - ] = str.length * ;
return blks;
} function add(x, y) {
var lsw = (x & 0xFFFF) + (y & 0xFFFF);
var msw = (x >> ) + (y >> ) + (lsw >> );
return (msw << ) | (lsw & 0xFFFF);
} function rol(num, cnt) {
return (num << cnt) | (num >>> ( - cnt));
} function cmn(q, a, b, x, s, t) {
return add(rol(add(add(a, q), add(x, t)), s), b);
} function ff(a, b, c, d, x, s, t) {
return cmn((b & c) | ((~b) & d), a, b, x, s, t);
} function gg(a, b, c, d, x, s, t) {
return cmn((b & d) | (c & (~d)), a, b, x, s, t);
} function hh(a, b, c, d, x, s, t) {
return cmn(b ^ c ^ d, a, b, x, s, t);
} function ii(a, b, c, d, x, s, t) {
return cmn(c ^ (b | (~d)), a, b, x, s, t);
} function MD5(str) {
var x = str2blks_MD5(str);
var a = ;
var b = -;
var c = -;
var d = ;
for (i = ; i < x.length; i += ) {
var olda = a;
var oldb = b;
var oldc = c;
var oldd = d;
a = ff(a, b, c, d, x[i + ], , -);
d = ff(d, a, b, c, x[i + ], , -);
c = ff(c, d, a, b, x[i + ], , );
b = ff(b, c, d, a, x[i + ], , -);
a = ff(a, b, c, d, x[i + ], , -);
d = ff(d, a, b, c, x[i + ], , );
c = ff(c, d, a, b, x[i + ], , -);
b = ff(b, c, d, a, x[i + ], , -);
a = ff(a, b, c, d, x[i + ], , );
d = ff(d, a, b, c, x[i + ], , -);
c = ff(c, d, a, b, x[i + ], , -);
b = ff(b, c, d, a, x[i + ], , -);
a = ff(a, b, c, d, x[i + ], , );
d = ff(d, a, b, c, x[i + ], , -);
c = ff(c, d, a, b, x[i + ], , -);
b = ff(b, c, d, a, x[i + ], , );
a = gg(a, b, c, d, x[i + ], , -);
d = gg(d, a, b, c, x[i + ], , -);
c = gg(c, d, a, b, x[i + ], , );
b = gg(b, c, d, a, x[i + ], , -);
a = gg(a, b, c, d, x[i + ], , -);
d = gg(d, a, b, c, x[i + ], , );
c = gg(c, d, a, b, x[i + ], , -);
b = gg(b, c, d, a, x[i + ], , -);
a = gg(a, b, c, d, x[i + ], , );
d = gg(d, a, b, c, x[i + ], , -);
c = gg(c, d, a, b, x[i + ], , -);
b = gg(b, c, d, a, x[i + ], , );
a = gg(a, b, c, d, x[i + ], , -);
d = gg(d, a, b, c, x[i + ], , -);
c = gg(c, d, a, b, x[i + ], , );
b = gg(b, c, d, a, x[i + ], , -);
a = hh(a, b, c, d, x[i + ], , -);
d = hh(d, a, b, c, x[i + ], , -);
c = hh(c, d, a, b, x[i + ], , );
b = hh(b, c, d, a, x[i + ], , -);
a = hh(a, b, c, d, x[i + ], , -);
d = hh(d, a, b, c, x[i + ], , );
c = hh(c, d, a, b, x[i + ], , -);
b = hh(b, c, d, a, x[i + ], , -);
a = hh(a, b, c, d, x[i + ], , );
d = hh(d, a, b, c, x[i + ], , -);
c = hh(c, d, a, b, x[i + ], , -);
b = hh(b, c, d, a, x[i + ], , );
a = hh(a, b, c, d, x[i + ], , -);
d = hh(d, a, b, c, x[i + ], , -);
c = hh(c, d, a, b, x[i + ], , );
b = hh(b, c, d, a, x[i + ], , -);
a = ii(a, b, c, d, x[i + ], , -);
d = ii(d, a, b, c, x[i + ], , );
c = ii(c, d, a, b, x[i + ], , -);
b = ii(b, c, d, a, x[i + ], , -);
a = ii(a, b, c, d, x[i + ], , );
d = ii(d, a, b, c, x[i + ], , -);
c = ii(c, d, a, b, x[i + ], , -);
b = ii(b, c, d, a, x[i + ], , -);
a = ii(a, b, c, d, x[i + ], , );
d = ii(d, a, b, c, x[i + ], , -);
c = ii(c, d, a, b, x[i + ], , -);
b = ii(b, c, d, a, x[i + ], , );
a = ii(a, b, c, d, x[i + ], , -);
d = ii(d, a, b, c, x[i + ], , -);
c = ii(c, d, a, b, x[i + ], , );
b = ii(b, c, d, a, x[i + ], , -);
a = add(a, olda);
b = add(b, oldb);
c = add(c, oldc);
d = add(d, oldd);
}
return rhex(a) + rhex(b) + rhex(c) + rhex(d);
}
</script>
js 生成md5的更多相关文章
- 【转】js生成接口请求参数签名加密
js生成接口请求参数签名加密 签名算法规则: 第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=v ...
- js生成接口请求参数签名加密
js生成接口请求参数签名加密 定义规则:将所有参数字段按首字母排序, 拼接成key1 = value1 & key2 = value2的格式,再在末尾拼接上key = appSecret, 再 ...
- postman发送HTTP请求自动生成MD5签名
POSTMAN是常用的接口测试工具 如何进行MD5签名呢? 代码如下: /** * 通过request.data获取body的内容,这个是postman内置变量 * 常用内置参数如下: * reque ...
- 利用scrapy-splash爬取JS生成的动态页面
目前,为了加速页面的加载速度,页面的很多部分都是用JS生成的,而对于用scrapy爬虫来说就是一个很大的问题,因为scrapy没有JS engine,所以爬取的都是静态页面,对于JS生成的动态页面都无 ...
- JS生成二维码,允许中文转码
一.使用jquery-qrcode生成二维码 先简单说一下jquery-qrcode,这个开源的三方库(可以从https://github.com/jeromeetienne/jquery-qrcod ...
- js生成随即字符串
js生成随即字符串 /* *js生成随即字符串原来如此简单 *toString() radix argument must be between 2 and 36 */ function uuid() ...
- js生成[n,m]的随机数
一.预备知识 Math.ceil(); //向上取整. Math.floor(); //向下取整. Math.round(); //四舍五入. Math.random(); //0.0 ~ 1 ...
- JS生成随机数的各种函数
第一种方法 /* *@desc:生成随机字符串 *@remark:toString方法可以接收一个基数作为参数的原理,这个基数从2到36封顶.如果不指定,默认基数是10进制 */ function g ...
- js生成当前时间
js生成当前时间 var today=new Date(); function itArray(){ this.length=itArray.arguments.length for(var i=0; ...
随机推荐
- epoll_wait 返回值学习以及epoll使用学习
https://blog.csdn.net/analogous_love/article/details/88721574
- Part 1: Setting up ARM GNU tool chain
ARM Build Tools GNU Tools for ARM Embedded Processors. GNU Make for Windows. GNU Tools for ARM Embed ...
- 【爬虫】-爬取猫眼TOP100
原文崔庆才<python3网络爬虫实战> 本文为自学记录,如有侵权,请联系删除 目标: 熟悉正则表达式,以及爬虫流程 获取猫眼TOP100榜单 1.网站分析 目标站点为http://www ...
- PHP面向对象的基本思路
第一步:识别对象 ——任何实体都可以被识别为一个对象 第二步:识别对象的属性 ——对象里面存储的数据被识别为属性 ——对于不同的业务逻辑,关注的数据不同,独享里面存储的属性也不同 第三步:识别对象的行 ...
- Druid SQL 解析器概览
概览 Druid 的官方 wiki 对 SQL 解析器部分的讲解内容并不多,但虽然不多,也有利于完全没接触过 Druid 的人对 SQL 解析器有个初步的印象. 说到解析器,脑海里便很容易浮现 par ...
- hibernate 中对象的3种状态总结
1.Hibernate把对象分文三种状态:Transient(临时状态).Persistent(持久化状态).Detached(游离状态). 1)Transient:刚刚new出来的对象,就是Tran ...
- maven打包报错 ERROR: No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id
打开pom.xml 在build标签中 增加 <defaultGoal>compile</defaultGoal> 如下: <build><defaultGo ...
- oracle 自动表分区
Oracle 新功能自动分区: 实现代码: create table t_interval partition by range(created)//dba_objects 视图的一个字段 inter ...
- 连锁咖啡厅B/S架构点餐系统开发
需求号:5255128 http://task.zhubajie.com/5255128/ 具体要求: 网站用途:连锁咖啡厅B/S架构点餐系统开发开发周期:1.5个月功能要求: 支持触摸屏点菜.无线P ...
- .net iis excel导出问题
碰到几个问题的解决方法 1.当我远程服务器时才可以导出excel!!关闭了远程就不行... 解决:运行mmc -32组件服务 ->DCOM Config->Microsoft Excel ...