Fix link
This commit is contained in:
@ -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
|
||||||
|
= (g^a)^b mod P
|
||||||
|
= g^(a*b) mod P
|
||||||
|
= g^(b*a) mod P
|
||||||
|
= (g^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)
|
||||||
|
|
||||||
K = A^b mod P
|
In [4]: B = modpow(g, b, P)
|
||||||
= (g^a)^b mod P
|
|
||||||
= g^(a*b) mod P
|
|
||||||
= g^(b*a) mod P
|
|
||||||
= (g^b)^a mod P
|
|
||||||
= B^a mod P
|
|
||||||
|
|
||||||
Das gibt uns (siehe [modpow](modmath.py)):
|
In [5]: K = modpow(B, a, P)
|
||||||
|
|
||||||
In [3]: A = modpow(g, a, P)
|
In [6]: A, B, K
|
||||||
|
Out[6]: (7, 5, 7)
|
||||||
In [4]: B = modpow(g, b, P)
|
```
|
||||||
|
|
||||||
In [5]: K = modpow(B, a, P)
|
|
||||||
|
|
||||||
In [6]: A, B, K
|
|
||||||
Out[6]: (7, 5, 7)
|
|
||||||
|
Reference in New Issue
Block a user