DES là mật mã khối. Quy trình mã hóa bao gồm hai hoán vị (P-boxes) gọi là hoán vị ban đầu và hoán vị cuối cùng, và 16 vòng Feistel. Mỗi vòng cần một khóa vòng 48-bit khác nhau được tạo từ khóa mật mã theo thuật toán định sẵn.
DES dựa trên hai thuộc tính cơ bản của mật mã học: thay thế (confusion) và hoán vị (diffusion). DES bao gồm 16 bước, mỗi bước gọi là một vòng.
Mỗi vòng thực hiện các bước thay thế và hoán vị. DES là hệ mật đối xứng. Khối cần mã hóa trải qua hoán vị ban đầu IP, sau đó là tính toán phức tạp phụ thuộc khóa, và cuối cùng là hoán vị ngược của IP (IP⁻¹).
Hãy thảo luận các bước sau trong DES:
Hoán vị ban đầu (IP) - Chỉ thực hiện một lần ở đầu quá trình mã hóa. Sau khi bản rõ chia thành khối 64 bit, IP áp dụng cho từng khối. Đây là bước trong thủ tục hoán vị.
Các vòng (Rounds) - DES dùng 16 vòng. Mỗi vòng DES là mật mã Feistel. Vòng nhận Lᵢ₋₁ và Rᵢ₋₁ từ vòng trước và tạo Lᵢ và Rᵢ cho vòng tiếp theo. Mỗi vòng có hai thành phần mật mã (mixer và swapper).
Cả hai thành phần đều khả nghịch. Swapper chắc chắn khả nghịch - nó hoán đổi nửa trái với nửa phải. Mixer khả nghịch qua phép XOR. Tất cả thành phần không khả nghịch được gom trong hàm f(Rᵢ₋₁, Kᵢ).
Hoán vị cuối cùng (FP) - Sau 16 vòng, hoán vị cuối cùng được áp dụng. Đây là hoán vị đơn giản dựa trên bảng. Ví dụ, đầu vào thứ 40 lấy vị trí bit đầu ra thứ 1, v.v. Đầu ra của hoán vị cuối là khối mã hóa 64-bit.
| 40 | 8 | 48 | 16 | 56 | 24 | 64 | 32 | 39 | 7 | 47 | 15 | 55 | 23 | 63 | 31 |
| 38 | 6 | 46 | 14 | 54 | 22 | 62 | 30 | 37 | 5 | 45 | 13 | 53 | 21 | 61 | 29 |
| 36 | 4 | 44 | 12 | 52 | 20 | 60 | 28 | 35 | 3 | 43 | 11 | 51 | 19 | 59 | 27 |
| 34 | 2 | 42 | 10 | 50 | 18 | 58 | 26 | 33 | 1 | 41 | 9 | 49 | 17 | 57 | 25 |
Giải mã DES - Là lược đồ mã hóa phức tạp, giải mã DES dùng cách tiếp cận khác. Thuật toán giống hệt dùng cho mã hóa cũng dùng cho giải mã.
Giá trị các bảng và phép toán cũng như thứ tự được chọn cẩn trọng để thuật toán có thể đảo ngược. Sự khác biệt duy nhất giữa mã hóa và giải mã là đảo ngược các phần khóa.
Nếu khóa gốc K chia thành K1, K2, K3...K16 cho 16 vòng mã hóa, thì giải mã dùng khóa theo thứ tự K16, K15, K14...K1.