ディフィー・ヘルマン鍵共有
この方式は以下のように行われる。まず大きな素数 p {\displaystyle p} と、 p − 1 {\displaystyle p-1} を割り切る大きな素数 q {\displaystyle q} を用意する。また、 g {\displaystyle g} を ( Z / p Z ) ∗ {\displaystyle ({\mathbb {Z} }/p{\mathbb {Z} })^{\ast }} の元であり、位数が q {\displaystyle q} である値とする。この p , q , g {\displaystyle p,q,g} の値は公開されているものとする。
いまアリスとボブが通信を行うとする。このときアリスとボブはお互い自分だけの知る秘密の値 a, b を選択する、この値は 0 以上 q−1 以下の中からランダムに選ぶ。(ここで、ゼロや小さな値(g < p となる a 等)を選択すると安全性が損なわれるが、そのような確率は無視できるほど小さい。)
アリスは以下の値 A を計算してそれをボブに送信する。
A = g a mod p {\displaystyle A=g^{a}{\bmod {p}}}
ボブも同様に以下の値 B を計算してそれをアリスに送信する。
B = g b mod p {\displaystyle B=g^{b}{\bmod {p}}}