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!

lOMoARcPSD| 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
lOMoARcPSD| 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
| 1/2

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