Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình

Số vòng trong DES (16 Rounds) - Chi tiết từng vòng

Tổng quan

DES sử dụng 16 vòng (rounds). Mỗi vòng bao gồm các bước cấp cao:

1. Biến đổi khóa (Key Transformation)

  • Khóa 64-bit ban đầu → loại bỏ mỗi bit thứ 8 → khóa 56-bit.
  • Mỗi vòng: từ khóa 56-bit sinh khóa con 48-bit khác nhau (subkey) bằng quá trình key transformation.
  • Khóa 56-bit chia 2 nửa 28-bit. Dịch vòng tròn trái (circular left shift) 1 hoặc 2 vị trí tùy vòng.
  • Vòng 1, 2, 9, 16: dịch 1 vị trí. Các vòng còn lại: dịch 2 vị trí.

Bảng số bit dịch mỗi vòng:

Vòng12345678910111213141516
Bit dịch1122222212222221

2. Hoán vị mở rộng (Expansion Permutation)

Sau hoán vị ban đầu: 2 nửa 32-bit LPT (Left Plain Text) và RPT (Right Plain Text). RPT mở rộng 32→48 bit, các bit được hoán vị (expansion permutation).

3. Thay thế S-box (S-box Substitution)

Chấp nhận 48-bit đầu vào từ XOR (khóa nén + RPT mở rộng), tạo 32-bit đầu ra bằng kỹ thuật thay thế.

4. Hoán vị P-box (P-box Permutation)

Đầu ra S-box 32-bit được hoán vị bằng P-box. Hoán vị đơn giản: thay thế mỗi bit bằng bit khác theo bảng P-box, không mở rộng/nén.

Bảng P-box (2 hàng x 16 cột):

16720212912281711523265183110
28241432273919133062211425

Ví dụ: 16 ở khối 1 → bit vị trí 16 input thành bit vị trí 1 output. 10 ở khối 16 → bit vị trí 10 input thành bit vị trí 16 output.

5. XOR và Hoán đổi (XOR and Swap)

Các phép toán trên chỉ áp dụng cho nửa phải 32-bit của plaintext 64-bit gốc. Nửa trái chưa bị ảnh hưởng. Lúc này: nửa trái ban đầu XOR với đầu ra P-box Permutation.