Quá trình mã hóa bao gồm 4 bƣớc:

Một phần của tài liệu TÌM HIỂU VÀ XÂY DỰNG ỨNG DỤNG MÃ HÓA KHÓA ĐỐI XỨNG BẰNG THUẬT TOÁN RIJNDAEL (Trang 45 - 47)

)

3.4.1Quá trình mã hóa bao gồm 4 bƣớc:

1. AddRoundKey — mỗi byte của khối đƣợc kết hợp với khóa con, các khóa con này đƣợc tạo ra từ quá trình tạo khóa con Rijndael.

2. SubBytes — đây là phép thế (phi tuyến) trong đó mỗi byte sẽ đƣợc thế bằng một byte khác theo bảng tra (Rijndael S-box).

3. ShiftRows — đổi chỗ, các hàng trong khối đƣợc dịch vòng.

4. MixColumns — quá trình trộn làm việc theo các cột trong khối theo một phép biến đổi tuyến tính.

Tại chu trình cuối thì bƣớc MixColumns đƣợc thay thế bằng bƣớc AddRoundKey

Mỗi phép biến đổi thao tác trên trạng thái hiện hành S. Kết quả S’ của mỗi phép biến đổi sẽ trở thành đầu vào của phép biến đổi kế tiếp trong quy trình mã hóa.

Trƣớc tiên, toàn bộ dữ liệu đầu vào đƣợc chép vào mảng trạng thái hiện hành. Sau khi thực hiện thao tác cộng mã khóa đầu tiên, mảng trạng thái sẽ đƣợc trải qua Nr = 10, 12 hay 14 chu kỳ biến đổi (tùy thuộc vào độ dài của mã khóa chính cũng nhƣ độ dài của khối đƣợc xử lý). Nr −1 chu kỳ đầu tiên là các chu kỳ biến đổi bình thƣờng và hoàn toàn tƣơng tự nhau, riêng chu kỳ biến đổi cuối cùng có sự khác biệt so với Nr −1 chu kỳ trƣớc đó. Cuối cùng, nội dung của mảng trạng thái sẽ đƣợc chép lại vào mảng chứa dữ liệu đầu ra.

46

Quy trình mã hóa Rijndael đƣợc tóm tắt lại nhƣ sau:

1. Thực hiện thao tác AddRoundKey đầu tiên trƣớc khi thực hiện các chu kỳ

mã hóa.

2. Nr – 1 chu kỳ mã hóa bình thƣờng: mỗi chu kỳ bao gồm bốn bƣớc biến đổi

liên tiếp nhau: SubBytes, ShiftRows, MixColumns, và AddRoundKey.

3. Thực hiện chu kỳ mã hóa cuối cùng: trong chu kỳ này thao tác MixColumns đƣợc bỏ qua

Trong thuật toán dƣới đây, mảng w[] chứa bảng mã khóa mở rộng; mảng in[] và out[] lần lƣợt chứa dữ liệu vào và kết quả ra của thuật toán mã hóa.

47

Một phần của tài liệu TÌM HIỂU VÀ XÂY DỰNG ỨNG DỤNG MÃ HÓA KHÓA ĐỐI XỨNG BẰNG THUẬT TOÁN RIJNDAEL (Trang 45 - 47)