This commit is contained in:
2022-01-30 23:05:00 +01:00
parent 22e7401f17
commit b4ed8d3bf9

View File

@ -1,39 +1,40 @@
# Diffie-Hellman II # Diffie-Hellman II
Gegegen sind die Parameter für den Diffie-Hellman-Algorithmus: Gegegen sind die Parameter für den Diffie-Hellman-Algorithmus:
```python
In [1]: a = 6 In [1]: a = 6
...: b = 4 ...: b = 4
...: g = 16 ...: g = 16
...: P = 19 ...: P = 19
```
Dabei kennt Alice die Zahlen a, g und P. Dabei kennt Alice die Zahlen `a`, `g` und `P`.
Bob kennt analog b, g, und P. Bob kennt analog `b`, `g`, und `P`.
# Lösung # Lösung
Alice und Bob gerechnen jeweils ihren Alice und Bob Berechnen jeweils ihren
Zwichenexponenten und übertragen ihn. Zwischenexponenten und übertragen ihn.
```
A = g^a mod P A = g^a mod P
B = g^b mod P B = g^b mod P
```
Damit können beide den Schlüssel berechnen: Damit können beide den Schlüssel berechnen:
```
K = A^b mod P K = A^b mod P
= (g^a)^b mod P = (g^a)^b mod P
= g^(a*b) mod P = g^(a*b) mod P
= g^(b*a) mod P = g^(b*a) mod P
= (g^b)^a mod P = (g^b)^a mod P
= B^a mod P = B^a mod P
```
Das gibt uns (siehe [Weak Hybrid Encryption](weak-hybrid-encryption) für Code):
```python
In [3]: A = modpow(g, a, P)
Das gibt uns (siehe [modpow](modmath.py)): In [4]: B = modpow(g, b, P)
In [3]: A = modpow(g, a, P) In [5]: K = modpow(B, a, P)
In [4]: B = modpow(g, b, P) In [6]: A, B, K
Out[6]: (7, 5, 7)
In [5]: K = modpow(B, a, P) ```
In [6]: A, B, K
Out[6]: (7, 5, 7)