版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MD5(单向散列算法)的全称是Message-DigestAlgorithm5(信息- MD3和MD4发展而来。MD5算法的使用不需要支付任何 MD5输入任意长度的信息,经过处理,输出为128位的信息(数字);MD5MD5只能属于算法,不能称为加密算法;MD5属于加密算法;我个人支持后者。MD5MD5的输出结果a。然后在对方收到电MD5ba与b一样就代表中途未被篡改。2)MD5输出结果。3)SVNCheckOut后被修改过,也是用MD5.现在很多在数据库用户的的时候都是用户的MD5值这样就算不后在文件系统中。当用户登录的时候,系统把用户输入的计算成MD5值,然后再这需要一个第认证机构。例如A写了一个文件,认证机构对此文件用MD5算法产 信息并做好记录。若以后A说这文件不是他写的,机构只需对此文件重新产生 信息进行比对,相同的话,就证明是A写的了。这就是MD5MD5算法简要的叙述可以为:MD5512位分组来处理输入的信息,且每一分组又N*512+448(bit);N*512+448+64=(N+1)*512位。 5121664位(8个字节Mj表示消息的第j个子分组(015),<<<s表示循环左移s位,则四种操 ))A,B,C,D分别加上a,b,c,dpackagepackageMD5@author@Date2007-07-publicclassMD5{staticfinalStringprivatestaticfinallongprivatestaticfinallongprivatestaticfinallongC=0x98badcfeL;privatestaticfinallongD=0x staticfinalintS11=7;staticfinalintS12=12;staticfinalintS13=staticfinalintS14=staticfinalintS21=5;staticfinalintS22=9;staticfinalintS23=staticfinalintS24=staticfinalintS31=4;staticfinalintS32=11;staticfinalintS33=staticfinalintS34=staticfinalintS41=6;staticfinalintS42=10;staticfinalintS43=15;staticfinalintS44=privatelong[]result={A,B,C,D};// hash4×32=128位,初始化值为(幻publicstaticvoidmain(String[]args){MD5md=newMD5();}privateStringdigest(StringinputStr){byte[]inputBytes=inputStr.getBytes();int intgroupCount=0;//完整分组的个数 en/64;//每组512位(64字节)[]for(intstep=0;step<groupCount;step++){trans(groups);//处理分组,算法}intrest=by en%64;//512位分组后的余数byte[]tempBytes=newbyte[64];for(inti=0;i<rest;i++) for(inti=1;i<56-rest;i++)}longlen=(long)(by for(inti=0;i<8;i++){}for(inti=0;i<rest;i++) for(inti=rest+1;i<64;i++)for(inti=0;i<56;i++)longlen=(long)(by for(inti=0;i<8;i++){}}StringresStr="";longtemp=0;for(inti=0;i<4;i++){for(intj=0;j<4;j++){Stringa=hexs[(int)(temp)];}}return}inputBytesindex5125121664位(8个字节@param@paramprivatestaticlong[]divGroup(byte[]inputBytes,intindex){long[]temp=newlong[16];for(inti=0;i<16;i++){}return} @parampublicstaticlongb2iu(byteb){returnb<0?b&0x7F+128:b;}@paramgroups[]--512位(64字节privatevoidtrans(long[]groups)longa=result[0],b=result[1],c=result[2],d=a=FF(a,b,c,d,groups[0],S11,0xd76aa478L);/*1*/d=FF(d,a,b,c,groups[1],S12,0xe8c7b756L);/*2*/c=FF(c,d,a,b,groups[2],S13,0x242070dbL);/*3*/b=FF(b,c,d,a,groups[3],S14,0xc1bdceeeL);/*4*/a=FF(a,b,c,d,groups[4],S11,0xf57c0fafL);/*5*/d=FF(d,a,b,c,groups[5],S12,0x4787c62aL);/*6*/c=FF(c,d,a,b,groups[6],S13,0xa L);/*7*/b=FF(b,c,d,a,groups[7],S14,0xfd469501L);/*8*/a=FF(a,b,c,d,groups[8],S11,0x698098d8L);/*9*/d=FF(d,a,b,c,groups[9],S12,0x8b44f7afL);/*10*/c=FF(c,d,a,b,groups[10],S13,0xffff5bb1L);/*11*/b=FF(b,c,d,a,groups[11],S14,0x895cd7beL);/*12*/a=FF(a,b,c,d,groups[12],S11,0x6b901122L);/*13*/d=FF(d,a,b,c,groups[13],S12,0xfd987193L);/*14*/c=FF(c,d,a,b,groups[14],S13,0xa679438eL);/*15*/b=FF(b,c,d,a,groups[15],S14,0x49b40821L);/*16a=GG(a,b,c,d,groups[1],S21,0xf61e2562L);/*17*/d=GG(d,a,b,c,groups[6],S22,0xc040b340L);/*18*/c=GG(c,d,a,b,groups[11],S23,0x265e5a51L);/*19*/b=GG(b,c,d,a,groups[0],S24,0xe9b6c7aaL);/*20*/a=GG(a,b,c,d,groups[5],S21,0xd62f105dL);/*21*/d=GG(d,a,b,c,groups[10],S22,0x L);/*22*/c=GG(c,d,a,b,groups[15],S23,0xd8a1e681L);/*23*/b=GG(b,c,d,a,groups[4],S24,0xe7d3fbc8L);/*24*/a=GG(a,b,c,d,groups[9],S21,0x21e1cde6L);/*25*/d=GG(d,a,b,c,groups[14],S22,0xc33707d6L);/*26*/c=GG(c,d,a,b,groups[3],S23,0xf4d50d87L);/*27*/b=GG(b,c,d,a,groups[8],S24,0x455a14edL);/*28*/a=GG(a,b,c,d,groups[13],S21,0xa9e3e905L);/*29*/d=GG(d,a,b,c,groups[2],S22,0xfcefa3f8L);/*30*/c=GG(c,d,a,b,groups[7],S23,0x676f02d9L);/*31b=GG(b,c,d,a,groups[12],S24,0x8d2a4c8aL);/*32a=HH(a,b,c,d,groups[5],S31,0xfffa3942L);/*33*/d=HH(d,a,b,c,groups[8],S32,0x8771f681L);/*34*/c=HH(c,d,a,b,groups[11],S33,0x6d9d6122L);/*35*/b=HH(b,c,d,a,groups[14],S34,0xfde5380cL);/*36*/a=HH(a,b,c,d,groups[1],S31,0xa4beea44L);/*37*/d=HH(d,a,b,c,groups[4],S32,0x4bdecfa9L);/*38*/c=HH(c,d,a,b,groups[7],S33,0xf6bb4b60L);/*39*/b=HH(b,c,d,a,groups[10],S34,0xbebfbc70L);/*40*/a=HH(a,b,c,d,groups[13],S31,0x289b7ec6L);/*41*/d=HH(d,a,b,c,groups[0],S32,0xeaa127faL);/*42*/c=HH(c,d,a,b,groups[3],S33,0xd4ef3085L);/*43*/b=HH(b,c,d,a,groups[6],S34,0x4881d05L);/*44*/a=HH(a,b,c,d,groups[9],S31,0xd9d4d039L);/*45*/d=HH(d,a,b,c,groups[12],S32,0xe6db99e5L);/*46*/c=HH(c,d,a,b,groups[15],S33,0x1fa27cf8L);/*47*/b=HH(b,c,d,a,groups[2],S34,0xc4ac5665L);/*48*/a=II(a,b,c,d,groups[0],S41,0xf L);/*49*/d=II(d,a,b,c,groups[7],S42,0x432aff97L);/*50*/c=II(c,d,a,b,groups[14],S43,0xab9423a7L);/*51*/b=II(b,c,d,a,groups[5],S44,0xfc93a039L);/*52*/a=II(a,b,c,d,groups[12],S41,0x655b59c3L);/*53*/d=II(d,a,b,c,groups[3],S42,0x8f0ccc92L);/*54*/c=II(c,d,a,b,groups[10],S43,0xffeff47dL);/*55*/b=II(b,c,d,a,groups[1],S44,0x85845dd1L);/*56*/a=II(a,b,c,d,groups[8],S41,0x6fa87e4fL);/*57*/d=II(d,a,b,c,groups[15],S42,0xfe2ce6e0L);/*58*/c=II(c,d,a,b,groups[6],S43, L);/*59b=II(b,c,d,a,groups[13],S44,0x4e0811a1L);/*60*/a=II(a,b,c,d,groups[4],S41,0xf7537e82L);/*61*/d=II(d,a,b,c,groups[11],S42,0xbd3af235L);/*62*/c=II(c,d,a,b,groups[2],S43,0x2ad7d2bbL);/*63*/b=II(b,c,d,a,groups[9],S44,0xeb86d391L);/*64*/result[0]+=a;result[1]+=b;result[2]+=c;result[3]+=}privatestaticlongF(longx,longy,longz){return(x&y)|((~x)&z);}privatestaticlongG(longx,longy,longz){return(x&z)|(y&(~z));}privatestaticlongH(longx,longy,longz)returnx^y^}privatestaticlongI(longx,longy,longz){returny^(x|(~z));}privatestaticlongFF(longa,longb,longc,longd,longx,longs,longac){a+=(F(b,c,d)&0xFFFFFFFFL)+x+a=((a&0xFFFFFFFFL)<<s)|((a&0xFFFFFFFFL)>>>(32-a+=return}privatestaticlongGG(longa,longb,longc,longd,longx,longs,longac){a+=(G(b,c,d)&0xFFFFFFFFL)+x+a=((a&0xFFFFFFFFL)<<s)|((a&0xFFFFFFFFL)>>>(32-a+=return}privatestaticlongHH(longa,longb,longc,longd,longx,longs,longac){a+=(H(b,c,d)&0xFFFFFFFFL)+x+a=((a&0xFFFFFFFFL)<<s)|((a&0xFFFFFFFFL)>>>(32-a+=return}privatestaticlongII(longa,longb,longc,longd,longx,longs,longac){a+=(I(b,c,d)&0xFFFFFFFFL)+x+a=((a&0xFFFFFFFFL)<<s)|((a&0xFFFFFFFFL)>>>(32-aa+=return}}MD5,的MD5处理后再到数据库,其实是很不安全的。因为用户的是比较短的,而且很多用户的都使用生日号码,号码,等等。或者使用常用的一些吉利的数字,或者某个英文单词。如果我把常用的先MD5处理,把数据起来,MD5MD5,、 /default.aspx,我把其下的公告如、md5、动网等不再需要用穷举法,本站共有md5记录235亿条,还在不断增长1010位以下数字、77位字母+数字,610站对于动网中率达到83%。9JAVA在java中实现MD5是很简单的,在包java.security有个类MessageDigest。文MessageDigestMessageDigest类为应用程序提供信息 算法的功能,如MD5或SHA算法。信息 MessageDigest对象开始被初始化该对象通过使用update方法处理数据任何时候都可以调用reset方法重置 。一旦所有需要更新的数据都已经被更新了,应该调用digest方法之一完成哈希packagepackageMD5@author@Date2007-07-importjava.security.MessageDigest;publicclassMyMD5staticchar[]hex=publicstaticvoidmain(String[]args){MessageDigestmd5MessageDigest.getInstance("MD5");//申明使用MD5}catch(Exceptione){}}@paramprivatestaticStringbyte2str(byte[]bytes){intlen=bytes.length;StringBufferStringBufferresult=newStringBuffer();for(inti=0;i<len;i++){bytebyte0=bytes[i];result.append(hex[byte0>>>4&0xf]);result.append(hex[byte0&0xf]);}return}}另外附上其他版本的MD5算法的实现(来自网络1)JS版的MD5(调用方法:md5(明文AJavaScriptimplementationoftheRSADataSecurity,Inc.MD5DigestAlgorithm,asdefinedinRFCVersion2.1Copyright(C)PaulJohnston1999-Othercontributors:GregHolt,AndrewKepert,Ydnar,DistributedundertheBSD formoreConfigurablevariables.Youmayneedtotweakthesetobecompatibletheserver-side,butthedefaultsworkinmostvarhexcase=1;/*hexoutputformat.0-lowercase;1-uppercase varb64pad="";/*base-64padcharacter."="forstrictRFCcompliance*/varchrsz=8;/*bitsperinputcharacter.8-ASCII;16-Unicode Thesearethefunctionsyou'llusuallywanttoTheytakestringargumentsandreturneitherhexorbase-64encodedfunctionhex_md5(s){returnbinl2hex(core_md5(str2binl(s),s.length*functionstr_md5(s){returnbinl2str(core_md5(str2binl(s),s.length*chrsz));}functionhex_hmac_md5(key,data){returnbinl2hex(core_hmac_md5(key,data));}functionstr_hmac_md5(key,data){returnbinl2str(core_hmac_md5(key,data));}*CalculatetheMD5ofanarrayoflittle-endianwords,andabitlength*/functioncore_md5(x,len)/*appendpadding*/x[len>>5]|=0x80<<((len)%32);x[(((len+64)>>>9)<<4)+14]=len;vara= varb=- varc=- vard= for(vari=0;i<x.length;i+=16){varolda=a;varoldb=b;varoldc=c;varoldd=d;a=md5_ff(a,b,c,d,x[i+0],7,-d=md5_ff(d,a,b,c,x[i+1],12,-c=md5_ff(c,d,a,b,x[i+2],17,b=md5_ff(b,c,d,a,x[i+3],22,-a=md5_ff(a,b,c,d,x[i+4],7,-d=md5_ff(d,a,b,c,x[i+5],12,c=md5_ff(c,d,a,b,x[i+6],17,-b=md5_ff(b,c,d,a,x[i+7],22,-a=md5_ff(a,b,c,d,x[i+8],7,d=md5_ff(d,a,b,c,x[i+9],12,-c=md5_ff(c,d,a,b,x[i+10],17,-b=md5_ff(b,c,d,a,x[i+11],22, a=md5_ff(a,b,c,d,x[i+12],7 d=md5_ff(d,a,b,c,x[i+13],12, c=md5_ff(c,d,a,b,x[i+14],17, b=md5_ff(b,c,d,a,x[i+15], a=md5_gg(a,b,c,d,x[i+1],5, d=md5_gg(d,a,b,c,x[i+6],9, c=md5_gg(c,d,a,b,x[i+11], b=md5_gg(b,c,d,a,x[i+0],20, a=md5_gg(a,b,c,d,x[i+5],5, d=md5_gg(d,a,b,c,x[i+10],9 c=md5_gg(c,d,a,b,x[i+15],14, b=md5_gg(b,c,d,a,x[i+4],20, a=md5_gg(a,b,c,d,x[i+9],5 d=md5_gg(d,a,b,c,x[i+14],9, c=md5_gg(c,d,a,b,x[i+3],14, b=md5_gg(b,c,d,a,x[i+8], a=md5_gg(a,b,c,d,x[i+13],5, d=md5_gg(d,a,b,c,x[i+2],9, c=md5_gg(c,d,a,b,x[i+7], b=md5_gg(b,c,d,a,x[i+12],20, a=md5_hh(a,b,c,d,x[i+5],4,-d=md5_hh(d,a,b,c,x[i+8],11, c=md5_hh(c,d,a,b,x[i+11], b=md5_hh(b,c,d,a,x[i+14],23, a=md5_hh(a,b,c,d,x[i+1],4, d=md5_hh(d,a,b,c,x[i+4], c=md5_hh(c,d,a,b,x[i+7],16, b=md5_hh(b,c,d,a,x[i+10],23, a=md5_hh(a,b,c,d,x[i+13],4 d=md5_hh(d,a,b,c,x[i+0],11, c=md5_hh(c,d,a,b,x[i+3],16, b=md5_hh(b,c,d,a,x[i+6], a=md5_hh(a,b,c,d,x[i+9],4, d=md5_hh(d,a,b,c,x[i+12],11, c=md5_hh(c,d,a,b,x[i+15], b=md5_hh(b,c,d,a,x[i+2],23, a=md5_ii(a,b,c,d,x[i+0],6, d=md5_ii(d,a,b,c,x[i+7], c=md5_ii(c,d,a,b,x[i+14],15, b=md5_ii(b,c,d,a,x[i+5],21, a=md5_ii(a,b,c,d,x[i+12],6 d=md5_ii(d,a,b,c,x[i+3],10, c=md5_ii(c,d,a,b,x[i+10],15, b=md5_ii(b,c,d,a,x[i+1],21, a=md5_ii(a,b,c,d,x[i+8],6 d=md5_ii(d,a,b,c,x[i+15],10, c=md5_ii(c,d,a,b,x[i+6],15, b=md5_ii(b,c,d,a,x[i+13], a=md5_ii(a,b,c,d,x[i+4],6, d=md5_ii(d,a,b,c,x[i+11],10, c=md5_ii(c,d,a,b,x[i+2], b=md5_ii(b,c,d,a,x[i+9],21, a=safe_add(a,b=safe_add(b,c=safe_add(c,d=safe_add(d,}returnArray(a,b,c,}*Thesefunctionsimplementthefourbasicoperationsthealgorithmfunctionmd5_cmn(q,a,b,x,s,{returnsafe_add(bit_rol(safe_add(safe_add(a,q),safe_add(x,t)),}functionmd5_ff(a,b,c,d,x,s,{returnmd5_cmn((b&c)|((~b)&d),a,b,x,s,}functionmd5_gg(a,b,c,d,x,s,{returnmd5_cmn((b&d)|(c&(~d)),a,b,x,s,}functionmd5_hh(a,b,c,d,x,s,{returnmd5_cmn(b^c^d,a,b,x,s,}functionmd5_ii(a,b,c,d,x,s,{returnmd5_cmn(c^(b|(~d)),a,b,x,s,}*CalculatetheHMAC-MD5,ofakeyandsomefunctioncore_hmac_md5(key,{varbkey=if(bkey.length>16)bk
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 周长的认识教学设计
- 办公区消防演习方案
- 齐齐哈尔市梅里斯达斡尔族区2025届数学三年级下学期期中达标测试试题含答案解析
- 《工序质量预控计划》试题测试卷附答案
- 2025广东汕尾海丰县国有资产监督管理局招聘6名县属国有企业工作人员拟聘用人员(第三批)笔试历年典型考点题库附带答案详解
- 2025广东佛山市禅城区国有资产监督管理局下属企业招聘工作人员1人笔试历年常考点试题专练附带答案详解
- 2025年陕西华山旅游集团有限公司招聘(50人)笔试历年难易错考点试卷带答案解析
- 2025年秋季安徽六安市霍邱联合村镇银行社会招聘笔试历年典型考题及考点剖析附带答案详解
- 2025年甘肃省白银有色集团股份有限公司技能操作人员社会招聘552人笔试历年典型考点题库附带答案详解
- 2025年河北石家庄兴蓉环境发展有限责任公司招聘化验技术岗岗位笔试历年常考点试题专练附带答案详解
- 2026年重庆市“五方面人员”选拔乡镇领导班子考试历年参考题库(含完整答案)
- (正式版)DB31 650-2020 《非织造布单位产品能源消耗限额》
- 2026年浙江基层法律服务工作者执业核准考试试题及答案
- GB/T 33969-2026高炉富氧喷煤技术规范
- 2026年幼儿园课程故事培训会
- LY/T 1497-2025枣
- 2025年全国检察官遴选考试真题及参考答案
- 2026年事业单位考试国内核心时事政治考点梳理(附50题)
- 2026中国铌期货市场投资策略与价格波动研究报告
- 2019超高压输变电系统内部过电压分析与PSCAD EMTDC仿真应用
- 消除艾梅乙母婴传播培训
评论
0/150
提交评论