JavaScript MD5 - CSS-хитрости

Anonim
var MD5 = function (string) ( 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(string) ( var lWordCount; var lMessageLength = string.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) | (string.charCodeAt(lByteCount)<  >29; return lWordArray; ); function WordToHex(lValue) ( var WordToHexValue="",WordToHexValue_temp="",lByte,lCount; for (lCount = 0;lCount>>(lCount*8)) & 255; WordToHexValue_temp = "0" + lByte.toString(16); WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2); ) return WordToHexValue; ); function Utf8Encode(string) ( string = string.replace(/\r\n/g,"\n"); var utftext = ""; for (var n = 0; n < string.length; n++) ( var c = string.charCodeAt(n); if (c 127) && (c > 6) | 192); utftext += String.fromCharCode((c & 63) | 128); ) else ( utftext += String.fromCharCode((c >> 12) | 224); utftext += String.fromCharCode(((c >> 6) & 63) | 128); utftext += String.fromCharCode((c & 63) | 128); ) ) return utftext; ); 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; string = Utf8Encode(string); x = ConvertToWordArray(string); a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476; for (k=0;k  

Usage

MD5("whatever");

Like possibly snagging a Gravatar.