summaryrefslogtreecommitdiff
path: root/go/diffie-hellman/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'go/diffie-hellman/README.md')
-rw-r--r--go/diffie-hellman/README.md56
1 files changed, 56 insertions, 0 deletions
diff --git a/go/diffie-hellman/README.md b/go/diffie-hellman/README.md
new file mode 100644
index 0000000..feef92d
--- /dev/null
+++ b/go/diffie-hellman/README.md
@@ -0,0 +1,56 @@
+# Diffie Hellman
+
+Diffie-Hellman key exchange.
+
+Alice and Bob use Diffie-Hellman key exchange to share secrets. They
+start with prime numbers, pick private keys, generate and share public
+keys, and then generate a shared secret key.
+
+## Step 0
+
+The test program supplies prime numbers p and g.
+
+## Step 1
+
+Alice picks a private key, a, greater than 1 and less than p. Bob does
+the same to pick a private key b.
+
+## Step 2
+
+Alice calculates a public key A.
+
+ A = g**a mod p
+
+Using the same p and g, Bob similarly calculates a public key B from his
+private key b.
+
+## Step 3
+
+Alice and Bob exchange public keys. Alice calculates secret key s.
+
+ s = B**a mod p
+
+Bob calculates
+
+ s = A**b mod p
+
+The calculations produce the same result! Alice and Bob now share
+secret s.
+
+To run the tests simply run the command `go test` in the exercise directory.
+
+If the test suite contains benchmarks, you can run these with the `-bench`
+flag:
+
+ go test -bench .
+
+For more detailed info about the Go track see the [help
+page](http://exercism.io/languages/go).
+
+## Source
+
+Wikipedia, 1024 bit key from www.cryptopp.com/wiki. [http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange](http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange)
+
+## Submitting Incomplete Problems
+It's possible to submit an incomplete solution so you can see how others have completed the exercise.
+