วิธีการเข้ารหัสนี้แบ่งออกเป็นสามส่วน:
1. กำหนดเนื้อหาของกล่องโต้ตอบการตั้งค่าตามผลการค้นหาสำหรับรีจิสทรี
2. หากคุณใช้เป็นครั้งแรกให้ตั้งรหัสผ่านใหม่
3. แอปเพล็ตการแปลงรหัสผ่าน (ซับซ้อนกว่าเดิมมาก) แน่นอนถ้าคุณต้องการแก้ไขฟังก์ชั่นรหัสผ่านเพียงเปลี่ยนส่วนการตั้งค่ารหัสผ่าน
1. เมื่อโปรแกรมเริ่มต้นให้ค้นหารีจิสทรีเพื่อตรวจสอบว่ามีรหัสผ่านเพื่อกำหนดเนื้อหาการแสดงผลของหน้าต่างหรือไม่ อย่างไรก็ตามควรทำคำสั่งต่อไปนี้ก่อนการใช้งาน:
เพิ่ม Tregistry ให้กับผู้ใช้และเพิ่มตัวแปรฟอร์มต่อไปนี้ในการประกาศ VAR:
มี: Tregistry;
Keyname, Valuestr, TempSTR: String;
ขั้นตอน tfrmpass.formshow (ผู้ส่ง: tobject);
เริ่ม
มี: = tregistry.create;
ลองใช้ Rootkey: = HKEY - local - Machine;
KeyName: = ′ซอฟต์แวร์/myPassword′;
// ถ้าคีย์นี้พร้อมใช้งานจะเปิดออก
หากมี oth.openkey (Keyname, True) จากนั้นเริ่มต้น
TempSTR: = ExtractFilename (Application.exename);
valuestr: = ryg.readstring (tempstr);
// หากรหัสผ่านไม่ว่างให้แก้ไขแบบฟอร์มเพื่อตรวจสอบรหัสผ่าน
ถ้า Valuestr <> '' เริ่มต้น
แก้ไข 2.visible: = false;
edit1.setFocus;
// หากรหัสผ่านว่างเปล่าให้แก้ไขแบบฟอร์มเพื่อตั้งค่ากล่องโต้ตอบรหัสผ่าน
เริ่มต้นอื่น
ShowMessage (′โปรดตั้งรหัสผ่านเป็นครั้งแรก!′);
Edit2.visible: = true;
edit1.setFocus;
สิ้นสุด;
ในที่สุดก็จบลง;
2. รหัสตอบกลับของปุ่ม: รวมรหัสผ่านใหม่และรหัสผ่านการยืนยัน
ขั้นตอน tfrmpass.okclick (ผู้ส่ง: tobject);
เริ่ม
// ตัดสินรหัสผ่านที่มีอยู่โดยขึ้นอยู่กับว่า EDIT2 จะปรากฏขึ้นหรือไม่และตรวจสอบ
ถ้าแก้ไข 2.visible = False แล้วเริ่มต้น
ถ้าผ่าน (edit1.text) = valuestr จากนั้นเริ่มต้น
ShowMessage ('รหัสผ่านถูกต้อง!');
เริ่มต้นอื่น
ShowMessage ('รหัสผ่านไม่ถูกต้อง! ไม่อนุญาตให้ทำงาน!');
หยุด;
เริ่มต้นอื่น
ถ้า edit1.text = edit2.text แล้วเริ่มต้น
มี: = tregistry.create;
มี Rootkey: = hkey - local - machine;
KeyName: = ′ซอฟต์แวร์/myPassword′;
ถ้ามี. openkey (Keyname, True) แล้ว
มี. writestring (tempstr, pass (edit1.text));
นั่นคือ end;
เริ่มต้นอื่น
ShowMessage ('รหัสผ่านที่พิมพ์อีกครั้งไม่สอดคล้องกันโปรดกลับเข้ามาอีกครั้ง!');
edit1.Text: = ′′; edit2.Text: = ′′;
edit1.setFocus;
สิ้นสุด;
3. โปรแกรมการแปลงรหัสผ่าน: ระวังที่กำหนดไว้ล่วงหน้า
ในความคิดของฉันโปรแกรมมินิการเปลี่ยนแปลงนี้ไม่ซับซ้อนมาก ผู้อ่านยังสามารถใช้ฟังก์ชั่นทางคณิตศาสตร์อื่น ๆ เพื่อทำการแปลงที่ซับซ้อนมากขึ้น
ฟังก์ชั่นส่งผ่าน (PSTR: String): String;
var str, str1: สตริง;
ฉัน, J: จำนวนเต็ม;
เริ่ม
str: = pstr;
สำหรับ i: = 1 ถึงความยาว (str) เริ่มต้น
// โปรดเปลี่ยนครั้งแรก
j: = (ฉัน * ฉัน * ฉัน mod (ฉัน + 20))+(ฉัน * ฉัน mod (ฉัน + 10))+ฉัน * 2 + 1;
str1: = str1+chr (ord (str [i])+j);
j: = (ฉัน * ฉัน * ฉัน mod (ฉัน + 10))+(ฉัน * ฉัน mod (ฉัน + 20))+ฉัน * 2 + 1;
str1: = str1+chr (ord (str [i])+j);
ผ่าน: = str1;
จบ;