# Diffie Hellman Key Exchange

How do two people who’ve never met exchange a shared key? How do we agree on a shared key without Eve finding out what the key is?

The Diffie-Hellman Key Exchange.

Alice and Bob agree upon the below prime modulus and a generator (modulus: 17, generator: 3).

// Agreed upon function:

function e(randomNum){

return (3**randomNum)%17;

}

Eve can see this function too. But here’s where it gets interesting: Alice and Bob both choose private numbers.

Alice's private number: 15

Bob's private number: 13

Then Alice and Bob run their private numbers through the function, and exchange the results.

Alice: e(Alice's Private Number) = e(15) = 6

Bob: e(Bob's Private Number) = e(13) = 12

They exchange these numbers:

Alice — 6 —> <— 12 — Bob

Alice now knows:

- The agreed upon function e()
- Her private number (15)
- Her processed number (6)
- Bob’s processed number (12)

Alice now runs her private number and Bob's processed number through the function. She raises Bob's processed number by her private number.

Alice's private

v

(12**15)%17 = 10

^

Bob's processed number

Bob now knows:

- The agreed upon function e()
- His private number (13)
- His processed number (12)
- Alice’s processed number (6)

Bob now runs his private number and Alice's processed number through the function. He raises Alice's processed number by his private number.

Bob's private

v

(6**13)%17 = 10

^

Alice's processed number

Now they have securely exchanged a shared key!