md5 در جاوا اسکریپت
با سلام اینم الگوریتم md5 برای هش کردن :
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ ۲۸ ۲۹ ۳۰ ۳۱ ۳۲ ۳۳ ۳۴ ۳۵ ۳۶ ۳۷ ۳۸ ۳۹ ۴۰ ۴۱ ۴۲ ۴۳ ۴۴ ۴۵ ۴۶ ۴۷ ۴۸ ۴۹ ۵۰ ۵۱ ۵۲ ۵۳ ۵۴ ۵۵ ۵۶ ۵۷ ۵۸ ۵۹ ۶۰ ۶۱ ۶۲ ۶۳ ۶۴ ۶۵ ۶۶ ۶۷ ۶۸ ۶۹ ۷۰ ۷۱ ۷۲ ۷۳ ۷۴ ۷۵ ۷۶ ۷۷ ۷۸ ۷۹ ۸۰ ۸۱ ۸۲ ۸۳ ۸۴ ۸۵ ۸۶ ۸۷ ۸۸ ۸۹ ۹۰ ۹۱ ۹۲ ۹۳ ۹۴ ۹۵ ۹۶ ۹۷ ۹۸ ۹۹ ۱۰۰ ۱۰۱ ۱۰۲ ۱۰۳ ۱۰۴ ۱۰۵ ۱۰۶ ۱۰۷ ۱۰۸ ۱۰۹ ۱۱۰ ۱۱۱ ۱۱۲ ۱۱۳ ۱۱۴ ۱۱۵ ۱۱۶ ۱۱۷ ۱۱۸ ۱۱۹ ۱۲۰ ۱۲۱ ۱۲۲ ۱۲۳ ۱۲۴ ۱۲۵ ۱۲۶ ۱۲۷ ۱۲۸ ۱۲۹ ۱۳۰ ۱۳۱ ۱۳۲ ۱۳۳ ۱۳۴ ۱۳۵ ۱۳۶ ۱۳۷ ۱۳۸ ۱۳۹ ۱۴۰ ۱۴۱ ۱۴۲ ۱۴۳ ۱۴۴ ۱۴۵ ۱۴۶ ۱۴۷ ۱۴۸ ۱۴۹ ۱۵۰ ۱۵۱ ۱۵۲ ۱۵۳ ۱۵۴ ۱۵۵ ۱۵۶ ۱۵۷ ۱۵۸ ۱۵۹ ۱۶۰ ۱۶۱ ۱۶۲ ۱۶۳ ۱۶۴ ۱۶۵ ۱۶۶ ۱۶۷ ۱۶۸ ۱۶۹ ۱۷۰ ۱۷۱ ۱۷۲ ۱۷۳ ۱۷۴ ۱۷۵ ۱۷۶ ۱۷۷ ۱۷۸ ۱۷۹ ۱۸۰ ۱۸۱ ۱۸۲ ۱۸۳ ۱۸۴ ۱۸۵ ۱۸۶ ۱۸۷ ۱۸۸ ۱۸۹ ۱۹۰ ۱۹۱ ۱۹۲ ۱۹۳ ۱۹۴ ۱۹۵ ۱۹۶ ۱۹۷ ۱۹۸ ۱۹۹ ۲۰۰ | var MD5 = function (string) { function RotateLeft(lValue, iShiftBits) { return (lValue<<iShiftBits) | (lValue>>>(۳۲-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 + ۸; var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % ۶۴))/۶۴; var lNumberOfWords = (lNumberOfWords_temp2+۱)*۱۶; var lWordArray=Array(lNumberOfWords-۱); var lBytePosition = ۰; var lByteCount = ۰; while ( lByteCount < lMessageLength ) { lWordCount = (lByteCount-(lByteCount % ۴))/۴; lBytePosition = (lByteCount % ۴)*۸; lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount)<<lBytePosition)); lByteCount++; } lWordCount = (lByteCount-(lByteCount % ۴))/۴; lBytePosition = (lByteCount % ۴)*۸; lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition); lWordArray[lNumberOfWords-۲] = lMessageLength<<۳; lWordArray[lNumberOfWords-۱] = lMessageLength>>>۲۹; return lWordArray; }; function WordToHex(lValue) { var WordToHexValue="",WordToHexValue_temp="",lByte,lCount; for (lCount = ۰;lCount<=۳;lCount++) { lByte = (lValue>>>(lCount*۸)) & ۲۵۵; WordToHexValue_temp = "۰" + lByte.toString(۱۶); WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-۲,۲); } return WordToHexValue; }; function Utf8Encode(string) { string = string.replace(/\r\n/g,"\n"); var utftext = ""; for (var n = ۰; n < string.length; n++) { var c = string.charCodeAt(n); if (c < ۱۲۸) { utftext += String.fromCharCode(c); } else if((c > ۱۲۷) && (c < ۲۰۴۸)) { utftext += String.fromCharCode((c >> ۶) | ۱۹۲); utftext += String.fromCharCode((c & ۶۳) | ۱۲۸); } else { utftext += String.fromCharCode((c >> ۱۲) | ۲۲۴); utftext += String.fromCharCode(((c >> ۶) & ۶۳) | ۱۲۸); utftext += String.fromCharCode((c & ۶۳) | ۱۲۸); } } return utftext; }; var x=Array(); var k,AA,BB,CC,DD,a,b,c,d; var S11=۷, S12=۱۲, S13=۱۷, S14=۲۲; var S21=۵, S22=۹ , S23=۱۴, S24=۲۰; var S31=۴, S32=۱۱, S33=۱۶, S34=۲۳; var S41=۶, S42=۱۰, S43=۱۵, S44=۲۱; string = Utf8Encode(string); x = ConvertToWordArray(string); a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476; for (k=۰;k<x.length;k+=۱۶) { AA=a; BB=b; CC=c; DD=d; a=FF(a,b,c,d,x[k+۰], S11,0xD76AA478); d=FF(d,a,b,c,x[k+۱], S12,0xE8C7B756); c=FF(c,d,a,b,x[k+۲], S13,0x242070DB); b=FF(b,c,d,a,x[k+۳], S14,0xC1BDCEEE); a=FF(a,b,c,d,x[k+۴], S11,0xF57C0FAF); d=FF(d,a,b,c,x[k+۵], S12,0x4787C62A); c=FF(c,d,a,b,x[k+۶], S13,0xA8304613); b=FF(b,c,d,a,x[k+۷], S14,0xFD469501); a=FF(a,b,c,d,x[k+۸], S11,0x698098D8); d=FF(d,a,b,c,x[k+۹], S12,0x8B44F7AF); c=FF(c,d,a,b,x[k+۱۰],S13,0xFFFF5BB1); b=FF(b,c,d,a,x[k+۱۱],S14,0x895CD7BE); a=FF(a,b,c,d,x[k+۱۲],S11,0x6B901122); d=FF(d,a,b,c,x[k+۱۳],S12,0xFD987193); c=FF(c,d,a,b,x[k+۱۴],S13,0xA679438E); b=FF(b,c,d,a,x[k+۱۵],S14,0x49B40821); a=GG(a,b,c,d,x[k+۱], S21,0xF61E2562); d=GG(d,a,b,c,x[k+۶], S22,0xC040B340); c=GG(c,d,a,b,x[k+۱۱],S23,0x265E5A51); b=GG(b,c,d,a,x[k+۰], S24,0xE9B6C7AA); a=GG(a,b,c,d,x[k+۵], S21,0xD62F105D); d=GG(d,a,b,c,x[k+۱۰],S22,0x2441453); c=GG(c,d,a,b,x[k+۱۵],S23,0xD8A1E681); b=GG(b,c,d,a,x[k+۴], S24,0xE7D3FBC8); a=GG(a,b,c,d,x[k+۹], S21,0x21E1CDE6); d=GG(d,a,b,c,x[k+۱۴],S22,0xC33707D6); c=GG(c,d,a,b,x[k+۳], S23,0xF4D50D87); b=GG(b,c,d,a,x[k+۸], S24,0x455A14ED); a=GG(a,b,c,d,x[k+۱۳],S21,0xA9E3E905); d=GG(d,a,b,c,x[k+۲], S22,0xFCEFA3F8); c=GG(c,d,a,b,x[k+۷], S23,0x676F02D9); b=GG(b,c,d,a,x[k+۱۲],S24,0x8D2A4C8A); a=HH(a,b,c,d,x[k+۵], S31,0xFFFA3942); d=HH(d,a,b,c,x[k+۸], S32,0x8771F681); c=HH(c,d,a,b,x[k+۱۱],S33,0x6D9D6122); b=HH(b,c,d,a,x[k+۱۴],S34,0xFDE5380C); a=HH(a,b,c,d,x[k+۱], S31,0xA4BEEA44); d=HH(d,a,b,c,x[k+۴], S32,0x4BDECFA9); c=HH(c,d,a,b,x[k+۷], S33,0xF6BB4B60); b=HH(b,c,d,a,x[k+۱۰],S34,0xBEBFBC70); a=HH(a,b,c,d,x[k+۱۳],S31,0x289B7EC6); d=HH(d,a,b,c,x[k+۰], S32,0xEAA127FA); c=HH(c,d,a,b,x[k+۳], S33,0xD4EF3085); b=HH(b,c,d,a,x[k+۶], S34,0x4881D05); a=HH(a,b,c,d,x[k+۹], S31,0xD9D4D039); d=HH(d,a,b,c,x[k+۱۲],S32,0xE6DB99E5); c=HH(c,d,a,b,x[k+۱۵],S33,0x1FA27CF8); b=HH(b,c,d,a,x[k+۲], S34,0xC4AC5665); a=II(a,b,c,d,x[k+۰], S41,0xF4292244); d=II(d,a,b,c,x[k+۷], S42,0x432AFF97); c=II(c,d,a,b,x[k+۱۴],S43,0xAB9423A7); b=II(b,c,d,a,x[k+۵], S44,0xFC93A039); a=II(a,b,c,d,x[k+۱۲],S41,0x655B59C3); d=II(d,a,b,c,x[k+۳], S42,0x8F0CCC92); c=II(c,d,a,b,x[k+۱۰],S43,0xFFEFF47D); b=II(b,c,d,a,x[k+۱], S44,0x85845DD1); a=II(a,b,c,d,x[k+۸], S41,0x6FA87E4F); d=II(d,a,b,c,x[k+۱۵],S42,0xFE2CE6E0); c=II(c,d,a,b,x[k+۶], S43,0xA3014314); b=II(b,c,d,a,x[k+۱۳],S44,0x4E0811A1); a=II(a,b,c,d,x[k+۴], S41,0xF7537E82); d=II(d,a,b,c,x[k+۱۱],S42,0xBD3AF235); c=II(c,d,a,b,x[k+۲], S43,0x2AD7D2BB); b=II(b,c,d,a,x[k+۹], 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(); } |
نحوه استفاده :
۱ | MD5("iwebpro"); |
خیلی عالی بود ممنون بهنام جان