Diffie–Hellman chỉ an toàn khi số nguyên tố p đủ lớn, vì bài toán ngược — bài toán logarit rời rạc (Discrete Logarithm Problem) — mới khó về mặt tính toán. Với p nhỏ, kẻ tấn công có thể duyệt toàn bộ để tìm lại khóa bí mật.
Cho số nguyên tố p, cơ số g (1≤g≤p−1) và khóa công khai A (0≤A≤p−1), hãy tìm số nguyên x nhỏ nhất thỏa 0≤x≤p−2 sao cho:
gxmodp=A
Nếu không tồn tại x nào trong khoảng trên thỏa mãn (do g không sinh ra A), in ra −1.
Ví dụ: p=23, g=5, A=8. Ta có 56mod23=8 và không có x<6 nào thỏa, nên đáp án là 6.
In ra T dòng, dòng thứ i là số nguyên x nhỏ nhất thỏa gxmodp=A (0≤x≤p−2), hoặc −1 nếu không tồn tại.
Ví dụ:
Đầu vào:
3
23 5 8
23 5 1
23 5 22
Đầu ra:
6
0
11
Đầu vào:
1
7 3 1
Đầu ra:
0
Đang tải editor...