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

คีย์ย่อยถูกสร้างขึ้นในอัลกอริธึม Blowfish อย่างไร?


ปักเป้าเป็นอัลกอริธึมรหัสบล็อกสมมาตรที่คิดค้นโดย Brute Schneier ในเดือนธันวาคม พ.ศ. 2536 ปักเป้าใช้แทน DES หรือ IDEA หนึ่งในรหัสเครือข่าย feistel ที่ได้รับความนิยมมากที่สุดคือปักเป้า อัลกอริธึม Blowfish มีขนาดบล็อก 64 บิตและความยาวของคีย์แปรผันจาก 42 บิตถึง 448 บิต อัลกอริทึมประกอบด้วยส่วนการขยายคีย์และส่วนการเข้ารหัสข้อมูล

ปักเป้าสร้างคีย์สูงสุด 448 บิตในอาร์เรย์คีย์ย่อยหลาย ๆ รวมเป็น 1042 ค่า 32 บิตหรือ 4168 ไบต์ มันคือระบบ Feistel 16 รอบ ซึ่งรองรับ S-box ที่ขึ้นกับคีย์ที่สูงมาก และเปิดใช้งานการวนซ้ำ 16 ครั้ง

ทุกรอบจะถูกปรับด้วยการแทนที่ที่ขึ้นกับคีย์และข้อมูล และการเรียงสับเปลี่ยนที่ขึ้นกับคีย์ คำ 32 บิตและการดำเนินการ XOR ถูกนำไปใช้โดยการเพิ่ม มี P-array และ S-box 32 บิตสี่กล่อง

P-array ประกอบด้วยคีย์ย่อยแบบ 32 บิต 18 คีย์จากทั้งหมด 18 คีย์ ในขณะที่ S-box แต่ละรายการมี 256 รายการ อินพุตเป็นองค์ประกอบข้อมูล 64 บิต ขั้นตอนการสร้างคีย์ย่อยมีดังนี้ -

  • ปักเป้าสร้างการใช้คีย์ย่อยจำนวนมาก คีย์เหล่านี้ต้อง beready ก่อนการเข้ารหัสและถอดรหัสจะปรากฏขึ้น ฟิลด์ขนาดคีย์จาก 32 บิตถึง 448 บิต กล่าวอีกนัยหนึ่ง ขนาดคีย์มีตั้งแต่ 1 ถึง 14 คำ โดยแต่ละคำมี aword เท่ากับ 32 บิต คีย์เหล่านี้ถูกบันทึกไว้ในอาร์เรย์ดังนี้ -

    K1, K2,….Kn โดยที่ 1 ≤ n ≤ 14

  • แนวคิดของ P-array รวมถึง 18, 32 บิตคีย์ย่อย -

    P1,P2,………….,P18.

    จะมีการอธิบายการสร้าง P-array ในภายหลัง

  • S-Box แบบ 32 บิตมีสี่กล่อง แต่ละรายการมี 256 รายการ -

    S1, 0, S1, 1… S1, 255

    S2, 0, S2, 1… S2, 255

    S3, 0, S3, 1… S3, 255

    S4, 0, S4, 1… S4, 255

    การสร้าง P-array จะถูกกำหนดในภายหลัง

  • โดยสามารถเริ่มต้น P-array ก่อน ตามด้วย S-box สี่กล่อง โดยมีสตริงคงที่

  • P Array และช่อง S สี่ช่องคือเลขฐานสิบหกของ Pi

  • สามารถใช้การดำเนินการ XOR ระดับบิตของ P-array และด้วย K อาร์เรย์ reusingwords จากอาร์เรย์ K ที่จำเป็นกับคีย์บิต (เช่น P1 XOR (สามสิบสองบิตของคีย์), P2 XOR (สามสิบสองบิตของคีย์)

  • สามารถเข้ารหัสบล็อก 64 บิตและใช้กระบวนการเข้ารหัสต่อไปนี้เพื่อเข้ารหัสศูนย์ทั้งหมดด้วยอาร์เรย์ P และ S ทั่วไป

  • สามารถสร้างตำแหน่งของ p1 และ p2 ด้วยเอาต์พุตของการเข้ารหัสและเอาต์พุตใหม่เป็น p1 และ p2

  • สามารถเข้ารหัสเอาต์พุตของขั้นตอนที่ 3 โดยใช้กล่อง P และกล่อง S ปัจจุบัน และ transformp3 และ p4 ด้วยข้อความที่เข้ารหัสและเอาต์พุตใหม่จะเรียกว่า p3 และ p4

  • สามารถทำซ้ำขั้นตอนต่อไปนี้ได้จนกว่าจะได้รับองค์ประกอบทั้งหมดของอาร์เรย์ P เช่น i.eP1, P2