Mật mã Hill là một mật mã cổ điển dùng đại số tuyến tính trên Z26 (bảng chữ cái A-Z được đánh số A=0,B=1,…,Z=25). Với ma trận khóa K=(acbd) cỡ 2×2, bản rõ được chia thành các khối 2 ký tự liên tiếp (p1,p2); mỗi khối được mã hóa thành (c1,c2) theo công thức
c1=(ap1+bp2)mod26,c2=(cp1+dp2)mod26.
Nếu bản rõ có độ dài lẻ, thêm ký tự X vào cuối trước khi chia khối.
Cho ma trận khóa và một xâu bản rõ (chỉ gồm chữ in hoa A-Z, không dấu cách), hãy mã hóa theo Hill cipher.
Ví dụ: với khóa a=9,b=4,c=5,d=7 và bản rõ FAST, ta chia thành 2 khối FA và ST. Khối FA (p1=5,p2=0) cho c1=(9⋅5+4⋅0)mod26=19=T, c2=(5⋅5+7⋅0)mod26=25=Z, tức khối mã TZ. Tương tự khối ST cho ra EP. Vậy bản mã là TZEP.
Dòng 1: 4 số nguyên a b c d (0≤a,b,c,d≤25), là các phần tử của ma trận khóa theo thứ tự hàng (hàng 1: a,b; hàng 2: c,d). Dòng 2: xâu bản rõ chỉ gồm chữ in hoa A-Z (độ dài từ 1 đến 104, có thể lẻ).
Một dòng duy nhất là bản mã (chữ in hoa A-Z). Nếu bản rõ có độ dài lẻ, hệ thống tự thêm X vào cuối trước khi mã hóa nên bản mã sẽ dài hơn bản rõ gốc đúng 1 ký tự trong trường hợp đó.
Ví dụ:
Đầu vào:
3 3 2 5
HELP
Đầu ra:
HIAT
Đầu vào:
1 0 0 1
TEST
Đầu ra:
TEST
Đang tải editor...