Привет! решил разобраться с Протоколом Диффи-Хеллмана и попутно накидал его на Пайтоне.
Только вот загвоздка, почему у меня в качестве шпиёна Евы получается подобрать ключ ну например Алисы?
g = 3
p = 7334832323
a = 15
b = 30
# функция для получения AB
def crypt_dh(g,p,ab):
result = g**ab % p
return result
A = crypt_dh(g,p,a)
B = crypt_dh(g,p,b)
# секретные ключиАлисы и Боба
k_Alice = B**a % p
k_Bob = A**b % p
print('Alice Key: ', k_Alice)
print('Bob Key: ', k_Bob)
# Ева знает g,p,A,B
def encrypt(g,p,AB,k_Name):
encryption = 'Fail'
for key in range(1000):
result = AB**key % p
if result == k_Name:
encryption = A**key % p
return encryption
# Результат шпиона
k_Eva = encrypt(g,p,A,k_Alice)
print('Eva Key: ', k_Eva)
Результат:
Alice Key: 5283143412
Bob Key: 5283143412
Eva Key 5283143412