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] Nhân hai byte trong GF(2^8)

    Phép nhân trong GF(28)GF(2^8)GF(28) của AES là nhân đa thức modulo 0x11B=x8+x4+x3+x+10x11B = x^8+x^4+x^3+x+10x11B=x8+x4+x3+x+1.

    Thuật toán (Russian peasant / shift-and-add): lặp 8 lần:

    1. Nếu bit thấp của bbb bằng 1: p⊕=ap \mathrel{\oplus}= ap⊕=a.
    2. Nhân aaa với 2 bằng xtime (dịch trái, tràn thì XOR 0x1B0x1B0x1B).
    3. Dịch bbb sang phải 1 bit.

    Ví dụ: 0x57⋅0x83=0xC10x57 \cdot 0x83 = 0xC10x57⋅0x83=0xC1 → c1 (kết quả nổi tiếng trong tài liệu AES).

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

      Một dòng: hai byte HEX hai chữ số, cách nhau khoảng trắng.

    • Ràng buộc đầu vào:

      Hai byte HEX trong [00,ff][00, ff][00,ff].

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

      Một dòng: tích trong GF(28)GF(2^8)GF(28) dạng HEX hai chữ số viết thường.

    Ví dụ:

    Đầu vào:

    57 83
    

    Đầu ra:

    c1

    Giải thích:

    0x57 · 0x83 mod 0x11B = 0xC1 → c1.

    Đang tải editor...