Elgamal Signature - Tin học đại cương (IT1110) | Trường Đại học Bách khoa Hà Nội
Elgamal Signature - Tin học đại cương (IT1110) | Trường Đại học Bách khoa Hà Nội được sưu tầm và soạn thảo dưới dạng file PDF để gửi tới các bạn sinh viên cùng tham khảo. Mời bạn đọc đón xem!
Preview text:
lOMoAR cPSD| 44729304 def sig (d, p, alpha , beta , x , k_E) :
# Compute r r = power_mod(alpha , k_E, p)
# Compute s k_E_inv = inverse_mod(k_E, p-1)
s = (x - d * r ) * k_E_inv % (p-1) return (r , s ) def ver (p, alpha , beta , x , r , s ) :
i f not (1 <= r <= p-1 and 1 <= s <= p-1) : return False
# Compute v1 v1 = (power_mod(beta , r , p) * power_mod(r , s , p) ) % p
# Compute v2 v2 = power_mod(alpha , x , p)
# Verify i f v1 == v2 return v1 == v2 # Given parameters d = 67 p = 97 alpha = 23 beta = 15 test_cases = [ (17 , 31) , (17 , 49) , (85 , 77) 1 lOMoAR cPSD| 44729304 ]
print (”###### Answer for 2.1 ########”) for x , k_E in test_cases :
r , s = sig (d, p, alpha , beta , x , k_E) print ( f ”Message : {x} , k_E: {k_E} , Signature : ( r={r } , s={s })”)
print (”###### Answer for 2.2 ########”) messages_signatures = [ (22 , 37 , 33) , (82 , 13 , 65) ] for x , r , s in messages_signatures : is_valid = ver (p, alpha , beta , x , r , s )
print ( f ”Message : {x , r , s } , Signature : ( r={r } , s={s }) , Valid : {\ is_valid}”)
###### Answer for 2.1 ########
Message: 17, k_E: 31, Signature: (r=87, s=20)
Message: 17, k_E: 49, Signature: (r=74, s=3)
Message: 85, k_E: 77, Signature: (r=84, s=29)
###### Answer for 2.2 ########
Message: (22, 37, 33), Signature: (r=37, s=33), Valid: True
Message: (82, 13, 65), Signature: (r=13, s=65), Valid: False 2