当前位置: 首页 > 编程日记 > 正文

[js] MD5算法

js版md5算法:

/**
*
*  MD5 (Message-Digest Algorithm)
*  http://www.webtoolkit.info/
*
**/var MD5 = function (string) {function RotateLeft(lValue, iShiftBits) {return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits));}function AddUnsigned(lX,lY) {var lX4,lY4,lX8,lY8,lResult;lX8 = (lX & 0x80000000);lY8 = (lY & 0x80000000);lX4 = (lX & 0x40000000);lY4 = (lY & 0x40000000);lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF);if (lX4 & lY4) {return (lResult ^ 0x80000000 ^ lX8 ^ lY8);}if (lX4 | lY4) {if (lResult & 0x40000000) {return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);} else {return (lResult ^ 0x40000000 ^ lX8 ^ lY8);}} else {return (lResult ^ lX8 ^ lY8);}}function F(x,y,z) { return (x & y) | ((~x) & z); }function G(x,y,z) { return (x & z) | (y & (~z)); }function H(x,y,z) { return (x ^ y ^ z); }function I(x,y,z) { return (y ^ (x | (~z))); }function FF(a,b,c,d,x,s,ac) {a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));return AddUnsigned(RotateLeft(a, s), b);};function GG(a,b,c,d,x,s,ac) {a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));return AddUnsigned(RotateLeft(a, s), b);};function HH(a,b,c,d,x,s,ac) {a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));return AddUnsigned(RotateLeft(a, s), b);};function II(a,b,c,d,x,s,ac) {a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));return AddUnsigned(RotateLeft(a, s), b);};function ConvertToWordArray(string) {var lWordCount;var lMessageLength = string.length;var lNumberOfWords_temp1=lMessageLength + 8;var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64;var lNumberOfWords = (lNumberOfWords_temp2+1)*16;var lWordArray=Array(lNumberOfWords-1);var lBytePosition = 0;var lByteCount = 0;while ( lByteCount < lMessageLength ) {lWordCount = (lByteCount-(lByteCount % 4))/4;lBytePosition = (lByteCount % 4)*8;lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount)<<lBytePosition));lByteCount++;}lWordCount = (lByteCount-(lByteCount % 4))/4;lBytePosition = (lByteCount % 4)*8;lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition);lWordArray[lNumberOfWords-2] = lMessageLength<<3;lWordArray[lNumberOfWords-1] = lMessageLength>>>29;return lWordArray;};function WordToHex(lValue) {var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;for (lCount = 0;lCount<=3;lCount++) {lByte = (lValue>>>(lCount*8)) & 255;WordToHexValue_temp = "0" + lByte.toString(16);WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);}return WordToHexValue;};function Utf8Encode(string) {string = string.replace(/\r\n/g,"\n");var utftext = "";for (var n = 0; n < string.length; n++) {var c = string.charCodeAt(n);if (c < 128) {utftext += String.fromCharCode(c);}else if((c > 127) && (c < 2048)) {utftext += String.fromCharCode((c >> 6) | 192);utftext += String.fromCharCode((c & 63) | 128);}else {utftext += String.fromCharCode((c >> 12) | 224);utftext += String.fromCharCode(((c >> 6) & 63) | 128);utftext += String.fromCharCode((c & 63) | 128);}}return utftext;};var x=Array();var k,AA,BB,CC,DD,a,b,c,d;var S11=7, S12=12, S13=17, S14=22;var S21=5, S22=9 , S23=14, S24=20;var S31=4, S32=11, S33=16, S34=23;var S41=6, S42=10, S43=15, S44=21;string = Utf8Encode(string);x = ConvertToWordArray(string);a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;for (k=0;k<x.length;k+=16) {AA=a; BB=b; CC=c; DD=d;a=FF(a,b,c,d,x[k+0], S11,0xD76AA478);d=FF(d,a,b,c,x[k+1], S12,0xE8C7B756);c=FF(c,d,a,b,x[k+2], S13,0x242070DB);b=FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE);a=FF(a,b,c,d,x[k+4], S11,0xF57C0FAF);d=FF(d,a,b,c,x[k+5], S12,0x4787C62A);c=FF(c,d,a,b,x[k+6], S13,0xA8304613);b=FF(b,c,d,a,x[k+7], S14,0xFD469501);a=FF(a,b,c,d,x[k+8], S11,0x698098D8);d=FF(d,a,b,c,x[k+9], S12,0x8B44F7AF);c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);a=FF(a,b,c,d,x[k+12],S11,0x6B901122);d=FF(d,a,b,c,x[k+13],S12,0xFD987193);c=FF(c,d,a,b,x[k+14],S13,0xA679438E);b=FF(b,c,d,a,x[k+15],S14,0x49B40821);a=GG(a,b,c,d,x[k+1], S21,0xF61E2562);d=GG(d,a,b,c,x[k+6], S22,0xC040B340);c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);b=GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA);a=GG(a,b,c,d,x[k+5], S21,0xD62F105D);d=GG(d,a,b,c,x[k+10],S22,0x2441453);c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);b=GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8);a=GG(a,b,c,d,x[k+9], S21,0x21E1CDE6);d=GG(d,a,b,c,x[k+14],S22,0xC33707D6);c=GG(c,d,a,b,x[k+3], S23,0xF4D50D87);b=GG(b,c,d,a,x[k+8], S24,0x455A14ED);a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905);d=GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8);c=GG(c,d,a,b,x[k+7], S23,0x676F02D9);b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);a=HH(a,b,c,d,x[k+5], S31,0xFFFA3942);d=HH(d,a,b,c,x[k+8], S32,0x8771F681);c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122);b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C);a=HH(a,b,c,d,x[k+1], S31,0xA4BEEA44);d=HH(d,a,b,c,x[k+4], S32,0x4BDECFA9);c=HH(c,d,a,b,x[k+7], S33,0xF6BB4B60);b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6);d=HH(d,a,b,c,x[k+0], S32,0xEAA127FA);c=HH(c,d,a,b,x[k+3], S33,0xD4EF3085);b=HH(b,c,d,a,x[k+6], S34,0x4881D05);a=HH(a,b,c,d,x[k+9], S31,0xD9D4D039);d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);b=HH(b,c,d,a,x[k+2], S34,0xC4AC5665);a=II(a,b,c,d,x[k+0], S41,0xF4292244);d=II(d,a,b,c,x[k+7], S42,0x432AFF97);c=II(c,d,a,b,x[k+14],S43,0xAB9423A7);b=II(b,c,d,a,x[k+5], S44,0xFC93A039);a=II(a,b,c,d,x[k+12],S41,0x655B59C3);d=II(d,a,b,c,x[k+3], S42,0x8F0CCC92);c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D);b=II(b,c,d,a,x[k+1], S44,0x85845DD1);a=II(a,b,c,d,x[k+8], S41,0x6FA87E4F);d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);c=II(c,d,a,b,x[k+6], S43,0xA3014314);b=II(b,c,d,a,x[k+13],S44,0x4E0811A1);a=II(a,b,c,d,x[k+4], S41,0xF7537E82);d=II(d,a,b,c,x[k+11],S42,0xBD3AF235);c=II(c,d,a,b,x[k+2], S43,0x2AD7D2BB);b=II(b,c,d,a,x[k+9], S44,0xEB86D391);a=AddUnsigned(a,AA);b=AddUnsigned(b,BB);c=AddUnsigned(c,CC);d=AddUnsigned(d,DD);}var temp = WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);return temp.toLowerCase();
};console.log(MD5('12341234'));

