Lược đồ chữ ký số ElGamal hoạt động trên nhóm nhân Zp∗ với p nguyên tố. Khóa công khai gồm (p,g,y) với y=gxmodp (x là khóa bí mật, 1≤x≤p−2). Với giá trị băm thông điệp h (số nguyên, 0≤h<p−1), người ký chọn ngẫu nhiên k nguyên tố cùng nhau với p−1 và tính chữ ký (r,s):
r=gkmodp,s=(h−xr)k−1mod(p−1)
Người xác thực (chỉ biết khóa công khai) kiểm tra chữ ký (r,s) có hợp lệ với thông điệp có giá trị băm h hay không bằng cách kiểm tra đồng thời hai điều kiện:
Cho p,g,y,h,r,s, hãy xác định chữ ký có hợp lệ hay không.
Ví dụ: p=467, g=2, y=132, h=100, r=29, s=51. Ta có g100mod467=189 và (13229mod467)⋅(2951mod467)mod467=189, hai vế bằng nhau và 0<29<467 nên kết quả là VALID.
Một dòng chứa 6 số nguyên không âm, cách nhau bởi khoảng trắng: p g y h r s.
In VALID nếu chữ ký thoả cả hai điều kiện xác minh ElGamal nêu trên, ngược lại in INVALID.
Ví dụ:
Đầu vào:
467 2 132 100 29 51
Đầu ra:
VALID
Đầu vào:
467 2 132 100 29 52
Đầu ra:
INVALID
Đang tải editor...