******************** Diffie - Hellman ********************
Dříve, než spolu začnou dva lidé komunikovat, musí se dohodnout na velkém prvočísle Q a na čísle @ (alfa), kde @ je primitivní modulo mod Q. Čísla @ a Q může znát každý, nejsou tajná. Jeden člověk, řekněme Alice, vybere náhodné číslo X(a). Toto číslo uloží jako tajné a podle následujícího vzorce vypočítá číslo Y(a):
Ya=@^Xa mod Q
Alice toto výsledné číslo odešle svému partneru Bobovi. Mezitím si Bob vybral své vlastní náhodné číslo Xb a odpovídající číslo Yb poslal Alici:
Yb=@^Xb mod Q
Alice teď vypočítá číslo Kab, jejich sdílený klíč, a to podle následujícího vzorce:
Kab=Yb^Xa mod Q
Mezitím si Bob vypočítá to stejné číslo Kab a to podle vzorce:
Kab=Ya^Xb mod Q
Číslo Kab je bezpečné, protože jeho výpočet vyžaduje, aby jste znali čísla Xa, Xb. Alice zná číslo Xa a Bob zná číslo Xb. Ten, kdo by odposlouchával jejich linku, by znal pouze čísla Ya, Yb.Vypočítat číslo Xa z čísla Ya nebo Xb z čísla Yb je velmi obtížný problém.
Zkusme si tento příklad předvést na reálných číslech. Řekněme, že jsme se rozhodli použít tato čísla:
@=5
Q=563
Alice si vybrala číslo 9
Xa=9
Potom Bobovi odeslala číslo 78
Ya= 5^9 mod 563 = 78
Bob si vybral číslo 14
Xb=14
Alici pak poslal číslo 534
Yb=5^14 mod 563 = 534
Alice pak vypočítala číslo Kab=117
Kab=534^9 mod 563 = 117
Bob vypočítal číslo Kab=117
Kab=78^14 mod 563 = 117
Alice a Bob teď spolu mohou komunikovat pomocí šifrovacího klíče 117.
******************** END Diffie - Hellman ***************
Vybrané prvočíslo Q=33579349
Vybrané číslo @=11
Tajné číslo Alice Xa=13
Ya=@^Xa mod Q
Ya=11^13 mod 33579349 = 34522712143931 mod 33579349 = 18492474 (tedy 34522712143931 : 33579349 = 1028093 a zbytek po dělení je 18492474)
Ya=18492474
Yb=@^Xb mod Q
Yb=11^7 mod 33579349 = 19487171 mod 33579349 = 19487171 (tedy 19487171 : 33579349 = 0 a zbytek po dělení je 19487171)
Yb=19487171
Kab=Yb^Xa mod Q
Kab=19487171^13 mod 33579349 = 58443248730331016423376362220113545242612980425266212714921832216993762011119642250537592395411 mod 33579349 = 17971067
Kab= 17971067
Alice má nyní symetrický klíč 179771067.
Tajné číslo Boba Xb=7
Yb=@^Xb mod Q
Yb=11^7 mod 33579349 = 19487171 mod 33579349 = 19487171 (tedy 19487171 : 33579349 = 0 a zbytek po dělení je 19487171)
Yb=19487171
Kab=Ya^Xb mod Q
Kab=18492474^7 = 739545872170936885676040832101517220417381481949824 mod 33579349 = 17971067
Kab=17971067
Bob má nyní symetrický klíč 17971067.