ฟังก์ชัน RND() ของ VISUALBASIC มีคุณลักษณะที่สำคัญ: เมื่อพารามิเตอร์ของ RND() (เราเรียกมันว่า seed ตรงนี้ได้) เป็นค่าลบ ค่า seed เดียวกัน (ค่าลบ) จะสร้างลำดับตัวเลขสุ่มที่เหมือนกัน ในเวลาเดียวกัน VISUALBASIC ยังมีฟังก์ชันเทคโนโลยีไบนารี่ที่มีประสิทธิภาพ เพื่อให้เราสามารถบรรลุการเข้ารหัสเนื้อหาไฟล์ตามแนวคิดต่อไปนี้:
X=RND(-คีย์)
'KEY เป็นจำนวนบวก
VAULE=INT(256*RND)'สร้างตัวเลขสุ่ม (ใช้เป็นรหัสผ่าน)
OpenFILENAME$ForBinaryAs#FILENUM'เปิดไฟล์
รับ #FILENUM, I, A'Get เนื้อหาไฟล์
B=AXORVAULE'รับไฟล์ที่เข้ารหัส
รวมกัน
C=BXORVAULE' รับไฟล์ที่ถอดรหัส (B คือเนื้อหาของไฟล์ที่เข้ารหัส)
หมายเหตุ: นี่ไม่ใช่เนื้อหาไฟล์ทั้งหมด อาจเป็นเพียงส่วนเล็กๆ ไม่กี่ไบต์ หรือแม้แต่ไบต์เดียวก็ได้ หากเป็นไบต์เดียว แต่ละไบต์ในไฟล์จะถูก XORed ด้วยตัวเลขที่แตกต่างกัน ถอดรหัสยากขนาดไหน กระบวนการเฉพาะ:
พารามิเตอร์ SubENDECODE(FILENAME$,MA,FILE2$)' คือ: ไฟล์ต้นฉบับ, รหัสผ่าน, ไฟล์เป้าหมาย
DimFILENUMAsInteger,XAsSingle,IAsSingle
DimCHARNUMAsInteger,RANDOMINTEGERAsInteger
DimSINGLECHARAsString*1,filen2AsInteger' รับไบต์เดียว
ถ้าMA<0พวกเขา
แมสซาชูเซต=แมสซาชูเซตส์*(-1)
สิ้นสุดถ้า
X=Rnd(-MA)'พารามิเตอร์เป็นลบ
FILENUM=ไฟล์ฟรี
OpenFILENAME$ForBinaryAs#FILENUM'ไฟล์โอเพ่นซอร์สในโหมดไบนารี
filen2=ไฟล์ฟรี
OpenFILE2$ForOutputAs#filen2'เปิดไฟล์เป้าหมายในไฟล์ต่อเนื่อง
ForI=1ToLOF(FILENUM)'LOF() ความยาวไฟล์เป็นไบต์
รับ#FILENUM,I,SINGLECHAR'รับเนื้อหาแบบไบต์เดียว
CHARNUM=Asc(ชาร์นัมตัวเดียว)
RANDOMINTEGER=Int(256*Rnd)'รับตัวอักษร
CHARNUM=CHARNUMXหรือRANDOMINTEGER'XOR
PRint#filen2,Chr$(CHARNUM);'เขียนไปยังไฟล์เป้าหมาย
ต่อไปผม
ปิดFILENUM
Closefilen2
ตกลง' เรียกกล่องโต้ตอบความสำเร็จ
สิ้นสุดย่อย
รูปแบบการโทร: ชื่อไฟล์ต้นฉบับ ENDECODE, รหัสผ่าน, ชื่อไฟล์เป้าหมาย
กระบวนการข้างต้นสามารถเข้ารหัสและถอดรหัส EXE, COM, ข้อความ และไฟล์อื่น ๆ ใด ๆ (จำนวนครั้งในการเข้ารหัสเป็นคี่ จำนวนครั้งในการถอดรหัส) โดยมีความสามารถในการทำซ้ำที่ยอดเยี่ยมและการรักษาความลับที่ดีเยี่ยม หากกระบวนการข้างต้นได้รับการประมวลผลเพิ่มเติม เช่น การประมวลผลแบบสุ่มหลายรายการ แล้วมันจะไปสู่ระดับที่สูงขึ้นซึ่งฉันจะไม่ทำซ้ำที่นี่
อย่างไรก็ตาม หากกระบวนการข้างต้นเปิดและเขียนไฟล์เป้าหมายเป็นไฟล์ไบนารี่ด้วย ดังนั้นเฉพาะข้อความตะวันตกเท่านั้นที่สามารถเข้ารหัสและถอดรหัสได้ สำหรับข้อความภาษาจีนล้วน จะถูกแก้ไขให้ใช้ไบต์สองเท่าและขนาดขั้นตอนของ I คือ 2. การใช้งานอื่นๆ (ข้อความรวมภาษาจีนและตะวันตก, EXE, COM และไฟล์อื่นๆ) จะไม่ได้รับผลลัพธ์ตามที่คาดหวัง สาเหตุอาจเป็นเพราะอักขระที่มี ASCII มากกว่า 127 ไม่สามารถแสดงได้ตามปกติ และไม่สามารถเขียนไฟล์ได้ตามปกติด้วย คำสั่ง put (ผลลัพธ์เป็นเพียงช่องว่าง) ผู้สนใจสามารถทดลองใช้งานได้
-