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