<div class="codetitle"> <span><a style="CURSOR: pointer" data="79058" class="copybut" id="copybut79058" onclick="doCopy('code79058')"><u>复代码码</u></a></span> 代码如下:</div> <div class="codebody" id="code79058"> <br><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 전환//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <br><html xmlns="http://www.w3.org/1999/xhtml"> <br><머리> <br><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <br><title>字符串加密</title> <br></head> <br><본문> <br><SCRIPT LANGUAGE="자바스크립트"> <br><!-- 시작 <BR>function encrypt(str, pwd) { <BR>if(pwd == null || pwd.length <= 0) { <BR>alert("비밀번호를 입력하세요. 메시지를 암호화하는 데 사용됩니다."); <BR>널을 반환합니다. <BR>} <BR>var prand = ""; <BR>for(var i=0; i<pwd.length; i ) { <BR>prand = pwd.charCodeAt(i).toString(); <BR>} <BR>var sPos = Math.floor(prand.length / 5); <BR>var mult =parseInt(prand.charAt(sPos) prand.charAt(sPos*2) prand.charAt(sPos*3) prand.charAt(sPos*4) prand.charAt(sPos*5)); <BR>var incr = Math.ceil(pwd.length / 2); <BR>var modu = Math.pow(2, 31) - 1; <BR>if(mult < 2) { <BR>alert("알고리즘이 적합한 해시를 찾을 수 없습니다. 다른 비밀번호를 선택하십시오. n가능한 고려 사항은 더 복잡하거나 긴 비밀번호를 선택하는 것입니다."); <BR>널을 반환합니다. <BR>} <BR>var salt = Math.round(Math.random() * 1000000000) % 100000000; <BR>프란드 = 소금; <BR>while(prand.length > 10) { <br>prand = (parseInt(prand.substring(0, 10))parseInt(prand.substring(10, prand.length))).toString(); <br>} <br>prand = (mult * prand incr) % modu; <br>var enc_chr = ""; <br>var enc_str = ""; <br>for(var i=0; i<str.length; i ) { <BR>enc_chr = parsInt(str.charCodeAt(i) ^ Math.floor((prand / modu) * 255)); <BR>if(enc_chr < 16) { <BR>enc_str = "0" enc_chr.toString(16); <BR>} else enc_str = enc_chr.toString(16); <BR>prand = (mult * prand incr) % modu; <BR>} <BR>salt = salt.toString(16); <BR>while(salt.length < 8)salt = "0" salt; <BR>enc_str = 소금; <BR>enc_str을 반환합니다; <BR>} <br><br>function decrypt(str, pwd) { <BR>if(str == null || str.length < 8) { <BR>alert("솔트 값을 추출할 수 없습니다. 길이가 너무 짧기 때문에 암호화된 메시지를 해독할 수 없습니다."); <BR>반환; <BR>} <BR>if(pwd == null || pwd.length <= 0) { <BR>alert("메시지를 해독하는 데 사용할 비밀번호를 입력하세요."); <BR>반환; <BR>} <BR>var prand = ""; <BR>for(var i=0; i<pwd.length; i ) { <BR>prand = pwd.charCodeAt(i).toString(); <BR>} <BR>var sPos = Math.floor(prand.length / 5); <BR>var mult =parseInt(prand.charAt(sPos) prand.charAt(sPos*2) prand.charAt(sPos*3) prand.charAt(sPos*4) prand.charAt(sPos*5)); <BR>var incr = Math.round(pwd.length / 2); <BR>var modu = Math.pow(2, 31) - 1; <BR>var salt = parsInt(str.substring(str.length - 8, str.length), 16); <BR>str = str.substring(0, str.length - 8); <BR>프란드 = 소금; <BR>while(prand.length > 10) { <br>prand = (parseInt(prand.substring(0, 10))parseInt(prand.substring(10, prand.length))).toString(); <br>} <br>prand = (mult * prand incr) % modu; <br>var enc_chr = ""; <br>var enc_str = ""; <br>for(var i=0; i<str.length; i =2) { <BR>enc_chr = parseInt(parseInt(str.substring(i, i 2), 16) ^ Math.floor((prand / 모듈) * 255)); <BR>enc_str = String.fromCharCode(enc_chr); <BR>prand = (mult * prand incr) % modu; <BR>} <BR>return enc_str; <BR>} <BR>// 종료 --> <br></script> <br><form name="box"><center> <br><table cellpadding=0cellspacing=0border=0><tr><td colspan=3> <br><textarea cols=40rows=5wrap=virtual name=ipt>baidu.com에 오신 것을 환영합니다</textarea> <br></td></tr> <br><tr height=50><td valign="top"> <br><input type="button" onclick="document.box.opt.value= encrypt(document.box.ipt.value, document.box.pwd.value);" value="加密"> <br></td><td align="center" valign="center"> <br><input type="text" name="pwd" value="password"> <br></td><td align="right" valign="bottom"> <br><input type="button" onclick="document.box.ipt.value= decrypt(document.box.opt.value, document.box.pwd.value);" value="解密"> <br></td></tr> <br><tr><td colspan=3> <br><textarea cols=40 행=5 Wrap=가상 이름=opt></textarea> <br></td></tr></table> <br></center> <br></form> <br></body> <br><br></html> <br> </div> <br>代码복사지后直接打开即可