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] xtime: nhân với 2 trong GF(2^8)

    Trong GF(28)GF(2^8)GF(28) của AES, phép nhân với 2 (ký hiệu xtime) được dùng khắp MixColumns.

    Thuật toán xtime(a):

    1. Dịch trái a một bit.
    2. Nếu kết quả tràn quá 8 bit (bit thứ 8 = 1), XOR với đa thức rút gọn 0x1B0x1B0x1B (tương đương modulo 0x11B=x8+x4+x3+x+10x11B = x^8+x^4+x^3+x+10x11B=x8+x4+x3+x+1).

    xtime(a)={a≪1neˆˊu a<0x80(a≪1)⊕0x1Bneˆˊu a≥0x80xtime(a) = \begin{cases} a \ll 1 & \text{nếu } a < 0x80 \\ (a \ll 1) \oplus 0x1B & \text{nếu } a \ge 0x80 \end{cases}xtime(a)={a≪1(a≪1)⊕0x1B​neˆˊu a<0x80neˆˊu a≥0x80​

    Ví dụ: xtime(0x57): 0x57≪1=0xAE0x57 \ll 1 = 0xAE0x57≪1=0xAE (chưa tràn) → ae.

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

      Một dòng: một byte dạng HEX hai chữ số (ví dụ 57).

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

      Đầu vào là 1 byte HEX trong [00,ff][00, ff][00,ff].

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

      Một dòng: kết quả xtime dạng HEX hai chữ số viết thường.

    Ví dụ:

    Đầu vào:

    57
    

    Đầu ra:

    ae

    Giải thích:

    0x57 = 0101_0111. Dịch trái: 1010_1110 = 0xAE, không tràn quá 8 bit nên không XOR 0x1B → ae.

    Đang tải editor...