javascript| Encryption | script | static | Web
Two days ago I saw someone ask static Web page encryption problem, wrote this code
idea :
encryption: First the user's key A with MD5 encryption to B, and then use B-XOR or source file S0 get the target file S1, S1 into the JS variable.
when decrypted : ask for the key and then operate with encryption.
Because of the use of MD5, individuals think that there is no key when the key is not cracked (except violence)
Let's try haha:
The source code is as follows:
<html><head><title>web encoder</title><style>body {font-size:12px; line-height:12px ; Background-color:buttonface; border-width:0px; Overflow:auto; margin:0px; padding:4px;} #t1, #t2 {width:100%; height:40%; border-width:1px; overflow:auto; Height:expression (document.body.clientheight-100 )/2); input {border-width:1px; padding-left:10px; padding-right:10px; margin:4px;} </style><script>function Webencode () {Strsource=escape (XOR (T1.VALUE,STR.MD5 (P1.value)));//strSource= T1.value; strout= "<script>\r\nstrhtml=\" \ "; \ r \ n"; for (Var i=0;i+70<strsource.length;i+=70) {strout+= "strhtml+=\" +addslash (strsource.substring (i,i+70)) + "\"; \r\ n "; } strout+= "Strhtml+=\" "+addslash (strsource.substring (i,strsource.length)) +" \ \ r \ n "; strout+=xor+ "\ r \ n"; Below code load the str object strout+= "var str =\r\n{\r\n\thexcase:0, \/* hex output format. 0-lowercase; 1-"; strout+= "uppercase *\/\r\n\tb64pad: \", \/* base-64 pad character. \"=\"For "; strout+= "Strict RFC compliance *\/\r\n\tchrsz:8, \/* bits per input character"; strout+= ". 8-ascii; 16-unicode *\/\r\n\t\r\n\tb64_hmac_md5:\r\n\t\tfunction (Key, "; strout+= "Data" {return binl2b64 (CORE_HMAC_MD5 (key, data);},\r\n\t\t\r\n\tb64_md5:\r\n "; strout+= "\t\tfunction (s) {return binl2b64 (CORE_MD5 (Str2binl (s), s.length * this.c"; strout+= "Hrsz));},\r\n\t\t\r\n\ Tbinl2b64:\r\n\t\tfunction (BinArray) {\r\n\t\t var tab = \ ABCDE; strout+= " Fghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789+\/\ "; \r\n\t\t var"; strout+= "str = \" "\"; \r\n\t\t for (var i = 0; i < binarray.length * 4; i + + 3) \r\n\t\t {"; strout+= "\r\n\t\t var triplet = ((binarray[i >> 2] >> 8 * (i%4) & 0xFF)"; strout+= "<<) \r\n\t\t | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & "; strout+= "0xFF) << 8) \r\n\t\t | ((binarray[i+2 >> 2] >> 8 * ((i+2)% "; strout+=" 4)) & 0xFF); \r\n\t\t for (VAR j = 0; J < 4; J + +) \r\n\t\t {\r\n\t\t if (i); strout+= "* 8 + J * 6 > Binarray.length *) str = this.b64pad;\r\n\t\t Else"; strout+= "str = tab.charat (triplet >> 6* (3-j)) & 0x3F); \r\n\t\t}\r\n\t\t}\r\n\t\t R"; strout+= "Eturn str;\r\n\t\t},\r\n\t\t\r\n\tbinl2hex:\r\n\t\tfunction (BinArray) {\r\n\t\t var hex_t"; strOut+= "AB = This.hexcase? \ "0123456789abcdef\": \ "0123456789abcdef\"; \r\n\t\t var "; strout+= "str = \" "\"; \r\n\t\t for (var i = 0; i < binarray.length * 4; i++) \r\n\t\t {\r\n\t\t "; strout+=" str + = Hex _tab.charat ((Binarray[i>>2] >> ((i%4) *8+4)) & 0xF) +\r\n\t\t "; strout+= "Hex_tab.charat (Binarray[i>>2] >> ((i%4) *8)) & 0xF); \r\n\t\t"; strout+= "}\r\n\t\t return str;\r\n\t\t},\r\n\t\r\n\tbinl2str:\r\n\t\tfunction (bin) {\r\n\t\t var st"; strOut+= "r = \" \ "; \r\n\t\t var mask = (1 << this.chrsz)-1;\r\n\t\t for (var i = 0; i < "; strout+= "Bin.length * 32; i + = This.chrsz) \r\n\t\T str + + string.fromcharcode ("; strout+= "bin[i>>5] >>> (i%)) & mask); \r\n\t\t return Str;\r\n\t\t},\r\n\t\t\r\n\tbit_rol:"; strout+= "\r\n\t\tfunction (num, cnt) {return (num << cnt) | (Num >>> (32-cnt));},\r\n "; strout+= "\t\t\r\n\tcore_hmac_md5:\r\n\t\tfunction (key, data) {\r\n\t\t var bkey = str2binl (k"; strout+= "ey); \r\n\t\t if (Bkey.length >) bkey = Core_md5 (Bkey, key.length * this "; strout+=". Chrsz); \r\n\t\t\r\n\t\t var ipad = Array (16), Opad = Array; \r\n\t\t for (var; strout+= "i = 0; i < i++) \r\n\t\t {\r\n\t\t Ipad[i] = bkey[i] ^ 0x3636363 6;\r\n\t\t "; strout+= "opad[i] = bkey[i] ^ 0x5c5c5c5c;\r\n\t\t}\r\n\t\t\r\n\t\t var hash = CORE_MD"; strout+= "5 (STR2BINL (data), Ipad.concat + data.length * this.chrsz); \r\n\t\t R"; strout+= "Eturn core_md5 (Opad.concat (hash), 128); \r\n\t\t},\r\n\t\t\r\n\tcore_md5:\r\n\t"; strout+= "\tfunction (x, len) {\r\n\t\t \/* append padding *\/\r\n\t\t x[len >> 5] |= 0x80 "; strout+= "<< ((len)%); \r\n\t\t x[((len +) >>> 9) << 4) + +] = len;\r\n\t\t\r\n\t\t"; Strout+= "var a = 1732584193;\r\n\t\t var B = -271733879;\r\n\t\t var c =-17325841"; strout+= "94;\r\n\t\t var d = 271733878;\r\n\t\t\r\n\t\t for (var i = 0; i < x.length; i +"; strout+= "=) \r\n\t\t { \r\n\t\t var Olda = a;\r\n\t\t var oldb = b;\r\n\t\t var oldc "; strout+= "= c;\r\n\t\t var oldd = d;\r\n\t\t\r\n\t\t A = This.md5_ff (A, B, C, D, x[i+"; strout+= "0], 7,-680876936 ); \r\n\t\t d = this.md5_ff (d, a, B, C, x[i+ 1], 12, "; strout+= " -389564586); \r\n\t\t C = This.md5_ff (c, D, a, B, x[i+ 2], 60610581"; strout+= "9); \r\n\t\t B = this.md5 _ff (b, C, D, A, x[i+ 3], -1044525330); \r\n\t\t "; strout+= "a = This.md5_ff (A, B, C, D, x[i+ 4], 7, -176418897); \r\n\t\t d = th"; strout+= "Is.md5_ff (d, a, B, C, x[i+ 5], 1200080426); \r\n\t\t C = This.md5_f"; strout+= "F (c, D, a, B, x[i+ 6], -1473231341); \r\n\t\t b = thIs.md5_ff (b, C, "; strout+= "D, A, x[i+ 7], -45705983); \r\n\t\t a = This.md5_ff (A, B, C, D, x[i+"; strout+= "8], 7, 1770035416); \r\n\ t\t d = this.md5_ff (d, a, B, C, x[i+ 9], and, "strout+=" -1958414417); \r\n\t\t C = This.md5_ff (c, D, a, B, x[i+10], 17,-42063) "; strout+= "; \r\n\t\t B = This.md5_ff (b, C, D, A, x[i+11], -1990404162); \r\n\t\t"; strout+= "a = This.md5_ff (A, B, C, D, X[i+12], 7, 1804603682); \r\n\t\t d = thi"; strout+= "S.md5_ff (d, a, B, C, x[i+13], -40341101); \r\n\t\t C = this.md5_ff (c"; strout+= ", D, a, B, x[i+14], 17,-15 02002290); \r\n\t\t B = This.md5_ff (b, C, D, "; strout+= "A, x[i+15], 1236535329); \r\n\t\t\r\n\t\t a = This.md5_gg (A, B, C, D, X"; strout+= "[i+ 1], 5,-165796510) ; \r\n\t\t d = This.md5_gg (d, a, B, C, x[i+ 6], 9 "; strout+=", -1069501632); \r\n\t\t C = This.md5_gg (c, D, a, B, x[i +11], 14, 6437 "; strout+= "17713); \r\n\t\t B = This.md5_gg (b, C, D, A, x[i+ 0], -373897302); \ r \ n"; strout+= "\t\t a = this. Md5_gg (A, B, C, D, x[i+ 5], 5, -701558691); \r\n\t\t d = "; strout+= "This.md5_gg (d, a, B, C, x[i+10], 9, 38016083); \r\n\t\t C = this.md5_"; strout+= "GG (c, D, a, B, x[i+15], -660478335); \r\n\t\t B = This.md5_gg (b, C,"; strout+= "D, A, x[i+ 4], -405537848); \r\n\t\t a = This.md5_gg (A, B, C, D, X[i"; strout+= "+ 9], 5, 568446438); \r\n\ t\t d = This.md5_gg (d, a, B, C, x[i+14], 9, "; strout+=" -1019803690); \r\n\t\t C = This.md5_gg (c, D, a, B, x[i+ 3], 14,-187363 "; strout+= "961); \r\n\t\t B = This.md5_gg (b, C, D, A, x[i+ 8], 1163531501); \r\n\t"; strout+= "t a = This.md5_gg (A, B, C, D, X[i+13], 5, -1444681467); \r\n\t\t d ="; strout+= "This.md5_gg (d, a, B, C, x[i+ 2], 9, -51403784); \r\n\t\t C = this.md5_"; strout+= "GG (c, D, a, B, x[i+ 7], 1735328473); \r\n\t\t B = This.md5_gg (b, C,"; strout+= "D, A, x[i+12], 20,-192660 7734); \r\n\t\t\r\n\t\t a = This.md5_hh (A, B, C, "; strout+= "D, x[i+ 5], 4, -378558); \r\n\t\t d = this.md5_hh (d, a, b, C, x[i+ 8], "; strout+= "one, -2022574463); \r\n\t\t C = this.md5_hh (c, D, a, B, x[i+11], 183, strout+=" 9030562); \r\n\t\t b = th Is.md5_hh (b, C, D, A, x[i+14], -35309556); \ r "; strout+= "\n\t\t a = This.md5_hh (A, B, C, D, x[i+ 1], 4, -1530992060); \r\n\t\t d"; strout+= "= this.md5_hh (d, a, B, C, x[i+ 4], one, 1272893353); \r\n\t\t C = this."; strout+= "Md5_hh (c, D, a, B, x[i+ 7], -155497632); \r\n\t\t B = this.md5_hh (b,"; strout+= "C, D, A, x[i+10], 23,-109 4730640); \r\n\t\t a = This.md5_hh (A, B, C, d "; strout+=", X[i+13], 4, 681279174); \r\n\t\t d = this.md5_hh (d, a, B, C, x[i+ 0] "; Strout+= ", one, -358537222); \r\n\t\t C = this.md5_hh (c, D, a, B, x[i+ 3], -72"; strout+= "2521979); \r\n\t\t b = th Is.md5_hh (b, C, D, A, x[i+ 6], 76029189); \ r "; strout+= "\n\t\t a = This.md5_hh (A, B, C, D, x[i+ 9], 4, -640364487); \r\n\t\t d"; strout+= "= this.md5_hh (d, a, B, C, x[i+12], one, -421815835); \r\n\t\t C = this.md"; strout+= "5_hh (c, D, a, B, x[i+15], 530742520); \r\n\t\t B = this.md5_hh (b, C "; strout+=", D, A, x[i+ 2], -995338651); \r\n\t\t\r\n\t\t a = This.md5_ii (A, B, C, "; strout+= "D, x[i+ 0], 6, -198630844); \r\n\t\t d = This.md5_ii (d, a, B, C, x[i+ 7"; strout+= "], 1126891415); T C = This.md5_ii (c, D, a, B, x[i+14],-"; strout+=" 1416354905); \r\n\t\t B = This.md5_ii (b, C, D, A, x[i+ 5], 21 ,-57434055 "; strout+= "); \r\n\t\t a = This.md5_ii (A, B, C, D, X[i+12], 6, 1700485571); \r\n\t\t"; strout+= "D = This.md5_ii (d, a, B, C, x[i+ 3], ten, -1894986606); \r\n\t\t c = th"; strout+= "Is.md5_ii (c, D, a, B, x[i+10], -1051523); \r\n\t\t B = This.md5_ii (b"; strout+= ", C, D, A, x[i+ 1], 21,-20 54922799); \r\n\t\t a = This.md5_ii (A, B, C, "; strout+= "D, x[i+ 8], 6, 1873313359); \r\n\t\t d = This.md5_ii (d, a, B, C, x[i+1"; strout+= "5], -30611744); \r\n\t\t c = This.md5_ii (c, D, a, B, x[i+ 6], 1 "; strout+=" 560198380); \r\n\t\t B = This.md5_ii (b, C, D, A, x[i+13), 21, 130915164 "; strout+= "9); \r\n\t\t a = This.md5_ii (A, B, C, D, x[i+ 4], 6, -145523070); \r\n\t\t"; strout+= "D = This.md5_ii (d, a, B, C, x[i+11], -1120210379); \r\n\t\t c = th"; strout+= "Is.md5_ii (c, D, a, B, x[i+ 2], 718787259); \r\n\t\t B = This.md5_ii"; strout+= "(b, C, D, A, x[i+ 9], -343485551); \r\n\t\t\r\n\t\t a = This.safe_add (A,"; strout+= "Olda); \r\n\t\t B = This.safe_add (b, oldb); \r\n\t\t C = This.safe_add (c, "strout+=" OLDC); \r\n\t\t d = This.safe_add (d, oldd); \r\n\t\t }\r\n\t\t return Array (A, "; strout+=" B, C, D); \r\n\t\t},\r\n\t\t\r\n\thex_hmac_md5:function (key, data) {return this.b " ; strout+= "Inl2hex (THIS.CORE_HMAC_MD5 (key, data)); },\r\n\t\r\n\thex_md5:function (s) {re "; strout+=" Turn This.binl2hex this.core_md5 (This.str2binl (s), s.length * THIS.CHR "; strout+= "sz");},\r\n\t\r\n\tmd5:function (s) {return (THIS.HEX_MD5 (s));},\r\n\r\n\tmd5_cmn:fu "; strout+= "Nction (Q, A, B, X, S, t) {return This.safe_add (This.bit_rol (this.safe_a"; strout+= "dd" (thiS.safe_add (A, Q), This.safe_add (x, T)), s), b);},\r\n\r\n\tmd5_ff:func "; strout+= "tion (A, B, C, D, X, S, t) {return this.md5_cmn (b & c) | ((~b) & D), A, "; strout+= "B, X, S, t);},\r\n\r\n\tmd5_gg:function (A, B, C, D, X, S, t) {return THIS.M"; strout+= "D5_cmn (b & D) | (C & (~d)), A, B, X, S, t);},\r\n\r\n\tmd5_hh:function (A, "; strout+= "B, C, D, X, S, t) {return this.md5_cmn (b ^ C ^ D, a, B, X, S, t);},\r\n\r\n"; strout+= "\tmd5_ii:function (A, B, C, D, X, S, t) {return this.md5_cmn (c ^) (b | (~d "; strout+=")), A, B, X, S, t);},\r\n\r\n\tmd5_vm_test:function () {return hex_md5 (\ "abc\") "; strout+=" = = " 900150983cd24fb0d6963f7d28e17f72\ ";},\r\n\t\r\n\tsafe_add:\r\n\t\tfunction (x"; strout+= ", y) {\r\n\t\t var LSW = (x & 0xFFFF) + (Y & 0xFFFF); \r\n\t\t var MSW = (x >> "; strout+=") + (y >>) + (LSW >>); \r\ n\t\t return (MSW << 16) | (LSW & 0xFFF "; strout+=" F); \r\n\t\t},\r\n\t\t\r\n\tstr2binl:\r\n\t\tfunction (str) {\r\n\t\t var bin = Array(); \r\n\t "; strout+= "\ t var mask = (1 << this.chrsz)-1;\r\n\t\t for (var i = 0; i < str.lengt"; strout+= "H * this.chrsz; I + + This.chrsz) \r\n\t\t bin[i>>5] |= (Str.charcodeat (i; strout+= "\/This.chrsz) & Mask) << (i%32); \r\ n\t\t return BIN;\R\N\T\T},\R\N\R\N\TSTR_HMAC_ "; strout+= "Md5:function (key, data) {return binl2str (CORE_HMAC_MD5 (key, data);},"; strout+= "\r\n\r\n\tstr_md5:function (s) {return binl2str (CORE_MD5 (Str2binl (s), S.leng"; strout+= "th * This.chrsz));} \r\n}\r\n "; Strout+=performpage+ "\ r \ n"; strout+= "performpage (); \ r \ n"; strout+= "<\/script>"; T2.value=strout;} function RunCode () {Win=open ("About:blank"); Win.document.write (T2.value); Win.document.close ();} function Addslash (str) {return (str). replace (/\\/g, "\\\\"). Replace (/\//g, "\\\/"). Replace (/\r/g, "\ r"). Replace (/\n /g, "\\n"). Replace (/\ "/g, \\\"). Replace (/\ '/g, "\\\"). Replace (/\t/g, "\\t"); function XOR (strv,strpass) {var intpasslength=strpass.length; var re= ""; for (Var i=0;i<strv.length;i++) {Re+=string.fromcharcode (Strv.charcodeat (i) ^strpass.charcodeat (i%intpasslength));} return (re); function Performpage (strpass) {if (strpass) {document.cookie= "password=" +escape (Strpass); document.write (XOR (unescape (strhtml), STR.MD5 (Strpass))); return (false); //********** If you need to automatically remember your password, change the following comment to code/* var pass=document.cookie.match (/password= (^;] +)/i); if (pass) {Pass=unescape (pass[1]); document.write (XOR (unescape (strhtml), STR.MD5 (pass)); return (false); } * *//************* straskpass= "<table cellspacing=0 cellpadding=0 width=100% height=100% align=center MIDDLE><TR><TD>&NBSP;</TD><TD align=center> "; straskpass+= "<b>password:</b><input style=\" border-width:1px;\ "Type=password id=ps01" if (event.keycode==13) {performpage (this.value);} \ ">"; straskpass+= "<input style=\" border-width:1px;\ "Type=button onclick=\" Performpage (ps01.value); \ "Value=Enter ></td><td> </td></tr></tablE> "; document.write (Straskpass);} var STR ={hexcase:0,/* hex output format. 0-lowercase 1-uppercase/B64pad: "",/* base-64 pad charact Er. "=" for strict RFC compliance */chrsz:8,/* bits per input character. 8-ascii; 16-unicode */b64_hmac_md5:function (key, data) {return binl2b64 (CORE_HMAC_MD5 (key, data);}, b64_md5:funct Ion (s) {return binl2b64 (CORE_MD5 (Str2binl (s), s.length * This.chrsz)); Binl2b64:function (BinArray) {var tab = ' AB cdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789+/"; var str = ""; for (var i = 0; i < binarray.length * 4; i + + 3) {var triplet = ((binarray[i >> 2] >> 8 * (i %4)) & 0xFF) << 16 | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4) & 0xFF) << 8) | ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF); for (var j = 0; J < 4; J + +) {if (I * 8 + J * 6 > Binarray.length * str = This.b64pad; else str = Tab.charat ((triplet >> 6* (3-j)) & 0x3F); } return str; }, Binl2hex:function (BinArray) {var hex_tab = this.hexcase? "0123456789ABCDEF": "0123456789abcdef"; var str = ""; for (var i = 0; i < binarray.length * 4; i++) {str = Hex_tab.charat ((binarray[i>>2) >> ((i%4) *8+4) ) & 0xF) + Hex_tab.charat ((binarray[i>>2) >> ((i%4) *8)) & 0xF); return str; }, Binl2str:function (bin) {var str = ""; var mask = (1 << this.chrsz)-1; for (var i = 0; i < bin.length * i + + = this.chrsz) str = String.fromCharCode ((bin[i>>5) >>> (i% )) & mask); return str; }, Bit_rol:function (num, cnt) {return (num << cnt) | (Num >>> (32-cnt));}, Core_hmac_md5:function (key, data) {var bkey = str2binl (key); if (Bkey.length >) bkey = Core_md5 (Bkey, key.length * this.chrsz); var ipad = ArrAy (), Opad = Array (16); for (var i = 0; i < i++) {Ipad[i] = bkey[i] ^ 0x36363636; Opad[i] = bkey[i] ^ 0x5c5c5c5c; var hash = core_md5 (str2binl (data), Ipad.concat + data.length * this.chrsz); Return Core_md5 (Opad.concat (hash), 512 + 128); }, Core_md5:function (x, len) {/* Append padding/x[len >> 5] |= 0x80 << ((len)% 32); X[((len +) >>> 9) << 4) + [] = Len; var a = 1732584193; var b =-271733879; var c =-1732584194; var d = 271733878; for (var i = 0; i < x.length i + =) {var Olda = A; var oldb = b; var oldc = c; var oldd = D; A = This.md5_ff (A, B, C, D, x[i+ 0], 7,-680876936); D = this.md5_ff (d, a, B, C, x[i+ 1], 12,-389564586); c = This.md5_ff (c, D, a, B, x[i+ 2], 17, 606105819); b = This.md5_ff (b, C, D, A, x[i+ 3], 22,-1044525330); A = This.md5_ff (A, B, C, D, x[i+ 4], 7,-176418897); D = this.md5_ff (d, a, b, C, x[i+ 5], 12, 1200080426); c = This.md5_ff (c, D, a, B, x[i+ 6], 17,-1473231341); b = This.md5_ff (b, C, D, A, x[i+ 7], 22,-45705983); A = This.md5_ff (A, B, C, D, x[i+ 8], 7, 1770035416); D = this.md5_ff (d, a, B, C, x[i+ 9], 12,-1958414417); c = This.md5_ff (c, D, a, B, x[i+10], 17,-42063); b = This.md5_ff (b, C, D, A, x[i+11], 22,-1990404162); A = This.md5_ff (A, B, C, D, X[i+12], 7, 1804603682); D = this.md5_ff (d, a, B, C, x[i+13], 12,-40341101); c = This.md5_ff (c, D, a, B, x[i+14], 17,-1502002290); b = This.md5_ff (b, C, D, A, x[i+15], 22, 1236535329); A = This.md5_gg (A, B, C, D, x[i+ 1], 5,-165796510); D = This.md5_gg (d, a, B, C, x[i+ 6], 9,-1069501632); c = This.md5_gg (c, D, a, B, x[i+11], 14, 643717713); b = This.md5_gg (b, C, D, A, x[i+ 0], 20,-373897302); A = This.md5_gg (A, B, C, D, x[i+ 5], 5,-701558691); D = This.md5_gg (d, a, B, C, x[i+10], 9, 38016083); c = This.md5_gg (C, D, a, B, x[i+15], 14,-660478335); b = This.md5_gg (b, C, D, A, x[i+ 4], 20,-405537848); A = This.md5_gg (A, B, C, D, x[i+ 9], 5, 568446438); D = This.md5_gg (d, a, B, C, x[i+14], 9,-1019803690); c = This.md5_gg (c, D, a, B, x[i+ 3], 14,-187363961); b = This.md5_gg (b, C, D, A, x[i+ 8], 20, 1163531501); A = This.md5_gg (A, B, C, D, X[i+13], 5,-1444681467); D = This.md5_gg (d, a, B, C, x[i+ 2], 9,-51403784); c = This.md5_gg (c, D, a, B, x[i+ 7], 14, 1735328473); b = This.md5_gg (b, C, D, A, x[i+12], 20,-1926607734); A = This.md5_hh (A, B, C, D, x[i+ 5], 4,-378558); D = this.md5_hh (d, a, B, C, x[i+ 8], 11,-2022574463); c = This.md5_hh (c, D, a, B, x[i+11], 16, 1839030562); b = this.md5_hh (b, C, D, A, x[i+14], 23,-35309556); A = This.md5_hh (A, B, C, D, x[i+ 1], 4,-1530992060); D = this.md5_hh (d, a, B, C, x[i+ 4], 11, 1272893353); c = This.md5_hh (c, D, a, B, x[i+ 7], 16,-155497632); b = ThiS.md5_hh (b, C, D, A, x[i+10], 23,-1094730640); A = This.md5_hh (A, B, C, D, X[i+13], 4, 681279174); D = this.md5_hh (d, a, B, C, x[i+ 0], 11,-358537222); c = This.md5_hh (c, D, a, B, x[i+ 3], 16,-722521979); b = this.md5_hh (b, C, D, A, x[i+ 6], 23, 76029189); A = This.md5_hh (A, B, C, D, x[i+ 9], 4,-640364487); D = this.md5_hh (d, a, B, C, x[i+12], 11,-421815835); c = This.md5_hh (c, D, a, B, x[i+15], 16, 530742520); b = this.md5_hh (b, C, D, A, x[i+ 2], 23,-995338651); A = This.md5_ii (A, B, C, D, x[i+ 0], 6,-198630844); D = This.md5_ii (d, a, B, C, x[i+ 7], 10, 1126891415); c = This.md5_ii (c, D, a, B, x[i+14], 15,-1416354905); b = This.md5_ii (b, C, D, A, x[i+ 5], 21,-57434055); A = This.md5_ii (A, B, C, D, X[i+12], 6, 1700485571); D = This.md5_ii (d, a, B, C, x[i+ 3], 10,-1894986606); c = This.md5_ii (c, D, a, B, x[i+10], 15,-1051523); b = This.md5_ii (b, C, D, A, x[i+ 1], 21,-2054922799);A = This.md5_ii (A, B, C, D, x[i+ 8], 6, 1873313359); D = This.md5_ii (d, a, B, C, x[i+15], 10,-30611744); c = This.md5_ii (c, D, a, B, x[i+ 6], 15,-1560198380); b = This.md5_ii (b, C, D, A, x[i+13], 21, 1309151649); A = This.md5_ii (A, B, C, D, x[i+ 4], 6,-145523070); D = This.md5_ii (d, a, B, C, x[i+11], 10,-1120210379); c = This.md5_ii (c, D, a, B, x[i+ 2], 15, 718787259); b = This.md5_ii (b, C, D, A, x[i+ 9], 21,-343485551); A = This.safe_add (A, Olda); b = This.safe_add (b, oldb); c = This.safe_add (c, OLDC); D = This.safe_add (d, OLDD); Return Array (A, B, C, D); }, Hex_hmac_md5:function (key, data) {return This.binl2hex (THIS.CORE_HMAC_MD5 (key, data);}, Hex_md5:function (s) { Return This.binl2hex (THIS.CORE_MD5 (This.str2binl (s), s.length * This.chrsz));, Md5:function (s) {return (this.hex_ MD5 (s));}, Md5_cmn:function (Q, A, B, X, S, t) {return This.safe_add (This.bit_rol this.safe_add (A, Q), This.safe_add (x,T)), s), b);}, Md5_ff:function (A, B, C, D, X, S, t) {return this.md5_cmn (b & c) | ((~b) & D), A, B, X, S, t);}, Md5_gg:function (A, B, C, D, X, S, t) {return THIS.MD5_CMN (b & D) | (C & (~d)), A, B, X, S, t);}, Md5_hh:function (A, B, C, D, X, S, t) {return this.md5_cmn (b ^ C ^ D, a, B, X, S, T); 5_ii:function (A, B, C, D, X, S, t) {return this.md5_cmn (c ^ B | (~d)), A, B, X, S, t);}, Md5_vm_test:function () {return HEX_MD5 ("abc") = = "900150983cd24fb0d6963f7d28e17f72";}, Safe_add: function (x, y) {var LSW = (x & 0xFFFF) + (Y & 0xFFFF); var MSW = (x >>) + (y >>) + (LSW >> 16); Return (MSW << 16) | (LSW & 0xFFFF); }, Str2binl:function (str) {var bin = Array (); var mask = (1 << this.chrsz)-1; for (var i = 0; i < str.length * This.chrsz i + = This.chrsz) bin[i>>5] |= (str.charcodeat (I/this.chrsz) &A mp Mask) << (i%32); return bin; }, Str_hmac_md5:function (key, data) {return BINL2STR(CORE_HMAC_MD5 (key, data)); }, Str_md5:function (s) {return binl2str (CORE_MD5 (Str2binl (s), s.length * This.chrsz));} </script></head><body><b>source:</b><br><textarea Id=t1></textarea ><br><b>password:</b><input Type=password Value=default id=p1><input Type=button Value= "Start Encode" ><br><b>encoded:</b><br><textarea id=t2></textarea> <br><input Type=button value= "Run Code" ></body></html>
[Ctrl + A ALL SELECT hint: You can modify some of the code, and then run]