转载于:https://www.cnblogs.com/mjian/p/9250127.html

相关文章:

vue中的时间过滤器

//全局过滤器&#xff0c;进行时间的格式化//所谓的全局过滤器即使所有的vue实例都共享的Vue.filter(dateFormat ,function(dateStr, pattern""){//根据给定的时间字符串&#xff0c;得到特定的时间var dt new Date(dateStr)//yyy---mm-ddvar y dt.getFullYear() /…

windows线程同步-原子操作-Interlocked系列函数(用户模式)

Interlocked系列函数用来保证原子访问。InterlockedExchangeAdd提供保证long类型的原子操作。InterlockedExchangeAdd64提供long long 64位的原子操作。搞不懂为什么不提供int类型的&#xff0c;int类型转换成long类型就是2个不同内存地址的变量&#xff0c;再来对long类型进行…

java 比较器comparator_Java中比较器的使用Compare和Comparator

Comparable和Comparator接口都是为了对类进行比较&#xff0c;众所周知&#xff0c;诸如Integer&#xff0c;double等基本数据类型&#xff0c;java可以对他们进行比较&#xff0c;而对于类的比较&#xff0c;需要人工定义比较用到的字段比较逻辑。可以把Comparable理解为内部比…

20160127:开始学VBA:(三)、判断语句

