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] Mô phỏng xác thực đăng nhập bằng salted hash

    Một hệ thống lưu trữ mật khẩu người dùng dưới dạng H=SHA256(T∥P)H = \text{SHA256}(T \Vert P)H=SHA256(T∥P), trong đó TTT là salt cố định của tài khoản và PPP là mật khẩu đúng. Khi người dùng đăng nhập với một mật khẩu ứng viên CCC, hệ thống chấp nhận đăng nhập nếu và chỉ nếu SHA256(T∥C)=H\text{SHA256}(T \Vert C) = HSHA256(T∥C)=H.

    Cho salt TTT, giá trị băm đã lưu HHH (dạng hex, không phân biệt hoa/thường khi so sánh), và nnn lượt thử đăng nhập với các mật khẩu ứng viên C1,C2,…,CnC_1, C_2, \dots, C_nC1​,C2​,…,Cn​. Với mỗi lượt thử, hãy cho biết đăng nhập có thành công hay không.

    Ví dụ: T=T = T= xyz, H=SHA256("xyzletmein2024")H = \text{SHA256}(\texttt{"xyzletmein2024"})H=SHA256("xyzletmein2024"), ứng viên letmein2024 ⇒\Rightarrow⇒ OK; ứng viên letmein2025 ⇒\Rightarrow⇒ FAIL.

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

      Dòng 1: salt TTT (có thể rỗng). Dòng 2: giá trị băm đã lưu HHH (chuỗi hex). Dòng 3: số nguyên nnn (0≤n≤10000 \le n \le 10000≤n≤1000) — số lượt thử đăng nhập. nnn dòng tiếp theo: mỗi dòng là một mật khẩu ứng viên CiC_iCi​ (có thể rỗng).

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

      In ra nnn dòng, dòng thứ iii là OK nếu SHA256(T∥Ci)=H\text{SHA256}(T \Vert C_i) = HSHA256(T∥Ci​)=H (so sánh không phân biệt hoa/thường của chuỗi hex), ngược lại in FAIL. Nếu n=0n = 0n=0 thì không cần in gì ngoài một dòng trống.

    Ví dụ:

    Đầu vào:

    
    240be518fabd2724ddb6f04eeb1da5967448d7e831c08c8fa822809f74c720a9
    3
    admin123
    Admin123
    admin124
    

    Đầu ra:

    OK
    FAIL
    FAIL
    

    Đầu vào:

    xyz
    480ef3e8a6b8b569731265615a7036d747c6c6bd2a01a128fb751bc88e1ca684
    2
    letmein2024
    letmein2025
    

    Đầu ra:

    OK
    FAIL
    

    Đang tải editor...