- 浏览: 3122779 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (372)
- diy (4)
- linux (19)
- 杂项 (30)
- Swing (21)
- Java2D (21)
- Java3D (5)
- JavaIO (9)
- Java通讯 (5)
- Java设计模式 (3)
- Java多媒体 (0)
- Java算法 (7)
- Spring&EJB (29)
- Javaoffice (4)
- web前端 (23)
- javascript (1)
- php基础 (1)
- eclipse (3)
- 网站相关 (3)
- Apache (4)
- seo (12)
- db (28)
- server (3)
- api (4)
- 异常 (12)
- 计算机网络词汇表 (3)
- 随想录 (52)
- 收藏 (17)
- 犹太人的智慧 (3)
- 多线程 (1)
- jfreechart (7)
- Test (1)
- SorLib (30)
- ruby on rails (1)
最新评论
-
houyutao:
二三四都是错的空字符串也被匹配,*应该改成+
Java中判断字符串是否为数字的五种方法 -
mingyun:
但是 java.util.ArrayList 实现了 remo ...
java.lang.UnsupportedOperationException 解决方案 -
mingyun:
1.因为 Arrays.asList 返回的是 Arrays内 ...
java.lang.UnsupportedOperationException 解决方案 -
leolu007:
用java8新特性String testStr = " ...
java.lang.UnsupportedOperationException 解决方案 -
zhaohuaxishiwzw:
我之前所在的项目就是日本一家证券公司的项目。完全使用的是j2e ...
抛弃EJB(EJB2.0,EJB3.0,EJB4.0)
对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
function MD5(sMessage) { 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(sMessage) { var lWordCount; var lMessageLength = sMessage.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] | (sMessage.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; } 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; // Steps 1 and 2. Append padding bits and length and convert to words x = ConvertToWordArray(sMessage); // Step 3. Initialise a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476; // Step 4. Process the message in 16-word blocks 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); } // Step 5. Output the 128 bit digest var temp= WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d); return temp.toLowerCase(); }
发表评论
-
IE7 window.close()
2011-03-22 10:44 1379window.opener=null; // 不能少,否则依然 ... -
利用CSS使 a超级链接无边框
2011-01-06 16:00 9287我们在给图片加上超级链接时,发现图片上总是有一个超级链接的边框 ... -
Border style的使用
2010-12-17 14:12 1561使用方法: div{ border:1px soli ... -
域名解析中记录类型的作用
2010-12-05 20:42 3384什么是域名解析:域名解析就是域名到IP地址的转换过程。IP地址 ... -
HTML 转义字符串
2010-11-04 18:23 2414为什么要用转义字符串? HTML中<,>,& ... -
JavaScript Number函数
2010-11-04 15:11 1841Number的用法非常简单直接,就是将一个Javascript ... -
用Joomla搭建网站推荐安装的插件
2010-10-09 17:04 42671.网站安全插件 plgSystemJ ... -
CSS在Firefox和IE下的不同和解决方案
2010-09-09 17:42 27611. Div居中问题 div设置 margin-left, m ... -
Servlet的特点和优势
2010-09-02 15:43 10387Servlet是用Java编写的Serve ... -
新手究竟该如何学习Joomla
2010-08-31 17:21 3728Joomla是一套自助式的内容管理系统,可以方便的帮助我们建立 ... -
颜色理论
2010-08-15 13:25 2081应用色彩学 由于生长在一个充满着色彩的世界,色彩一直刺激我们的 ... -
<!DOCTYPE>的作用和使用
2010-08-13 14:01 5076当您打开网易,新浪等网站的任何一个页面的源码时,第一行都会看到 ... -
Javascript时钟
2010-08-11 17:24 1581一个Javascript编写的时钟。 运行效果如下图: 代 ... -
页面显示器代码效果
2010-08-11 17:19 2132我们在光顾一些特效网站时,为了展示特显,网站经常是让我们直接运 ... -
利用CSS生成精美细线Table表格
2010-08-10 17:31 11667精美的表格是前端开发用到的一个组件,很多时候我们利用复杂的页面 ... -
DIV的Position属性和DIV嵌套DIV
2010-08-10 10:58 376761.前言 我们在利用div+css ... -
10个设计师戒律
2010-08-05 14:09 1257第一条: 不可抄袭他人之创意,不论有何前提; Not to c ... -
10个WEB设计戒律
2010-08-05 14:08 13761. 不可滥用 Flash,Adobe ... -
JavaScript树形目录 收集整理
2010-07-29 15:14 10296Javascript是Web开发常用的工具,如果自己开发,是比 ... -
DIV+CSS 圆角边框
2010-07-13 17:10 6055利用DIV+CSS生成圆角边框,在很多情况下都会用到,目前DI ...
相关推荐
使用javascript实现的MD5加密算法
在JavaScript中实现MD5加密算法是常见的需求,特别是在前端开发中用于数据的安全传输或者存储。 MD5的主要特点包括: 1. **不可逆性**:MD5哈希结果不能通过哈希值反推出原始信息,因此常用于验证数据完整性和身份...
在JavaScript中实现HMAC-MD5,我们可以使用现成的库,例如在提供的`md5.js`文件中,可能就包含了一个这样的实现。 首先,我们需要了解HMAC-MD5的几个关键步骤: 1. **密钥扩展**:如果密钥长度超过哈希函数的块大小...
在探讨“javascript的md5算法”这一主题时,我们深入解析了MD5(Message-Digest Algorithm 5)在JavaScript中的实现细节。MD5是一种广泛使用的散列算法,用于生成一个固定大小(通常为128位)的哈希值,以此来确保...
在JavaScript中实现MD5算法,可以使用现成的库,如`crypto-js`或`spark-md5`,这些库已经封装了MD5的计算逻辑,可以直接调用其提供的方法来计算字符串的MD5值。例如,使用`crypto-js`库的代码可能如下: ```...
在JavaScript中,位运算比其他运算要快,因此在MD5实现中广泛使用了位移和按位与等位运算。虽然JavaScript提供了一个`位左移运算符,但是JavaScript中的数字是64位的浮点数,为了实现32位的循环左移,需要通过位...
javascript 实现 md5 加密。
javascript MD5算法。 值得收藏。
这个文件可能包含了一个完整的MD5实现,允许开发者通过简单的API调用来对字符串进行MD5加密。例如,使用`md5.js`,你可以如下所示对字符串进行MD5哈希: ```javascript var md5 = require('md5.js'); var hash = md...
MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特...
在JavaScript中,实现MD5加密算法主要用于数据校验、用户密码存储以及文件完整性检查等场景。 JavaScript客户端实现MD5值计算的过程主要包括以下几个步骤: 1. **初始化哈希值**:MD5算法开始时,会设定四个32位的...
这个压缩包"md5加密算法(JS和C++实现)"包含了两种语言的MD5实现,使得开发者可以对比理解这两种语言在处理相同算法时的不同方式。在Windows平台上,还提供了可执行文件,这可能是将C++编译的MD5程序打包成的,用户...
如果要给你的Web登录界面增加些安全性使用MD5算法是个很好的选择,本程序实现了MD5算法的对象,并带有JavaScript版本的MD5算法,主要参照了yahoo的电邮登录界面中的代码
在JavaScript中实现MD5加密,通常会借助于第三方库,如crypto-js、spark-md5等。 1. **MD5原理** MD5算法由Ronald Rivest在1991年设计,它将任意长度的数据转换为一个128位的哈希值,通常以32位的十六进制字符串...
4. **MD5与字符串**:对于简单的字符串,可以使用编程语言(如Python、Java、JavaScript等)中的库函数计算MD5。例如,在Python中,可以使用`hashlib`库的`md5()`函数。 5. **安全性问题**:由于MD5的碰撞漏洞,它...
在给定的“javascript md5加密 js文件”中,主要涉及的核心是`md5.js`这个JavaScript库,它提供了一个方便的方法来实现MD5哈希加密。以下是对这个库的一些详细解释: 1. **MD5.js库的引入**: 在HTML文件中,可以...
首先,我们需要引入一个MD5实现的JavaScript库。在本例中,文件`md5.js`可能是实现了MD5算法的一个库,如`blueimp-md5`或`js-md5`。这些库通常提供了简单的API,允许开发者方便地对字符串进行MD5加密。例如,`js-md5...
`crypto-js`是一个纯JavaScript实现的各种加密算法的库,包括MD5。 ```javascript var CryptoJS = require("crypto-js"); function encryptMD5(password) { return CryptoJS.MD5(password).toString(CryptoJS.enc...
在JavaScript中实现MD5加密,通常需要借助于第三方库,如`crypto-js`或`blueimp-md5`等。这些库提供了便捷的API,可以让开发者在浏览器环境中轻松地对字符串进行MD5加密。 `crypto-js`是一个完整的JavaScript加密库...
在JavaScript中实现MD5加密,通常会依赖一些现有的库,比如`crypto-js`或`blueimp-md5`。以下是一个使用`crypto-js`库的简单示例: ```javascript // 引入crypto-js库 const CryptoJS = require("crypto-js"); // ...