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] Nghịch đảo nhân trong GF(2^8)

    Nghịch đảo nhân của byte a≠0a \ne 0a=0 là byte xxx sao cho a⋅x=1a \cdot x = 1a⋅x=1 trong GF(28)GF(2^8)GF(28) (nhân modulo 0x11B0x11B0x11B). Quy ước 0−1=00^{-1} = 00−1=0.

    Cách đơn giản, xác định: duyệt xxx từ 111 đến 255255255, trả về xxx đầu tiên thỏa gmul(a,x)=1gmul(a, x) = 1gmul(a,x)=1. (Có thể dùng định lý Fermat a254a^{254}a254 nhưng duyệt là đủ và xác định.)

    Ví dụ: 0x53−1=0xCA0x53^{-1} = 0xCA0x53−1=0xCA → ca (vì 0x53⋅0xCA=10x53 \cdot 0xCA = 10x53⋅0xCA=1).

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

      Một dòng: một byte HEX hai chữ số.

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

      Một byte HEX trong [00,ff][00, ff][00,ff].

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

      Một dòng: nghịch đảo nhân dạng HEX hai chữ số viết thường.

    Ví dụ:

    Đầu vào:

    53
    

    Đầu ra:

    ca

    Giải thích:

    0x53 · 0xCA = 1 trong GF(2^8) → nghịch đảo là ca.

    Đang tải editor...