From 0cd4c91d5b5094b00241fb543305ac3452c90205 Mon Sep 17 00:00:00 2001 From: Omar Santos Date: Tue, 15 Aug 2023 09:58:44 -0400 Subject: [PATCH] Create 05_Implement_Diffie_Hellman_Key_Exchange.md --- ...5_Implement_Diffie_Hellman_Key_Exchange.md | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 crypto/challenges/05_Implement_Diffie_Hellman_Key_Exchange.md diff --git a/crypto/challenges/05_Implement_Diffie_Hellman_Key_Exchange.md b/crypto/challenges/05_Implement_Diffie_Hellman_Key_Exchange.md new file mode 100644 index 0000000..39a000e --- /dev/null +++ b/crypto/challenges/05_Implement_Diffie_Hellman_Key_Exchange.md @@ -0,0 +1,42 @@ +# Challenge 5: Implement Diffie-Hellman Key Exchange + +**Level:** Intermediate + +**Description:** +Simulate the Diffie-Hellman key exchange algorithm to securely share a symmetric key between two parties. + +**Challenge Text:** +``` +Given prime p = 23, base g = 5 +Party A's private key: 6 +Party B's private key: 15 +``` + +**Instructions:** +1. Compute Party A's and Party B's public keys. +2. Compute the shared secret key for both parties. +3. Validate that both parties have the same shared secret key. + + +**Answer:** +Shared secret key: 2 + +**Code:** +```python +p = 23 +g = 5 +a_private = 6 +b_private = 15 + +# Compute public keys +A_public = (g ** a_private) % p +B_public = (g ** b_private) % p + +# Compute shared secret key +shared_secret_A = (B_public ** a_private) % p +shared_secret_B = (A_public ** b_private) % p + +print("Shared secret key (Party A):", shared_secret_A) +print("Shared secret key (Party B):", shared_secret_B) +``` +