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

DES มีกี่รอบ?


DES ใช้ 16 รอบ แต่ละรอบทั้ง 16 รอบมีขั้นตอนระดับกว้างๆ ดังนี้ -

  • การเปลี่ยนแปลงที่สำคัญ − คีย์ 64 บิตเริ่มต้นเปลี่ยนเป็นคีย์ 56 บิตโดยละทิ้ง 8 th บิตของคีย์เริ่มต้น ดังนั้นในแต่ละรอบจึงมีคีย์ 56 บิต จากคีย์ 56 บิตนี้ คีย์ย่อย 48 บิตที่แตกต่างกันจะถูกสร้างขึ้นในแต่ละรอบโดยใช้กระบวนการที่เรียกว่าการแปลงคีย์

    คีย์ 56 บิตแบ่งออกเป็นสองส่วน แต่ละส่วนมี 28 บิต ส่วนเหล่านี้จะถูกเลื่อนเป็นวงกลมไปทางซ้ายหนึ่งหรือสองตำแหน่ง ขึ้นอยู่กับรอบ

    ตัวอย่างเช่น ถ้าตัวเลขกลมคือ 1, 2, 9 หรือ 16 กะจะเสร็จสมบูรณ์โดยตำแหน่งเดียวเท่านั้น สำหรับรอบอื่น การเลื่อนแบบวงกลมจะเสร็จสมบูรณ์โดยสองตำแหน่ง จากนั้นจำนวนบิตคีย์ที่เลื่อนต่อรอบจะแสดงในตาราง

รอบ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
เปลี่ยนจำนวนคีย์บิต 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1

จำนวนบิตคีย์ที่เลื่อนในแต่ละรอบ

  • การขยายการเปลี่ยนแปลง − หลังจากการเรียงสับเปลี่ยนเริ่มต้น จะมีพื้นที่ข้อความธรรมดาแบบ 32 บิตสองส่วน เรียกว่าข้อความธรรมดาด้านซ้ายและข้อความธรรมดาด้านขวา ในระหว่างการเรียงสับเปลี่ยนการขยาย RPT จะกระจายจาก 32 บิตเป็น 48 บิต สามารถเพิ่มขนาดบิตจาก 32 เป็น 48 บิตจะถูกเรียงสับเปลี่ยนเป็นที่รู้จักกันดีในชื่อการเปลี่ยนลำดับการขยาย

  • การทดแทน S-box - การแทนที่ S-box เป็นขั้นตอนที่ยอมรับอินพุต 48 บิตจากการดำเนินการ XOR ที่มีคีย์บีบอัดและ RPT ที่ขยายออก และสร้างเอาต์พุต 32 บิตโดยใช้เทคนิคการแทนที่

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

    P-box จะแสดงอยู่ในตาราง ตัวอย่างเช่น 16 ในบล็อกแรกแสดงว่าบิตที่ตำแหน่ง 16 ของอินพุตดั้งเดิมเปลี่ยนเป็นบิตที่ตำแหน่ง 1 ในเอาต์พุตและ 10 ในบล็อกหมายเลข 16 แสดงว่าบิตที่ตำแหน่ง 10 ของอินพุตดั้งเดิมเปลี่ยนเป็นบิต ที่ตำแหน่ง 16 ในเอาต์พุต

16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10
2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25
  • XOR และสลับ − สามารถใช้การดำเนินการทั้งหมดเหล่านี้ได้เฉพาะในส่วนครึ่งขวา 32 บิตของข้อความธรรมดาดั้งเดิม 64 บิต ส่วนครึ่งซ้ายไม่รู้สึกประทับใจเลย ที่จุดเชื่อมต่อนี้ ส่วนครึ่งซ้ายของบล็อกข้อความธรรมดา 64 บิตเริ่มต้นคือ XORed โดยมีเอาต์พุตที่สร้างโดย P-box Permutation