MD5加密的javascript实现例子

JavaScript实现MD5 (附完整源码) 阅读详情
/*?MD5?Message-Digest?Algorithm?-?JavaScript
'?MODIFICATION?HISTORY:
'?1.0?16-Feb-2001?-?Phil?Fresle?(sales@frez.co.uk)?-?Initial?Version?(VB/ASP?code)
'?1.0?21-Feb-2001?-?Enrico?Mosanghini?(erik504@yahoo.com)?-?JavaScript?porting
*/
function?MD5(sMessage)?{
function?RotateLeft(lValue,?iShiftBits)?{?return?(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?lWordCount?=?(lByteCount-(lByteCount?%?4))/4;
lBytePosition?=?(lByteCount?%?4)*8;
lWordArray[lWordCount]?=?(lWordArray[lWordCount]?|?(sMessage.charCodeAt(lByteCount)<lByteCount++;
}
lWordCount?=?(lByteCount-(lByteCount?%?4))/4;
lBytePosition?=?(lByteCount?%?4)*8;
lWordArray[lWordCount]?=?lWordArray[lWordCount]?|?(0x80<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;kAA=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();
}?
JavaScript中MD5加密的实现与应用 本文还有配套的精品资源,点击获取 简介:MD5是一种广泛使用的哈希算法,可将任意长度的字符串转换为固定长度的散列值,常用于数据安全如存储密码和验证数据完整性。尽管存在安全隐患,MD5仍可通过库如 crypto-js 在JavaScript中实现。对于安全性要求较高的应用,推荐使用更安全的哈希算法。本文提供了MD5加密的JavaScript实现示例,并建议了解与... 阅读详情

相关推荐

JavaScript实现MD5加密算法指南

MD5,即消息摘要算法第五版(Message-Digest Algorithm 5),由罗纳德·李维斯特(Ronald Rivest)于1991年设计,是广泛用于确保信息传输完整性的哈希函数。MD5可以产生一个128位(即16字节)的哈希值,通常用32个十六进制数字表示。因其速度快、易于实现且抗碰撞性较好,曾被广泛应用于各种软件领域进行数据完整性校验。鉴于MD5算法的缺陷,开发者和安全专家推荐使用其他更安全的加密哈希函数。当前,SHA-256和SHA-3是广泛接受的替代方案。

weixin_42527589的博客 2028

javascript 的MD5代码备份,跟java互通

var MD5 = function (string) { function RotateLeft(lValue, iShiftBits) { return (lValue&amp;lt;&amp;lt;iShiftBits) | (lValue&amp;gt;&amp;gt;&amp;gt;(32-iShiftBits)); } function AddUnsigned(lX,lY) { var l...

xidajiancun 243

Tesseract OCR识别不准?手把手教你用PyAutoGUI提升自动点击脚本的准确率

本文针对Tesseract OCR在屏幕自动化中识别不准的问题,提供了一套完整的优化方案。通过PyAutoGUI精准截图、结合PIL和OpenCV进行图像预处理(如灰度化、对比度增强、自适应二值化),并调优Tesseract参数(如PSM模式、白名单),显著提升文本识别准确率。文章还介绍了结合模板匹配、构建容错循环等进阶技巧,帮助开发者打造高可靠性的自动点击脚本。

weixin_29093017的博客 544

javascript实现MD5加密

MD5 = function (e) { function h(a, b) { var c, d, e, f, g; e = a &amp; 2147483648; f = b &amp; 2147483648; c = a &amp; 1073741824; d = b &amp; 1073741824; g = (a &amp; 1073741823) + (b &amp; 1073741823);

huangbaokang的博客 503

立创开源桌面激光雕刻机DIY全解析:从悬臂结构、Arduino主控到Marlin固件

本文详细解析了基于立创开源平台的桌面激光雕刻机DIY全过程。重点介绍了悬臂式机械结构的设计与优化,阐述了采用Arduino Mega 2560主控与RAMPS 1.4扩展板的经典控制方案,并深入讲解了Marlin固件的关键配置步骤,包括电机步数计算与激光功能启用,为创客和电子爱好者提供了一套完整的从硬件搭建到软件调试的实战指南。

weixin_42510201的博客 383

PVT(Process Voltage Temperature)

芯片PVT

网始如芯个人博客 3万+

JS实现的MD5加密算法

function MD5(sMessage) {  function RotateLeft(lValue, iShiftBits) { return (lValue>>(32-iShiftBits)); }  function AddUnsigned(lX,lY) {      var lX4,lY4,lX8,lY8,lResult;      lX8 = (lX & 0x800

1019

Grok-1.5+Ollama企业级本地化部署与合规实践指南

本文详细介绍了Grok-1.5+Ollama企业级本地化部署与合规实践指南,重点分析了本地化部署的成本优势和数据主权保障。通过RTX 4090显卡的硬件选型、Ubuntu 22.04系统优化及部署流程中的关键陷阱规避,为企业提供了高效、安全的AI模型部署方案。特别适合金融、医疗等敏感行业。

weixin_29094539的博客 181

JavaScript中的Md5加密方法的实现

function MD5(sMessage){  function RotateLeft(lValue, iShiftBits)  {  return (lValue>>(32-iShiftBits));  } function AddUnsigned(lX,lY) {  var lX4,lY4,lX8,lY8,lResult;   lX8 = (lX & 0x80000000);   lY8 =

lookatliu的专栏 1348

VCSA 6.7证书过期别慌!手把手教你通过SSH修改系统时间恢复登录(附STS证书修复脚本)

本文详细介绍了VCSA 6.7证书过期的应急处理方案,包括通过SSH修改系统时间临时恢复登录、全面更新证书体系以及专项修复STS证书的实战步骤。文章还提供了后期验证和系统加固的建议,帮助运维人员有效应对证书过期问题,确保虚拟化平台的稳定运行。

weixin_31292729的博客 415

ERGM指数随机图模型全解析:从基础原理到R语言实操

从社交网络中的互惠、传递性和同质性等基本现象切入,介绍网络数据与传统回归分析的本质差异——边与边之间的依赖关系。指数随机图模型(ERGM)正是为刻画这种依赖结构而设计的统计框架,它通过指数族分布将网络结构效应显式建模,结合MCMC方法完成参数估计。ERGM在组织协作、传播扩散、生物生态等领域的应用日益广泛,其扩展模型TERGM、GERGM和多层ERGM进一步支持时序、权重与多重关系网络。本文系统梳理ERGM的理论基础、核心统计量、扩展模型选型及R语言实操要点,帮助研究者理解网络生成机制并完成收敛性诊断与结果

weixin_29050271的博客 361

[MD5加密的javascript实现例子

/* MD5 Message-Digest Algorithm - JavaScript ' MODIFICATION HISTORY: ' 1.0 16-Feb-2001 - Phil Fresle (sales@frez.co.uk) - Initial Version (VB/ASP code) ' 1.0 21-Feb-2001 - Enrico Mosanghini (erik50

xergnvij 389

Oracle19c SYSAUX表空间爆满?手把手教你清理SM/ADVISOR和AUDSYS占用(附完整SQL)

本文详细解析了Oracle19c中SYSAUX表空间爆满的常见原因及解决方案,重点针对SM/ADVISOR和AUDSYS组件的空间占用问题提供了完整的SQL清理脚本。通过诊断查询、空间清理和预防性维护策略,帮助DBA有效管理SYSAUX表空间,确保数据库稳定运行。

weixin_28338005的博客 236

vue使用md5加密

import crypto from 'crypto' export default { name: 'HelloWorld', data () { return { msg: 'Welcome to Your Vue.js App' } }, mounted(){ this.getmd5("aaa"); }, m...

weixin_30859423的博客 165

机器人中的数值优化(二十一)—— 伴随灵敏度分析、线性方程组求解器的分类和特点、优化软件

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,下半部分介绍带约束的优化,中间会穿插一些路径规划方面的应用实例

慕羽★的博客 4205

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

md5运算

constcrypto=require("crypto"); constmm=crypto.createHash("md5").update(verifyString).digest("hex");//对字符进行MID5运算

m0_56876899的博客 566

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an &ldquo;advanced algorithms&rdquo; book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

ng-md5

https://github.com/gdi2290/angular-md5<!doctype html> <html ng-app="test"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <div ng-controller="testCtrl"> <p><in

more time 551

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

MD5 JS实现加密

MD5 消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。 MD5.js 是通过前台 js 加密的方式对密码等私密信息进行加...

Charge8的博客 3万+

[JavaScript]通过JS使用MD5加密

[JavaScript]通过JS使用MD5加密 目录[JavaScript]通过JS使用MD5加密项目信息如何使用额外信息 项目信息 github地址 https://github.com/blueimp/JavaScript-MD5 作者demo地址 https://blueimp.github.io/JavaScript-MD5/ boootcdn地址 &lt;script src="http...

petrel2015的博客 3万+

uniapp使用md5加密 js使用md5加密

uniapp使用md5加密 项目中使用md5加密 md5加密的使用方法

加班可以,无偿加班不行 7135

JS 实现MD5加密

大家好,我是梦辛工作室的灵,最近在写一个调试助手所需要实现MD5加密,就各处找了MD5 js加密的方法,然后现在封装好了给大家,方便以后使用 function md5(string) { function md5_RotateLeft(lValue, iShiftBits) { return (lValue &lt;&lt; iShiftBits) | (lValue &gt;&gt;&gt; (32 - iShiftBits)); } function md5_AddUnsig

灵神翁的博客 6422

Node.js中实现MD5加密(crypto模块)和JavaScript中实现MD5加密

一、Node.js中实现MD5加密 ① 安装crypto模块 Npm i crypto ②在加密字符串的js中引入crypto模块 var crypto = require('crypto'); ③加密的方法 function md5Encrypt(encryptString) {     var hasher = crypto.createHash("md5");     has

来年又来年的博客 9669

js MD5加密

js MD5加密 1、安装 npm install --save js-md5 2、需要使用的页面引入 import md5 from 'js-md5'; Vue.prototype.$md5 = md5 3、使用 ​ ​ // 控制车辆接口 ControlCar: function (value) { this.$emit('ievent', {msg:...

unbreakablec的博客 3578
上一篇: MD5算法研究
下一篇: MD5 算法
AngelGavin
博客等级 码龄24年 2粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值