微信小程序 MD5的方法详解及实例代码
微信小程序MD5的方法详解
生成的文件可以放在 utils文件中哦!!!
/* *AJavaScriptimplementationoftheRSADataSecurity,Inc.MD5Message *DigestAlgorithm,asdefinedinRFC1321. *Version1.1Copyright(C)PaulJohnston1999-2002. *CodealsocontributedbyGregHolt *Seehttp://pajhome.org.uk/site/legal.htmlfordetails. */ /* *Addintegers,wrappingat2^32.Thisuses16-bitoperationsinternally *toworkaroundbugsinsomeJSinterpreters. */ functionsafe_add(x,y) { varlsw=(x&0xFFFF)+(y&0xFFFF) varmsw=(x>>16)+(y>>16)+(lsw>>16) return(msw<<16)|(lsw&0xFFFF) } /* *Bitwiserotatea32-bitnumbertotheleft. */ functionrol(num,cnt) { return(num<>>(32-cnt)) } /* *Thesefunctionsimplementthefourbasicoperationsthealgorithmuses. */ functioncmn(q,a,b,x,s,t) { returnsafe_add(rol(safe_add(safe_add(a,q),safe_add(x,t)),s),b) } functionff(a,b,c,d,x,s,t) { returncmn((b&c)|((~b)&d),a,b,x,s,t) } functiongg(a,b,c,d,x,s,t) { returncmn((b&d)|(c&(~d)),a,b,x,s,t) } functionhh(a,b,c,d,x,s,t) { returncmn(b^c^d,a,b,x,s,t) } functionii(a,b,c,d,x,s,t) { returncmn(c^(b|(~d)),a,b,x,s,t) } /* *CalculatetheMD5ofanarrayoflittle-endianwords,producinganarray *oflittle-endianwords. */ functioncoreMD5(x) { vara=1732584193 varb=-271733879 varc=-1732584194 vard=271733878 for(vari=0;i >2]>>((i%4)*8+4))&0xF)+ hex_tab.charAt((binarray[i>>2]>>((i%4)*8))&0xF) } returnstr } /* *Convertanarrayoflittle-endianwordstoabase64encodedstring. */ functionbinl2b64(binarray) { vartab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" varstr="" for(vari=0;i >5]<<(i%32))&0x3F)| ((binarray[i>>5+1]>>(32-i%32))&0x3F)) } returnstr } /* *Convertan8-bitcharacterstringtoasequenceof16-wordblocks,stored *asanarray,andappendappropriatepaddingforMD4/5calculation. *Ifanyofthecharactersare>255,thehighbyteissilentlyignored. */ functionstr2binl(str) { varnblk=((str.length+8)>>6)+1//numberof16-wordblocks varblks=newArray(nblk*16) for(vari=0;i >2]|=(str.charCodeAt(i)&0xFF)<<((i%4)*8) blks[i>>2]|=0x80<<((i%4)*8) blks[nblk*16-2]=str.length*8 returnblks } /* *Convertawide-characterstringtoasequenceof16-wordblocks,storedas *anarray,andappendappropriatepaddingforMD4/5calculation. */ functionstrw2binl(str) { varnblk=((str.length+4)>>5)+1//numberof16-wordblocks varblks=newArray(nblk*16) for(vari=0;i >1]|=str.charCodeAt(i)<<((i%2)*16) blks[i>>1]|=0x80<<((i%2)*16) blks[nblk*16-2]=str.length*16 returnblks } /* *Externalinterface */ functionhexMD5(str){returnbinl2hex(coreMD5(str2binl(str)))} functionhexMD5w(str){returnbinl2hex(coreMD5(strw2binl(str)))} functionb64MD5(str){returnbinl2b64(coreMD5(str2binl(str)))} functionb64MD5w(str){returnbinl2b64(coreMD5(strw2binl(str)))} /*Backwardcompatibility*/ functioncalcMD5(str){returnbinl2hex(coreMD5(str2binl(str)))} module.exports={ hexMD5:hexMD5 }
使用方式:
varutilMd5=require('../../utils/md5.js'); varpassword=utilMd5.hexMD5(password);
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!