Khác biệt giữa bản sửa đổi của “Thuật toán khóa đối xứng”

Nội dung được xóa Nội dung được thêm vào
Dòng 31:
Theo định nghĩa, các hàm số dùng trong mật mã học phải có khả năng đảo ngược (''reversible''), vì chúng ta cần phải có khả năng vừa mật mã hóa các thông điệp song cũng đồng thời giải mã chúng (với điều kiện chúng ta có chìa khóa đúng của nó).
 
Trong quá khứ, nhiều phương pháp đã được sử dụng để giải quyết việc này. Trước đây, người ta đã từng dùng sách mật mã - trong đó chìa khóa phân hưởng liên quan đến nội dụng của quyển sách, mật mã khóa tự động - trong đó chìa khóa có thể được suy ra từ một phần của [[văn bản thuần túy]] (''plaintext''), mã [[Đục lỗ (mật mã)|đục lỗ]] (''grill'') (Có giả thuyết rằng phương pháp này đầu tiên được nhà toán học người Ý [[Gerolamo Cardano]] sáng chế)<ref>Mã đục lỗ (''[[tiếng Anh]]: Grill hay grille'') - là một phương pháp mật mã cổ xưa, trong đó, người muốn gửi một thông điệp mật mã lấy một miếng bìa rồi đục các lỗ ở nhiều vị trí khác nhau, mỗi lỗ là vị trí của một chữ trong thông điệp mật mã. Những khoảng trống giữa các chữ trong thông điệp mật sau đó được điền thêm vào và biến nó thành một bức thư thông thường. Mã đục lỗ đã được chứng minh là một phương pháp mật mã khó giải, trừ phi người giải mã có cùng một miếng bìa với các vị trí lỗ tương tự như miếng bìa của người viết mật mã. Do bị đục thành nhiều lỗ, miếng bìa trông giống một lưới sắt - như cái lưới sắt dùng để kẹp và nướng chả nên người ta gọi nó là ''grill'', hay lưới sắt. Có [http://www.resonancepub.com/homecrypto.htm nơi] nói rằng mật mã đục lỗ được sáng chế bởi Cardinal Richelieu vào khoảng 1600.</ref>, vân vân. Trong thời đại hiện nay, khi máy tính trở nên sẵn có, đa số các phương pháp mật mã đối xứng đều dựa vàotrên cơ sở 'vòng' tuần hoàn - (các lượt tính toán được nhắc đi nhắc lại). Thường thì một lượt được nhắc đi nhắc lại nhiều lần, theo một sự bố trí khá đơn giản, như trong ví dụ chung dưới đây. Phương pháp chung này thường được gán cho ông [[Horst Feistel]]. Để biết được nội dung có chiều sâu hơn nữa về phương pháp này (với biểu đồ minh họa), xin xem bài về [[Feistel cipher]].
 
Những bit dùng để mã hóa được phân ra là hai phần, ''P1'' và ''P2''. ''P1'' được giữ nguyên, không thay đổi, ''P2'' được cộng (hay được [[Phép toán thao tác bit#XOR|XOR]]) với một [[hàm băm một chiều]] (''one-way hashed function'') ''f'' (được biến thiên bởi một chìa khóa hay một nhân tố (''salt'')) của ''P1''. Hai kết quả này sau đó được đổi chỗ cho nhau. Mỗi quá trình này được gọi là 'một lượt' (hay một vòng).