Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

การเข้ารหัสและถอดรหัสข้อมูลในอัลกอริธึมปักเป้าคืออะไร?


ปักเป้าเป็นอัลกอริธึมบล็อกแบบสมมาตรที่คิดค้นโดย Brute Schneier ในเดือนธันวาคม พ.ศ. 2536 อัลกอริทึมของ Blowfish มีข้อดีหลายประการ ใช้งานได้และมีประสิทธิภาพสำหรับการใช้งานฮาร์ดแวร์และไม่จำเป็นต้องมีใบอนุญาต ตัวดำเนินการเบื้องต้นของอัลกอริธึม Blowfish ประกอบด้วยการค้นหาตาราง การเพิ่ม และ XOR ตารางประกอบด้วย S-box สี่ตัวและ P-array หนึ่งกล่อง

ปักเป้าเป็นตัวเลขที่ขึ้นอยู่กับรอบของ Feistel และการออกแบบของฟังก์ชัน F ใช้จำนวนเพื่อทำให้หลักการที่ใช้ใน DES ง่ายขึ้นเพื่อรองรับการรักษาความปลอดภัยเดียวกันด้วยความเร็วและประสิทธิภาพที่สูงขึ้นในซอฟต์แวร์

ปักเป้าเป็นรหัสบล็อกสมมาตร 64 บิตที่ต้องการคีย์ความยาวผันแปรได้ตั้งแต่ 32 ถึง 448 บิต (14 ไบต์) อัลกอริธึมถูกสร้างขึ้นเพื่อเข้ารหัสข้อความธรรมดา 64 บิตเป็นข้อความเข้ารหัส 64 บิตอย่างมีประสิทธิภาพและปลอดภัย

การดำเนินการที่เลือกสำหรับอัลกอริทึม ได้แก่ การค้นหาตาราง โมดูลัส การเพิ่ม และระดับบิตพิเศษ หรือเพื่อลดเวลาที่จำเป็นในการเข้ารหัสและถอดรหัสข้อมูลบนโปรเซสเซอร์ 32 บิต

เช่นเดียวกับ DES Blowfish มีเครือข่าย Feistel 16 รอบสำหรับการเข้ารหัสและถอดรหัส แต่ในแต่ละรอบของ Blowfish ข้อมูล 32 บิตซ้ายและขวาจะเปลี่ยนไปไม่เหมือนกับ DES ซึ่งจะเปลี่ยนเฉพาะ 32 บิตด้านขวาเพื่อพัฒนาเป็น 32 บิตด้านซ้ายของรอบถัดไป

ปักเป้ารวมถึงบิตพิเศษหรือการดำเนินการที่จะนำไปใช้กับ 32 บิตด้านซ้ายก่อนที่จะมีการเปลี่ยนแปลงโดยฟังก์ชัน F หรือเผยแพร่ไปทางขวา 32 บิตสำหรับรอบต่อไป

ปักเป้ายังรวมถึงสองพิเศษ-หรือการดำเนินงานที่จะถูกนำมาใช้หลังจากรอบ 16 และการดำเนินการสลับ การดำเนินการนี้แตกต่างจากฟังก์ชันการเรียงสับเปลี่ยนที่ใช้ใน DES

ขั้นตอนการเข้ารหัส − มีสองข่าวของกระบวนการเข้ารหัสรวมถึงภาพข้อมูลเป็นข้อความธรรมดาและคีย์การเข้ารหัส ในวิธีนี้ บิตสตรีมข้อมูลรูปภาพต้นฉบับจะแบ่งออกเป็นความยาวบล็อกของอัลกอริธึม Blowfish

ส่วนหัวของรูปภาพไม่ได้รับอนุญาตให้เข้ารหัสและจุดเริ่มต้นของพิกเซลบิตแมปหรืออาร์เรย์เริ่มต้นทันทีหลังจากส่วนหัวของไฟล์ ส่วนประกอบไบต์ของอาร์เรย์จะถูกบันทึกในลำดับแถวจากซ้ายไปขวา โดยแต่ละแถวกำหนดบรรทัดการสแกนของรูปภาพหนึ่งบรรทัด และแถวของรูปภาพจะถูกเข้ารหัสจากบนลงล่าง

กระบวนการถอดรหัส − ภาพที่เข้ารหัสจะถูกแบ่งออกเป็นความยาวบล็อกที่เท่ากันของอัลกอริธึม Blowfish จากบนลงล่าง บล็อกแรกถูกป้อนในฟังก์ชันถอดรหัสและสามารถใช้คีย์เข้ารหัสที่เทียบเท่าเพื่อถอดรหัสรูปภาพได้ แต่แอปพลิเคชันของคีย์ย่อยจะกลับกัน กระบวนการถอดรหัสถูกขยายออกไปด้วยบล็อกต่างๆ ของรูปภาพจากบนลงล่าง

อัลกอริทึมพื้นฐานสำหรับปักเป้ามีดังนี้ -

แบ่ง x ออกเป็นสองส่วน 32 บิต :xL , xR .

จากนั้น สำหรับ i =1 ถึง 16;

x =xL XOR Pi

xR =F(xL ) XOR xR

สลับ xL และ xR

หลังวันที่ 16 th ปัดเศษ สลับ xL และ xR อีกครั้งเพื่อเลิกทำการสลับครั้งล่าสุด

จากนั้น ciphertext =การต่อกันของ xL และ xR , xR =xR XOR P17 และ xL =xL XOR P18 .