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] Kiểm tra toàn vẹn bản tin bằng HMAC

    Nhiều giao thức bảo mật (TLS, IPsec, SSH,...) dùng mã xác thực bản tin HMAC để bảo đảm tính toàn vẹn: bên gửi tính T=HMAC-SHA256(K,M)T = \text{HMAC-SHA256}(K, M)T=HMAC-SHA256(K,M) rồi gửi kèm MMM và TTT; bên nhận tính lại HMAC và so sánh với TTT nhận được.

    Cho khóa bí mật KKK (dạng chuỗi hex, có thể là chuỗi rỗng), bản tin MMM (chuỗi ký tự, có thể chứa khoảng trắng, có thể rỗng) và mã xác thực nhận được TTT (chuỗi hex viết thường), hãy xác định bản tin có toàn vẹn hay không.

    Ví dụ: Với KKK = 2b7e151628aed2a6abf7158809cf4f3c, MMM = Test Message, TTT = 6b5b18223c0c43ac0b01cfeb9f25d1ebc8fd217d5f21adb43ad146ae991132be thì HMAC-SHA256(K,M)\text{HMAC-SHA256}(K,M)HMAC-SHA256(K,M) tính được đúng bằng TTT, nên bản tin hợp lệ.

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

      Ba dòng: dòng 1 là KKK (chuỗi hex, số ký tự chẵn, có thể rỗng); dòng 2 là bản tin MMM (đọc nguyên vẹn cả dòng, có thể chứa khoảng trắng, có thể rỗng); dòng 3 là TTT (chuỗi hex viết thường, đúng 64 ký tự).

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

      In ra VALID nếu HMAC-SHA256(KKK, MMM) (dạng hex viết thường) trùng với TTT; ngược lại in INVALID.

    Ví dụ:

    Đầu vào:

    
    hello
    4352b26e33fe0d769a8922a6ba29004109f01688e26acc9e6cb347e5a5afc4da
    

    Đầu ra:

    VALID
    

    Đầu vào:

    2b7e151628aed2a6abf7158809cf4f3c
    Test Message
    6b5b18223c0c43ac0b01cfeb9f25d1ebc8fd217d5f21adb43ad146ae991132be
    

    Đầu ra:

    VALID
    

    Đang tải editor...