Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [An toàn thông tin] Mã hóa Hill 2x2

    Mật mã Hill là một mật mã cổ điển dùng đại số tuyến tính trên Z26\mathbb{Z}_{26}Z26​ (bảng chữ cái A-Z được đánh số A=0,B=1,…,Z=25A=0,B=1,\dots,Z=25A=0,B=1,…,Z=25). Với ma trận khóa K=(abcd)K=\begin{pmatrix}a&b\\c&d\end{pmatrix}K=(ac​bd​) cỡ 2×22\times22×2, bản rõ được chia thành các khối 2 ký tự liên tiếp (p1,p2)(p_1,p_2)(p1​,p2​); mỗi khối được mã hóa thành (c1,c2)(c_1,c_2)(c1​,c2​) theo công thức

    c1=(a p1+b p2) mod 26,c2=(c p1+d p2) mod 26.c_1=(a\,p_1+b\,p_2)\bmod 26,\qquad c_2=(c\,p_1+d\,p_2)\bmod 26.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=7a=9,b=4,c=5,d=7a=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=0p_1=5,p_2=0p1​=5,p2​=0) cho c1=(9⋅5+4⋅0) mod 26=19=Tc_1=(9\cdot5+4\cdot0)\bmod26=19=Tc1​=(9⋅5+4⋅0)mod26=19=T, c2=(5⋅5+7⋅0) mod 26=25=Zc_2=(5\cdot5+7\cdot0)\bmod26=25=Zc2​=(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.

    • Định dạng đầu vào:

      Dòng 1: 4 số nguyên a b c da\ b\ c\ da b c d (0≤a,b,c,d≤250\le a,b,c,d\le250≤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,ba,ba,b; hàng 2: c,dc,dc,d). Dòng 2: xâu bản rõ chỉ gồm chữ in hoa A-Z (độ dài từ 1 đến 10410^4104, có thể lẻ).

    • Định dạng đầu ra:

      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...