오늘날 오래된 프로젝트를 수행 할 때 요구 사항이 발생했습니다. JavaScript의 URL의 매개 변수를 암호화하고 해독하여 인터넷 에서이 유용한 코드를 찾았습니다.
코드 사본은 다음과 같습니다.
<script language = "javaScript">
<!- 시작
함수 암호화 (str, pwd) {
if (str == "") retoy "";
str = 탈출 (str);
if (! pwd || pwd == "") {var pwd = "1234"; }
PWD = 탈출 (PWD);
if (pwd == null || pwd.length <= 0) {
Alert ( "메시지를 암호화 할 암호를 입력하십시오.");
널 리턴;
}
var prand = "";
for (var i = 0; i <pwd.length; i ++) {
prand += pwd.charcodeat (i) .tostring ();
}
var spos = math.floor (prand.length / 5);
var mult = parseint (prand.charat (spos) + prand.charat (spos*2) + prand.charat (spos*3) + prand.charat (spos*4) + prand.charat (spos*5));
var exc = math.ceil (pwd.length / 2);
var modul = math.pow (2, 31) -1;
if (mult <2) {
ALERT ( "알고리즘은 적절한 해시를 찾을 수 없습니다. 다른 비밀번호를 선택하십시오. /npossible 고려 사항은 더 복잡하거나 더 긴 비밀번호를 선택하는 것입니다.");
널 리턴;
}
var salt = math.round (math.random () * 1000000000) % 1000000000;
프란드 += 소금;
while (prand.length> 10) {
prand = (parseint (prand.substring (0, 10)) + parseint (prand.substring (10, prand.length))). ToString ();
}
prand = (Mult * prand + exc) % 모듈;
var enc_chr = "";
var enc_str = "";
for (var i = 0; i <str.length; i ++) {
Enc_chr = parseint (str.charcodeat (i) ^ math.floor ((prand/modul) * 255);
if (enc_chr <16) {
enc_str + = "0" + enc_chr.tostring (16);
}또 다른
enc_str += enc_chr.tostring (16);
prand = (Mult * prand + exc) % 모듈;
}
salt = salt.tostring (16);
while (salt.length <8) salt = "0" + salt;
ENC_STR += 소금;
enc_str 리턴;
}
함수 해독 (str, pwd) {
if (str == "") retoy "";
if (! pwd || pwd == "") {var pwd = "1234"; }
PWD = 탈출 (PWD);
if (str == null || str.length <8) {
경고 ( "길이가 너무 짧기 때문에 암호화 된 메시지에서 소금 값을 추출 할 수 없습니다. 메시지를 암호 해독 할 수 없습니다.");
반품;
}
if (pwd == null || pwd.length <= 0) {
경고 ( "메시지를 해독 할 암호를 입력하십시오.");
반품;
}
var prand = "";
for (var i = 0; i <pwd.length; i ++) {
prand += pwd.charcodeat (i) .tostring ();
}
var spos = math.floor (prand.length / 5);
var mult = parseint (prand.charat (spos) + prand.charat (spos*2) + prand.charat (spos*3) + prand.charat (spos*4) + prand.charat (spos*5));
var exc = math.round (pwd.length / 2);
var modul = math.pow (2, 31) -1;
var salt = parseint (str.substring (str.length -8, str.length), 16);
str = str.substring (0, str.length -8);
프란드 += 소금;
while (prand.length> 10) {
prand = (parseint (prand.substring (0, 10)) + parseint (prand.substring (10, prand.length))). ToString ();
}
prand = (Mult * prand + exc) % 모듈;
var enc_chr = "";
var enc_str = "";
for (var i = 0; i <str.length; i+= 2) {
Enc_chr = parseint (parseint (str.substring (i, i+2), 16) ^ Math.floor ((Prand/Modul) * 255);
enc_str += string.fromcharcode (enc_chr);
prand = (Mult * prand + exc) % 모듈;
}
UNESCAPE (ENC_STR)를 반환합니다.
}
// 종료 ->
</스크립트>
앞으로 암호화 및 암호 해독 문제가 발생하면 위의 코드를 JS 파일에 직접 작성한 다음 수행 할 수 있습니다. 문제를 저장하기 쉽습니다. . . .