Javascript脚本实现静态网页加密-----http://www.xapeixun.cn/

Javascript脚本实现静态网页加密

思路:

加密时:先把用户的密钥A用MD5加密为B,然后用B异或源文件S0得到目标文件S1,把S1存入JS变量中。

解密时:询问密钥,然后操作同加密。

因为用了MD5,个人认为没有密钥的时候是无法破解的(暴力除外)

大家试用一下哈哈:

源代码如下:


<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) ,\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+="<< 16)\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 * 32) 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 % 32)) & 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),\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 > 16) BKEY = CORE_MD5(BKEY, KEY.LENGTH * THIS"; STROUT+=".CHRSZ);\R\N\T\T\R\N\T\T VAR IPAD = ARRAY(16), OPAD = ARRAY(16);\R\N\T\T FOR(VAR"; STROUT+=" I = 0; I < 16; I++)\R\N\T\T {\R\N\T\T IPAD[I] = BKEY[I] ^ 0X36363636;\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(IPAD.CONCAT(STR2BINL(DATA)), 512 + DATA.LENGTH * THIS.CHRSZ);\R\N\T\T R"; STROUT+="ETURN CORE_MD5(OPAD.CONCAT(HASH), 512 + 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) % 32);\R\N\T\T X[(((LEN + 64) >>> 9) << 4) + 14] = 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+="= 16)\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], 17, 60610581"; STROUT+="9);\R\N\T\T B = THIS.MD5_FF(B, C, D, A, X[I+ 3], 22, -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], 12, 1200080426);\R\N\T\T C = THIS.MD5_F"; STROUT+="F(C, D, A, B, X[I+ 6], 17, -1473231341);\R\N\T\T B = THIS.MD5_FF(B, C, "; STROUT+="D, A, X[I+ 7], 22, -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], 12,"; 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], 22, -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], 12, -40341101);\R\N\T\T C = THIS.MD5_FF(C"; STROUT+=", D, A, B, X[I+14], 17, -1502002290);\R\N\T\T B = THIS.MD5_FF(B, C, D, "; STROUT+="A, X[I+15], 22, 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], 20, -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], 14, -660478335);\R\N\T\T B = THIS.MD5_GG(B, C, "; STROUT+="D, A, X[I+ 4], 20, -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], 20, 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], 14, 1735328473);\R\N\T\T B = THIS.MD5_GG(B, C,"; STROUT+=" D, A, X[I+12], 20, -1926607734);\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+="11, -2022574463);\R\N\T\T C = THIS.MD5_HH(C, D, A, B, X[I+11], 16, 183"; STROUT+="9030562);\R\N\T\T B = THIS.MD5_HH(B, C, D, A, X[I+14], 23, -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], 11, 1272893353);\R\N\T\T C = THIS."; STROUT+="MD5_HH(C, D, A, B, X[I+ 7], 16, -155497632);\R\N\T\T B = THIS.MD5_HH(B,"; STROUT+=" C, D, A, X[I+10], 23, -1094730640);\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+=", 11, -358537222);\R\N\T\T C = THIS.MD5_HH(C, D, A, B, X[I+ 3], 16, -72"; STROUT+="2521979);\R\N\T\T B = THIS.MD5_HH(B, C, D, A, X[I+ 6], 23, 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], 11, -421815835);\R\N\T\T C = THIS.MD"; STROUT+="5_HH(C, D, A, B, X[I+15], 16, 530742520);\R\N\T\T B = THIS.MD5_HH(B, C"; STROUT+=", D, A, X[I+ 2], 23, -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+="], 10, 1126891415);\R\N\T\T C = THIS.MD5_II(C, D, A, B, X[I+14], 15, -"; 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], 10, -1894986606);\R\N\T\T C = TH"; STROUT+="IS.MD5_II(C, D, A, B, X[I+10], 15, -1051523);\R\N\T\T B = THIS.MD5_II(B"; STROUT+=", C, D, A, X[I+ 1], 21, -2054922799);\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], 10, -30611744);\R\N\T\T C = THIS.MD5_II(C, D, A, B, X[I+ 6], 15, -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], 10, -1120210379);\R\N\T\T C = TH"; STROUT+="IS.MD5_II(C, D, A, B, X[I+ 2], 15, 718787259);\R\N\T\T B = THIS.MD5_II"; STROUT+="(B, C, D, A, X[I+ 9], 21, -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),\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),\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+=" 16) + (Y >> 16) + (LSW >> 16);\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),"; 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); } //**********如果需要自动记住密码,请将下面的注释改成代码 /* 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 VALIGN=MIDDLE><TR><TD>&NBSP;</TD><TD ALIGN=CENTER>"; STRASKPASS+="<B>PASSWORD:</B><INPUT STYLE=\"BORDER-WIDTH:1PX;\" TYPE=PASSWORD ID=PS01 ONKEYDOWN=\"IF(EVENT.KEYCODE==13)\">"; STRASKPASS+="<INPUT STYLE=\"BORDER-WIDTH:1PX;\" TYPE=BUTTON ONCLICK=\"PERFORMPAGE(PS01.VALUE);\" VALUE=ENTER></TD><TD>&NBSP;</TD></TR></TABLE>"; DOCUMENT.WRITE(STRASKPASS); } VAR STR = { HEXCASE : 0, /* HEX OUTPUT FORMAT. 0 - LOWERCASE; 1 - UPPERCASE */ B64PAD : "", /* BASE-64 PAD CHARACTER. "=" FOR STRICT RFC COMPLIANCE */ CHRSZ : 8, /* BITS PER INPUT CHARACTER. 8 - ASCII; 16 - UNICODE */ B64_HMAC_MD5: FUNCTION(KEY, DATA) , B64_MD5: FUNCTION(S), BINL2B64: FUNCTION(BINARRAY){ VAR TAB = "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/"; 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 * 32) 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 * 32; I += THIS.CHRSZ) STR += STRING.FROMCHARCODE((BIN[I>>5] >>> (I % 32)) & MASK); RETURN STR; }, BIT_ROL: FUNCTION(NUM, CNT), CORE_HMAC_MD5: FUNCTION(KEY, DATA){ VAR BKEY = STR2BINL(KEY); IF(BKEY.LENGTH > 16) BKEY = CORE_MD5(BKEY, KEY.LENGTH * THIS.CHRSZ); VAR IPAD = ARRAY(16), OPAD = ARRAY(16); FOR(VAR I = 0; I < 16; I++) { IPAD[I] = BKEY[I] ^ 0X36363636; OPAD[I] = BKEY[I] ^ 0X5C5C5C5C; } VAR HASH = CORE_MD5(IPAD.CONCAT(STR2BINL(DATA)), 512 + 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 + 64) >>> 9) << 4) + 14] = LEN; VAR A = 1732584193; VAR B = -271733879; VAR C = -1732584194; VAR D = 271733878; FOR(VAR I = 0; I < X.LENGTH; I += 16) { 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), HEX_MD5:FUNCTION(S), MD5:FUNCTION(S), MD5_CMN:FUNCTION(Q, A, B, X, S, T), MD5_FF:FUNCTION(A, B, C, D, X, S, T), MD5_GG:FUNCTION(A, B, C, D, X, S, T), MD5_HH:FUNCTION(A, B, C, D, X, S, T), MD5_II:FUNCTION(A, B, C, D, X, S, T), MD5_VM_TEST:FUNCTION(), SAFE_ADD: FUNCTION(X, Y){ VAR LSW = (X & 0XFFFF) + (Y & 0XFFFF); VAR MSW = (X >> 16) + (Y >> 16) + (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) & MASK) << (I%32); RETURN BIN; }, STR_HMAC_MD5:FUNCTION(KEY, DATA), STR_MD5:FUNCTION(S) } </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 ONCLICK="WEBENCODE();" VALUE="START ENCODE"><BR> <B>ENCODED:</B><BR> <TEXTAREA ID=T2></TEXTAREA><BR> <INPUT TYPE=BUTTON ONCLICK="RUNCODE();" VALUE="RUN CODE"> </BODY> </HTML>

将此源代码保存成HTML格式的文件,双击运行即可看到效果

地    址: 西安市高新区高新路25号希格玛大厦1801室

联系电话:  029-88789460  15339095891(潘经理)    029-88223789 (高经理)       

邮    箱:xachixun@163.com

Q     Q643430980         1350366700

    址:http://www.xapeixun.cn

乘车路线:乘坐29、206207212308322402502503512604608700707721至光华路站下车即到 或 乘坐14、28、210、211、217、218、219、220、226、312、400 到高新路站下车向北200米即到

转载于:https://www.cnblogs.com/xachixun/archive/2011/04/11/2012090.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值