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] Phép thế SubBytes bằng S-box của AES

    Bước SubBytes của AES thay mỗi byte aaa của trạng thái bằng một byte khác thông qua S-box, được xây dựng theo hai bước trên trường GF(28)GF(2^8)GF(28) (đa thức x8+x4+x3+x+1x^8+x^4+x^3+x+1x8+x4+x3+x+1):

    1. Tính bbb là nghịch đảo nhân của aaa trong GF(28)GF(2^8)GF(28) (quy ước nghịch đảo của 0 là 0).
    2. Áp dụng biến đổi affine: s=b⊕rotl(b,1)⊕rotl(b,2)⊕rotl(b,3)⊕rotl(b,4)⊕0x63s = b \oplus \text{rotl}(b,1) \oplus \text{rotl}(b,2) \oplus \text{rotl}(b,3) \oplus \text{rotl}(b,4) \oplus \text{0x63}s=b⊕rotl(b,1)⊕rotl(b,2)⊕rotl(b,3)⊕rotl(b,4)⊕0x63, trong đó rotl(b,k)\text{rotl}(b,k)rotl(b,k) là phép quay trái kkk bit trong phạm vi 8 bit.

    Không được tra một bảng S-box có sẵn nào — hãy tự tính S-box theo đúng công thức trên. Cho một dãy byte (dạng hex), hãy in ra dãy byte sau khi áp SubBytes lên từng byte.

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

      Một dòng chứa chuỗi hex (có thể rỗng), độ dài chẵn, biểu diễn dãy byte đầu vào.

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

      In ra một dòng là chuỗi hex viết thường sau khi thế từng byte qua S-box, giữ nguyên thứ tự và độ dài.

      Ví dụ: với đầu vào 0053ff, kết quả là 63ed16 (vì SubBytes(0x00) = 0x63, SubBytes(0x53) = 0xed, SubBytes(0xff) = 0x16).

    Ví dụ:

    Đầu vào:

    00

    Đầu ra:

    63
    

    Đầu vào:

    Đầu ra:

    
    

    Đang tải editor...