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] Sinh khóa công khai Diffie–Hellman

    Trong giao thức trao đổi khóa Diffie–Hellman, hai bên thống nhất trước công khai một số nguyên tố ppp và một cơ số (generator) ggg với 1≤g≤p−11 \le g \le p-11≤g≤p−1. Mỗi bên tự chọn một khóa bí mật aaa (số nguyên không âm) và tính khóa công khai của mình theo công thức:

    A=ga mod pA = g^{a} \bmod pA=gamodp

    Cho TTT bộ ba số (p,g,a)(p, g, a)(p,g,a). Với mỗi bộ, hãy tính khóa công khai AAA tương ứng.

    Ví dụ: với p=23, g=5, a=6p=23,\ g=5,\ a=6p=23, g=5, a=6, ta có A=56 mod 23=8A = 5^{6} \bmod 23 = 8A=56mod23=8.

    • Định dạng đầu vào:
      • Dòng đầu tiên chứa số nguyên TTT (1≤T≤10001 \le T \le 10001≤T≤1000) — số bộ dữ liệu cần xử lý.
      • TTT dòng tiếp theo, mỗi dòng chứa ba số nguyên p g ap\ g\ ap g a cách nhau bởi khoảng trắng, trong đó ppp là số nguyên tố (2≤p≤1092 \le p \le 10^{9}2≤p≤109), 1≤g≤p−11 \le g \le p-11≤g≤p−1, 0≤a≤1090 \le a \le 10^{9}0≤a≤109.
    • Định dạng đầu ra:

      In ra TTT dòng, dòng thứ iii là giá trị khóa công khai A=ga mod pA = g^{a} \bmod pA=gamodp của bộ dữ liệu thứ iii.

    Ví dụ:

    Đầu vào:

    1
    2 1 1
    

    Đầu ra:

    1
    

    Đầu vào:

    3
    7 3 2
    101 2 10
    23 5 6
    

    Đầu ra:

    2
    14
    8
    

    Đang tải editor...