วันนี้เมื่อทำงานในโครงการเก่าฉันพบข้อกำหนด ฉันเข้ารหัสและถอดรหัสพารามิเตอร์ใน URL ใน JavaScript และพบรหัสที่มีประโยชน์นี้จากอินเทอร์เน็ต:
การคัดลอกรหัสมีดังนี้:
<ภาษาสคริปต์ = "JavaScript">
<!- เริ่มต้น
ฟังก์ชั่นเข้ารหัส (str, pwd) {
ถ้า (str == "") กลับ "";
str = หลบหนี (str);
if (! pwd || pwd == "") {var pwd = "1234"; -
PWD = Escape (PWD);
if (pwd == null || pwd.length <= 0) {
การแจ้งเตือน ("โปรดป้อนรหัสผ่านที่จะเข้ารหัสข้อความ");
คืนค่า null;
-
var prand = "";
สำหรับ (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 inc = math.ceil (pwd.length / 2);
var modul = math.pow (2, 31) - 1;
ถ้า (mult <2) {
การแจ้งเตือน ("อัลกอริทึมไม่สามารถหาแฮชที่เหมาะสมได้โปรดเลือกรหัสผ่านอื่น /ข้อควรพิจารณาที่เป็นไปได้คือการเลือกรหัสผ่านที่ซับซ้อนหรือนานกว่านั้น");
คืนค่า null;
-
var salt = math.round (math.random () * 100000000) % 100000000;
prand += เกลือ;
ในขณะที่ (prand.length> 10) {
prand = (parseint (prand.substring (0, 10)) + parseint (prand.substring (10, prand.length))). toString ();
-
prand = (mult * prand + inc) % modul;
var enc_chr = "";
var enc_str = "";
สำหรับ (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 + inc) % modul;
-
เกลือ = เกลือ tostring (16);
ในขณะที่ (เกลือความยาว <8) เกลือ = "0" + เกลือ;
enc_str += เกลือ;
return enc_str;
-
ฟังก์ชั่น DECRYPT (STR, PWD) {
ถ้า (str == "") กลับ "";
if (! pwd || pwd == "") {var pwd = "1234"; -
PWD = Escape (PWD);
if (str == null || str.length <8) {
การแจ้งเตือน ("ค่าเกลือไม่สามารถสกัดได้จากข้อความที่เข้ารหัสเนื่องจากความยาวสั้นเกินไปข้อความไม่สามารถถอดรหัสได้");
กลับ;
-
if (pwd == null || pwd.length <= 0) {
การแจ้งเตือน ("โปรดป้อนรหัสผ่านที่จะถอดรหัสข้อความ");
กลับ;
-
var prand = "";
สำหรับ (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 inc = 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);
prand += เกลือ;
ในขณะที่ (prand.length> 10) {
prand = (parseint (prand.substring (0, 10)) + parseint (prand.substring (10, prand.length))). toString ();
-
prand = (mult * prand + inc) % modul;
var enc_chr = "";
var enc_str = "";
สำหรับ (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 + inc) % modul;
-
ส่งคืน Unsescape (enc_str);
-
// end ->
</script>
ในอนาคตหากคุณพบปัญหาการเข้ารหัสและการถอดรหัสคุณสามารถเขียนโค้ดด้านบนลงในไฟล์ JS โดยตรงแล้วทำ ง่ายต่อการบันทึกปัญหา - - -