Tên hàm Giải thích
AddRoundKey() Được sử dụng trong công đoạn mã hóa và công đoạn giải mã. Hàm này thực hiện phép XOR bit giữa trạng thái trung gian (state) và một khóa vòng lặp (Round Key). kích thước của trạng thái bằng Kích thước của một Round Key.
MixColumns() Hàm này sử dụng trong công đoạn mã hóa, nhận tất cả các cột của một trạng thái và trộn với dữ liệu của nó để nhận được cột mới
ShiftRows() Hàm này sử dụng trong công đoạn mã hóa, xử lý các trạng thái bằng cách dịch vòng ba hàng cuối của trạng thái với số lần dịch khác nhau
SubBytes() Hàm này sử dụng trong công đoạn mã hóa, xử lý một trạng thái bằng cách sử dụng một bảng thế phi tuyến các byte, thao tác trên mỗi byte một cách độc lập InvMixColumns() Hàm này sử dụng trong công đoạn giải mã, là hàm
ngược của hàm MixColumns()
InvShiftRows() Hàm này sử dụng trong công đoạn giải mã, là hàm ngược của hàm ShiftRows()
Inv SubBytes() Hàm này sử dụng trong công đoạn giải mã, là hàm ngược của hàm SubBytes()
3.2.1 Công đoạn mã hóa
Khởi tạo, bản rõ được sao chép vào mảng trạng thái sử dụng các quy ước như trên. Mảng trạng thái khởi tạo được biến đổi bằng cách thực hiện một hàm vòng Nr lần (10, 12 hoặc 14 phụ thuộc vào độ dài của khóa) sau khi cộng với khóa RoundKey, trong đó lần cuối cùng thực hiện khác với các lần trước đó. Sau lần lặp cuối cùng trạng thái cuối sẽ được chuyển thành output của thuật toán. Bằng cách sử dụng một dãy các khóa được biểu diễn như là mảng một chiều của các word 4 byte được sinh ra từ thử tục sinh khóa hàm vòng được tham số hóa.
Tất cả các vòng đều thực hiện công việc giống nhau dựa trên 4 hàm theo thứ tự SubBytes(), ShiftRows(), MixColumns(), và AddRoundKey() ngoại trừ vòng cuối cùng không thực hiện hàm MixColumns().[4].
Hàm SubBytes()
Thực hiện phép thay thế các byte của mảng trạng thái bằng cách sử dụng một bảng thế khả nghịch S-box, xây dựng bằng cách kết hợp hai biến đổi sau:
1. Nhân nghịch đảo trên trường hữu hạn GF(28), phần tử {00} được ánh xạ thành chính nó
bi’= bi b(i+4)mod8 b(i+5)mod8 b(i+6)mod8 b(i+7)mod8 ci, trong đó 0 i 8 là bit thứ i của byte b tương ứng và ci là bit thứ I của byte c với giá trị {63} hay {01100011}
Dưới đây là hình minh họa kết quả áp dụng hàm biến đổi SubBytes() đối với mảng trạng thái