มีองค์ประกอบต่างๆ ของ DES ซึ่งมีดังนี้ -
การเปลี่ยนแปลงที่สำคัญ − คีย์ 64 บิตเริ่มต้นเปลี่ยนเป็นคีย์ 56 บิตโดยละทิ้ง 8 th บิตของคีย์เริ่มต้น ดังนั้นในแต่ละรอบจึงใช้คีย์ 56 บิต จากคีย์ 56 บิตนี้ มีการสร้างคีย์ย่อย 48 บิตหลายคีย์ในทุกๆ รอบโดยใช้ขั้นตอนที่เรียกว่าการแปลงคีย์ คีย์ 56 บิตแบ่งออกเป็นสองส่วน แต่ละส่วนมี 28 บิต
รอบ | 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 |
จำนวนบิตคีย์ที่เลื่อนในแต่ละรอบ
ในขั้นตอนการแปลงคีย์ จะรวมถึงการเรียงสับเปลี่ยนและการเลือกคีย์ 48 บิตจากคีย์ 56 บิตดั้งเดิมซึ่งเรียกว่าการเรียงสับเปลี่ยนการบีบอัด ในเทคนิคการเรียงสับเปลี่ยนการบีบอัด มีชุดย่อยของบิตคีย์หลายชุดที่ใช้ในแต่ละรอบ สิ่งนี้สร้าง DES ที่ไม่ใช่แค่การถอดรหัส
การขยายการเปลี่ยนแปลง − หลังจากการเรียงสับเปลี่ยนเริ่มต้น จะมีพื้นที่ข้อความธรรมดาแบบ 32 บิตสองพื้นที่ เรียกว่าข้อความธรรมดาด้านซ้ายและข้อความธรรมดาด้านขวา ในระหว่างการเรียงสับเปลี่ยนการขยาย RPT จะกระจายจาก 32 บิตเป็น 48 บิต สามารถเพิ่มขนาดบิตได้จาก 32 เป็น 48 บิตจะถูกเรียงสับเปลี่ยนเป็นที่รู้จักกันดีในชื่อการเปลี่ยนลำดับการขยาย
ดังที่จะเห็นได้ในขั้นแรก กระบวนการแปลงคีย์จะบีบอัดคีย์แบบ 56 บิตเป็น 48 บิต ดังนั้น กระบวนการเปลี่ยนลำดับการขยายจึงพัฒนา RPT แบบ 32 บิตเป็น 48 บิต
การทดแทน S-box − การแทนที่ S-box เป็นขั้นตอนที่ยอมรับอินพุต 48 บิตจากการดำเนินการ XOR ที่มีคีย์บีบอัดและ RPT ที่ขยายออก และพัฒนาเอาต์พุต 32 บิตโดยใช้เทคนิคการแทนที่
การเปลี่ยนตัวดำเนินการโดยกล่องเปลี่ยนตัวแปดกล่อง (หรือที่เรียกว่ากล่อง S) S-box แปดกล่องแต่ละกล่องมีอินพุต 6 บิตและเอาต์พุต 4 บิต บล็อกอินพุต 48 บิตแบ่งออกเป็น 8 บล็อกย่อย (แต่ละบล็อกมี 6 บิต) และแต่ละบล็อกย่อยมีให้กับ S-box
การเรียงสับเปลี่ยน P-box − เอาต์พุตของ S-box มี 32 บิต 32 บิตเหล่านี้ถูกเรียงสับเปลี่ยนโดยใช้ P-box โครงสร้างการเรียงสับเปลี่ยนที่ตรงไปตรงมานี้ประกอบด้วยการเรียงสับเปลี่ยนอย่างง่าย รวมถึงการแทนที่แต่ละบิตด้วยบิตอื่นตามที่กำหนดไว้ในตาราง Pbox โดยไม่มีการขยายหรือบีบอัดใดๆ สิ่งนี้เรียกว่าการเรียงสับเปลี่ยน P-box
XOR และ SWAP − สามารถใช้การดำเนินการทั้งหมดเหล่านี้ได้เฉพาะในส่วนครึ่งขวา 32 บิตของข้อความธรรมดาดั้งเดิม 64 บิต (เช่น บน RPT) ส่วนครึ่งทางซ้าย (เช่น LPT) ยังไม่ได้รับผลกระทบ
ในช่วงหัวเลี้ยวหัวต่อนี้ ส่วนครึ่งซ้ายของบล็อกข้อความธรรมดา 64 บิตเริ่มต้น (เช่น LPT) จะเป็น XOR โดยเอาต์พุตที่สร้างโดยการเปลี่ยน P-box ผลลัพธ์ของการดำเนินการ XOR นี้พัฒนาเป็นครึ่งใหม่ขวา (เช่น RPT) ครึ่งขวาเก่า (เช่น RPT) พัฒนาเป็นครึ่งซ้ายใหม่ในขั้นตอนการแลกเปลี่ยน