RC4 là một mã dòng cổ điển gồm hai giai đoạn: khởi tạo hoán vị KSA (Key-Scheduling Algorithm) và sinh dòng khóa PRGA (Pseudo-Random Generation Algorithm), hoạt động trên mảng trạng thái S gồm 256 phần tử {0,…,255}.
KSA: khởi tạo S[i]=i với i=0,…,255; đặt j=0; với i từ 0 đến 255: j←(j+S[i]+K[imod∣K∣])mod256, sau đó hoán đổi S[i] và S[j] (với K là khóa, biểu diễn bằng mảng byte).
PRGA: đặt i=0,j=0; để sinh mỗi byte dòng khóa: i←(i+1)mod256; j←(j+S[i])mod256; hoán đổi S[i] và S[j]; byte dòng khóa là S[(S[i]+S[j])mod256].
Cho khóa K (dạng hex) và số nguyên n, hãy in ra n byte đầu tiên của dòng khóa RC4, dạng hex in hoa.
Ví dụ: khóa hex 4b6579 (chuỗi ASCII "Key"), n=9 cho dòng khóa EB9F7781B734CA72A7 (đây là ví dụ kinh điển được dùng để kiểm chứng cài đặt RC4).
Một dòng duy nhất gồm hai giá trị cách nhau bởi khoảng trắng: chuỗi hex của khóa K (số chữ số hex chẵn, độ dài khóa từ 1 đến 256 byte) và số nguyên n (0≤n≤500).
In ra một dòng là n byte dòng khóa dạng hex in hoa, nối liền nhau (độ dài 2n ký tự). Nếu n=0, in ra dòng trống.
Ví dụ:
Đầu vào:
4b6579 0
Đầu ra:
Đầu vào:
4b6579 9
Đầu ra:
EB9F7781B734CA72A7
Đang tải editor...