IIF函数判断 Sub 判断4() Range("a3") IIf(Range("a1") < 0, "负数或零", "负数")End Sub Sub 判断1() 单条件判断 If Range("a1").Value > 0 Then Range("b1") "正数" Else Range(…

java jdk中的归并排序实现

在Arrays.java中的sort中public static void sort(Object[] a, int fromIndex, int toIndex) {if (LegacyMergeSort.userRequested)legacyMergeSort(a, fromIndex, toIndex);elseComparableTimSort.sort(a, fromIndex, toIndex);}/** To be removed in a future release. */pri…

LeetCode.3-最长无重复字符子串(Longest Substring Without Repeating Characters)

这是悦乐书的第341次更新&#xff0c;第365篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Medium级别的第2题Longest Substring Without Repeating Characters&#xff08;顺位题号是3&#xff09;。给定一个字符串&#xff0c;找到最长无重复字符子字符串的长度。例如&am…

java代码操作git_JGit--实现Git命令操作的Java API

问题来源:最近在做一个项目&#xff0c;其中有一块需要用户上传代码到服务器中&#xff0c;然后分析用户所传的代码&#xff0c;传代码最直接的方式就是用户打个包上传&#xff0c;但是后期再分析代码的时候还要代码实现解压上传的代码&#xff0c;操作起来比较复杂。解决方案与…

Python学习(一) 安装,环境搭建,IDE

第一篇废话太多了&#xff0c;我的博客最主要的是给自己看的&#xff0c;大家觉得还凑合也可以看看&#xff0c;能说自己想法的就更好了&#xff0c;因为一个人的思想是有局限性的。集思广益&#xff0c;自己的认知才不会被禁锢。 注&#xff1a;其他的系统没装&#xff0c;在W…

桑叶黑芝麻糊,从头到脚通补

人体通补手册:丹道医学中的养命之术/武国忠著. —南京&#xff1a;江苏人民出版社&#xff0c;2009.8&#xff08;国医健康绝学系列&#xff09;ISBN 978-7-214-05938-3 桑叶黑芝麻糊&#xff0c;从头到脚通补 桑叶味甘、苦&#xff0c;性寒&#xff0c;可以入肝、肺经&#xf…

CSS jQuery制作漂亮的文字模糊效果

CSS3漂亮的模糊效果 运用CSS3 和 jQuery 以及其他javascript框架&#xff0c;将 CSS模糊效果发挥到极致. 本文底部可提供下载以及预览&#xff0c;并且包含了所有需要的文件包。 1. 烟雾模糊效果&#xff1a; 2.彩色灯晕效果 3. 鼠标悬浮模糊效果 4, 模糊效果 5&#xff0c;随机…

java 三维全景_3D开发-全景技术基础

全景&#xff0c;英文名(Panorama)&#xff0c;又被称为3D实景&#xff0c;是一种新兴的富媒体技术&#xff0c;其与视频&#xff0c;声音&#xff0c;图片等传统的流媒体最大的区别是“可操作&#xff0c;可交互”。 全景分为虚拟现实和3D实景两种。虚拟现实是利用maya等软件&…

HAProxy基础

HAProxy HAProxy是法国开发者Willy Tarreau 开发的一个开源然教案&#xff0c;是一款具备高并发、高性能的TCP和HTTP负载均衡器&#xff0c;支持基于cookie的持久性&#xff0c;自动故障切换&#xff0c;支持正则表达式及web状态统计。 HAProxy功能 HAProxy是TCP/HTTP反向代理服…

不试过你怎么知道?开博第一篇(本人菜鸟也,高手可以飘过)

我是菜鸟&#xff0c;一直都是&#xff0c;只不过以前比现在更菜而已。 注册博客园居然有5个月了。昨晚看过一位迷茫中的仁兄30岁了不知道干什么。。我跟他差不多。 既然他可以申请开博&#xff0c;为什么我就不试试看呢&#xff1f; 试试看又不会损失什么&#xff1f;被拒绝又…

java 类隔离_微服务架构中zuul的两种隔离机制实验

ZuulException REJECTED_SEMAPHORE_EXECUTION 是一个最近在性能测试中经常遇到的异常。查询资料发现是因为zuul默认每个路由直接用信号量做隔离&#xff0c;并且默认值是100&#xff0c;也就是当一个路由请求的信号量高于100那么就拒绝服务了&#xff0c;返回500。信号量隔离既…

技术网站/博客网址收藏

1、W3CHtmlDom标准 http://www.w3school.com.cn/htmldom/dom_obj_window.asp2、JavaScirpt参考教程&#xff1a;http://www.iselong.com/online/ebooks/javascript/3、CSS手册http://www.w3school.com.cn/css/css_positioning_floating.asp4、Lucene查询语句http://tech.ddvip.…

TableStore: 海量结构化数据分层存储方案

2019独角兽企业重金招聘Python工程师标准>>> 前言 表格存储是阿里云自研分布式存储系统&#xff0c;可以用来存储海量结构化、半结构化的数据。表格存储支持高性能和容量型两种实例类型。高性能使用SSD的存储介质&#xff0c;针对读多写多的场景都有较好的访问延时。…

计算 webView 显示内容后实际高度

两种方法&#xff0c;方法1可以得到内容的实际高度&#xff0c;方法2得到了将内容显示完整后的 webView 的尺寸&#xff08;包含 UIEdgeInsets&#xff09; - (void)webViewDidFinishLoad:(UIWebView *)wb{//方法1CGFloat documentWidth [[wb stringByEvaluatingJavaScriptFro…

另一个.java文件调用_java - 如何调用另一个类“写文件”的方法? - SO中文参考 - www.soinside.com...

在我的Android应用程序&#xff0c;我想有一类处理所有“写入/读取到文本文件”的行动。所以&#xff0c;我根本就调用我的readUserFile.java文件我想的方法。但我的方法将不会在该文件中工作&#xff1f;创建一个文件在我的MainActivity工作正常&#xff0c;但不会在我的readU…

编译器实现(五)

1.自底向上的分析 最普通的自底向上算法称作LR(1)分析( LR(1)parsing) ( L表示由左向右处理输入&#xff0c;R表示生成了最右推导&#xff0c;而数字1则表示使用了先行的一个符号)。 1.1自底向上分析概览 自底向上的分析程序使用了显式栈来完成分析&#xff0c;这与非递归的自顶…

Python字符串的修改以及传参

前两天去面试web developer&#xff0c;面试官提出一个问题&#xff0c;用JavaScript或者Python实现字符串反转&#xff0c;我选择了Python&#xff0c;然后写出了代码&#xff08;错误的&#xff09;&#xff1a; 1 #!/usr/bin/env python2 #-*-coding:utf-8-*-3 __author__ …

充血模式和贫血模式

贫血模型&#xff1a;是指领域对象里只有get和set方法&#xff0c;或者包含少量的CRUD方法&#xff0c;所有的业务逻辑都不包含在内而是放在Business Logic层。 优点是系统的层次结构清楚&#xff0c;各层之间单向依赖&#xff0c;Client->(Business Facade)->Busin…

java 方法里面定义接口_java – 当接口A在其方法签名中定义接口B时

…如何限制A的实现在方法签名中使用B的某个实现&#xff1f;用例这是一个Unit接口和两个实现它的枚举&#xff1a;public interface Unit { ... }public enum ForceUnit implements Unit { ... }public enum MassUnit implements Unit { ... }属性界面使用哪个&#xff1a;publ…

ANDROID_MARS学习笔记_S01_011ProgressBar

文档是这样来设置样式 <ProgressBarandroid:layout_width"wrap_content"android:layout_height"wrap_content"style"android:style/Widget.ProgressBar.Small"android:layout_marginRight"5dp" /> 1.xml <RelativeLayout xml…

怎样使phpnow1.5.6-1支持firebird

&#xff08;以下部分步骤可能不是必要&#xff0c;自己测试。&#xff09; 环境&#xff1a;windows&#xff0c;phpnow1.5.6-1 默认支持mysql&#xff0c;修改配置文件&#xff0c;使之支持firebird。 php.ini 的位置 &#xff1a; php-5.2.14-Win32\php-apache2handler.ini …

php 引入其他文件中的变量

在php的开发过程中&#xff0c;如果所有的代码都写在同一个文件中的话&#xff0c;那么文件中的代码数量是否太多了,一来不便维护&#xff0c;二来对于编辑器也是个负担include("class0.php");在php文件的首部引入即可;转载于:https://www.cnblogs.com/wrhbk/p/10985…

java struts技术_java技术框架之:struts

一&#xff1a;struts的优缺点优点&#xff1a;1、开源&#xff1a;2、利用Struts提供的taglib可以大大节约开发时间。3、维护扩展比较方便。通过一个配置文件&#xff0c;即可把握整个系统各部分之间的联系&#xff0c;这对于后期的维护有着莫大的好处。4、表现与逻辑分离5、表…

BZOJ 2780: [Spoj]8093 Sevenk Love Oimaster( 后缀数组 + 二分 + RMQ + 树状数组 )

全部串起来做SA, 在按字典序排序的后缀中, 包含每个询问串必定是1段连续的区间, 对每个询问串s二分RMQ求出包含s的区间. 然后就是求区间的不同的数的个数(经典问题), sort queries BIT 就行了.时间复杂度O(N log N). 速度垫底了QAQ 你们都会SAM。。。。----------------------…

centos7下Gitlab+Jenkins部署持续集成CI环境

1.基本环境 主机&#xff1a;win10&#xff0c;IP&#xff1a;192.168.0.111&#xff1b;部署机器centos7&#xff0c;IP&#xff1a;192.168.0.65&#xff1b;内存推荐到8G&#xff0c;实测需要6G以上&#xff0c;以免出现内存不够用而报错。 2.安装gitlab需要的组件 [rootloc…

VIM7.3添加中文帮助文档

安装中文帮助文档之前首先执行下列操作&#xff1a;在home目录下列新建文件夹 &#xff1a;.vim ------------------>.vim是一个隐藏文件&#xff0c;不要漏了 “.”.vim/plugin ---------->.vim目录下的plugin文件夹.vim/doc ------------->.vim目录下的doc文件夹.v…

安卓java代码标签_Android实现动态添加标签及其点击事件

在做Android开发的时候&#xff0c;会遇到动态添加标签让用户选择的功能&#xff0c;所以自己写了个例子&#xff0c;运行效果图如下。标签可以左右滑动进行选择&#xff0c;点击的时候&#xff0c;会弹出toast提示选择或者取消选择了哪个标签。通过动态添加TextView作为标签&a…