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] Hằng số Rcon trong lịch trình khóa AES

    Trong thuật toán sinh khóa vòng (key expansion) của AES, mỗi khi bắt đầu một từ khóa mới ở vị trí là bội số của NkN_kNk​, thuật toán XOR thêm một hằng số vòng Rcon(i)\text{Rcon}(i)Rcon(i) (chỉ có byte đầu khác 0, ba byte sau luôn bằng 0). Byte khác 0 đó được định nghĩa bởi công thức đệ quy trong trường hữu hạn GF(28)GF(2^8)GF(28) với đa thức bất khả quy x8+x4+x3+x+1x^8+x^4+x^3+x+1x8+x4+x3+x+1 (tương ứng số hex 0x11B):

    rc(1)=1,rc(i)=2⋅rc(i−1) (nhaˆn trong GF(28)), i≥2rc(1) = 1,\qquad rc(i) = 2 \cdot rc(i-1) \ \text{(nhân trong } GF(2^8)\text{)},\ i \ge 2rc(1)=1,rc(i)=2⋅rc(i−1) (nhaˆn trong GF(28)), i≥2

    trong đó phép nhân với 2 (gọi là xtime) được tính bằng cách dịch trái 1 bit, và nếu bit cao nhất bị tràn thì XOR thêm 0x1B.

    Cho TTT chỉ số iii, hãy tính rc(i)rc(i)rc(i) (byte đầu của Rcon) cho từng chỉ số.

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

      Dòng đầu tiên là số nguyên TTT (0≤T≤10000 \le T \le 10000≤T≤1000). TTT dòng tiếp theo, mỗi dòng chứa một số nguyên iii (1≤i≤5001 \le i \le 5001≤i≤500).

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

      In ra TTT dòng, mỗi dòng là giá trị rc(i)rc(i)rc(i) dưới dạng đúng 2 chữ số hex viết thường, theo thứ tự đầu vào.

      Ví dụ: với đầu vào

      3
      1
      2
      9
      

      kết quả là

      01
      02
      1b
      

    Ví dụ:

    Đầu vào:

    10
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    Đầu ra:

    01
    02
    04
    08
    10
    20
    40
    80
    1b
    36
    

    Đầu vào:

    1
    1

    Đầu ra:

    01
    

    Đang tải editor...