Trong giao thức trao đổi khóa Diffie-Hellman trên đường cong elliptic (ECDH), hai bên Alice và Bob thống nhất trước tham số miền công khai: đường cong E:y2≡x3+ax+b(modp) và điểm cơ sở (generator) G=(Gx,Gy).
Alice chọn khóa bí mật dA, tính khóa công khai A=dA⋅G và gửi cho Bob. Bob chọn khóa bí mật dB, tính khóa công khai B=dB⋅G và gửi cho Alice. Khóa bí mật chung (dùng chung) là điểm: S=dA⋅B=dB⋅A=(dAdB)⋅G Quy ước giá trị dùng làm khóa dùng chung cuối cùng là hoành độ x của điểm S (giả thiết đề bài luôn đảm bảo S=O).
Cho T bộ dữ liệu, mỗi bộ gồm tham số miền và hai khóa bí mật dA,dB (có thể rất lớn), hãy tính hoành độ x của S cho mỗi bộ. Phép nhân vô hướng cần cài đặt bằng thuật toán Double-and-Add.
Ví dụ: p=97,a=2,b=3,G=(0,10),dA=7,dB=11⇒xS=49.
T dòng, mỗi dòng in một số nguyên là hoành độ x của khóa bí mật chung S.
Ví dụ:
Đầu vào:
1
97 2 3 0 10 25 3
Đầu ra:
30
Đầu vào:
1
97 2 3 0 10 7 11
Đầu ra:
49
Đang tải editor...