오늘 오래된 프로젝트를 진행하면서 JavaScript의 URL에 있는 매개변수를 암호화하고 해독해야 한다는 요구 사항에 직면했습니다. 인터넷에서 다음과 같은 유용한 코드를 발견했습니다. 코드 복사 코드는 다음과 같습니다. <br> <!-- 시작 <br /> 함수 암호화(str, pwd) { <br /> if(str=="")return ""; <br /> str = 탈출(str); <br /> if(!pwd || pwd==""){ var pwd="1234"; } <br /> 비밀번호 = 탈출(비밀번호); <br /> if(pwd == null || pwd.length <= 0) { <br /> Alert("메시지를 암호화할 비밀번호를 입력하세요."); <br /> null을 반환; <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 = parsInt(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(multit < 2) { <br /> Alert("알고리즘이 적합한 해시를 찾을 수 없습니다. 다른 비밀번호를 선택하십시오. /n더 복잡하거나 긴 비밀번호를 선택하는 것이 좋습니다."); <br /> null을 반환; <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 /> }그 외 <br /> enc_str = enc_chr.toString(16); <br /> prand = (mult * prand incr) % modu; <br /> } <br /> 소금 = salt.toString(16); <br /> while(salt.length < 8)salt = "0" 소금; <br /> enc_str = 소금; <br /> enc_str을 반환합니다; <br /> } <br /> 함수 해독(str, pwd) { <br /> if(str=="")return ""; <br /> if(!pwd || pwd==""){ var pwd="1234"; } <br /> 비밀번호 = 탈출(비밀번호); <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 = parsInt(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 / modu) * 255)); <br /> enc_str = String.fromCharCode(enc_chr); <br /> prand = (mult * prand incr) % modu; <br /> } <br /> 이스케이프 해제(enc_str)를 반환합니다. <br /> } <br /> // 종료 --> <br> </스크립트> <br> </div> <p>以后碰到加密解密问题,直接将上述代码写成一个js文件,就搞定。省事了。。。</p> <p></p>