ปักเป้าเป็นอัลกอริธึมบล็อกแบบสมมาตรที่คิดค้นโดย 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 .