3 + 7 (mod 89)
From 1ecb01eaf5761cbbc3407bc11df1842b87e11bd0 Mon Sep 17 00:00:00 2001
From: Pavlos Papadopoulos <44439128+pavlos-p@users.noreply.github.com>
Date: Fri, 18 Feb 2022 12:29:37 +0000
Subject: [PATCH 4/6] Update sample_ans.md
---
unit04_public_key/lab/sample_ans.md | 111 ++++++++++++++++++----------
1 file changed, 71 insertions(+), 40 deletions(-)
diff --git a/unit04_public_key/lab/sample_ans.md b/unit04_public_key/lab/sample_ans.md
index 2199402..6109904 100644
--- a/unit04_public_key/lab/sample_ans.md
+++ b/unit04_public_key/lab/sample_ans.md
@@ -423,6 +423,77 @@ For the prime number we have 65 bytes + 1 bit (521 bits).
# ECC Encryption
## D.1
+
+**Python 3.8**:
+
+```
+from cryptography.hazmat.primitives.asymmetric import ec
+from cryptography.hazmat.primitives import serialization
+import binascii
+import sys
+
+private_key = ec.generate_private_key(ec.SECP256K1())
+
+
+vals = private_key.private_numbers()
+no_bits=vals.private_value.bit_length()
+print (f"Private key value: {vals.private_value}. Number of bits {no_bits}")
+
+public_key = private_key.public_key()
+vals=public_key.public_numbers()
+
+enc_point=binascii.b2a_hex(vals.encode_point()).decode()
+
+print (f"\nPublic key encoded point: {enc_point} \nx={enc_point[2:(len(enc_point)-2)//2+2]} \ny={enc_point[(len(enc_point)-2)//2+2:]}")
+
+
+pem = private_key.private_bytes(encoding=serialization.Encoding.PEM,format=serialization.PrivateFormat.PKCS8,encryption_algorithm=serialization.NoEncryption())
+
+der = private_key.private_bytes(encoding=serialization.Encoding.DER,format=serialization.PrivateFormat.PKCS8,encryption_algorithm=serialization.NoEncryption())
+
+
+
+print ("\nPrivate key (PEM):\n",pem.decode())
+print ("Private key (DER):\n",binascii.b2a_hex(der))
+
+pem = public_key.public_bytes(encoding=serialization.Encoding.PEM,format=serialization.PublicFormat.SubjectPublicKeyInfo)
+
+der = public_key.public_bytes(encoding=serialization.Encoding.DER,format=serialization.PublicFormat.SubjectPublicKeyInfo)
+
+print ("\nPublic key (PEM):\n",pem.decode())
+print ("Public key (DER):\n",binascii.b2a_hex(der))
+```
+
+
+
+Private key value: 100412371531109186445752967835007606723422767215817529341655177594081088564056. Number of bits 256
+D1.py:19: CryptographyDeprecationWarning: encode_point has been deprecated on EllipticCurvePublicNumbers and will be removed in a future version. Please use EllipticCurvePublicKey.public_bytes to obtain both compressed and uncompressed point encoding.
+ enc_point=binascii.b2a_hex(vals.encode_point()).decode()
+
+Public key encoded point: 048987ec7866a5d1e3116f08a3a8b8d53b7c84ec273956519cbe332e0a66c4c910babe551d3a2081b32746fb9f576c12b25a6a1bc6adc87b4e1c391805cfbbd01b
+x=8987ec7866a5d1e3116f08a3a8b8d53b7c84ec273956519cbe332e0a66c4c910
+y=babe551d3a2081b32746fb9f576c12b25a6a1bc6adc87b4e1c391805cfbbd01b
+
+Private key (PEM):
+ -----BEGIN PRIVATE KEY-----
+MIGEAgEAMBAGByqGSM49AgEGBSuBBAAKBG0wawIBAQQg3f9jZOIMwueRirpNJc9/
+WefKlG5mLuIZNEPDFuJ661ihRANCAASJh+x4ZqXR4xFvCKOouNU7fITsJzlWUZy+
+My4KZsTJELq+VR06IIGzJ0b7n1dsErJaahvGrch7Thw5GAXPu9Ab
+-----END PRIVATE KEY-----
+
+Private key (DER):
+ b'308184020100301006072a8648ce3d020106052b8104000a046d306b0201010420ddff6364e20cc2e7918aba4d25cf7f59e7ca946e662ee2193443c316e27aeb58a144034200048987ec7866a5d1e3116f08a3a8b8d53b7c84ec273956519cbe332e0a66c4c910babe551d3a2081b32746fb9f576c12b25a6a1bc6adc87b4e1c391805cfbbd01b'
+
+Public key (PEM):
+ -----BEGIN PUBLIC KEY-----
+MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEiYfseGal0eMRbwijqLjVO3yE7Cc5VlGc
+vjMuCmbEyRC6vlUdOiCBsydG+59XbBKyWmobxq3Ie04cORgFz7vQGw==
+-----END PUBLIC KEY-----
+
+Public key (DER):
+ b'3056301006072a8648ce3d020106052b8104000a034200048987ec7866a5d1e3116f08a3a8b8d53b7c84ec273956519cbe332e0a66c4c910babe551d3a2081b32746fb9f576c12b25a6a1bc6adc87b4e1c391805cfbbd01b'
+
+
**Python 2.7**:
@@ -475,46 +546,6 @@ Decrypt: Test123
Bob verified: True
-**Python 3.8**:
-
-```
-from cryptography.hazmat.primitives.asymmetric import ec
-from cryptography.hazmat.primitives import serialization
-import binascii
-import sys
-
-private_key = ec.generate_private_key(ec.SECP256K1())
-
-
-vals = private_key.private_numbers()
-no_bits=vals.private_value.bit_length()
-print (f"Private key value: {vals.private_value}. Number of bits {no_bits}")
-
-public_key = private_key.public_key()
-vals=public_key.public_numbers()
-
-enc_point=binascii.b2a_hex(vals.encode_point()).decode()
-
-print (f"\nPublic key encoded point: {enc_point} \nx={enc_point[2:(len(enc_point)-2)//2+2]} \ny={enc_point[(len(enc_point)-2)//2+2:]}")
-
-
-pem = private_key.private_bytes(encoding=serialization.Encoding.PEM,format=serialization.PrivateFormat.PKCS8,encryption_algorithm=serialization.NoEncryption())
-
-der = private_key.private_bytes(encoding=serialization.Encoding.DER,format=serialization.PrivateFormat.PKCS8,encryption_algorithm=serialization.NoEncryption())
-
-
-
-print ("\nPrivate key (PEM):\n",pem.decode())
-print ("Private key (DER):\n",binascii.b2a_hex(der))
-
-pem = public_key.public_bytes(encoding=serialization.Encoding.PEM,format=serialization.PublicFormat.SubjectPublicKeyInfo)
-
-der = public_key.public_bytes(encoding=serialization.Encoding.DER,format=serialization.PublicFormat.SubjectPublicKeyInfo)
-
-print ("\nPublic key (PEM):\n",pem.decode())
-print ("Public key (DER):\n",binascii.b2a_hex(der))
-```
-
## D.2
y2 = x3 + 7 (mod 89)
From 015d04ac442bfc7a160858b4fda6a3ad822ad1bf Mon Sep 17 00:00:00 2001
From: Pavlos Papadopoulos <44439128+pavlos-p@users.noreply.github.com>
Date: Fri, 18 Feb 2022 12:32:49 +0000
Subject: [PATCH 5/6] Update sample_ans.md
---
unit04_public_key/lab/sample_ans.md | 2 --
1 file changed, 2 deletions(-)
diff --git a/unit04_public_key/lab/sample_ans.md b/unit04_public_key/lab/sample_ans.md
index 6109904..95280bd 100644
--- a/unit04_public_key/lab/sample_ans.md
+++ b/unit04_public_key/lab/sample_ans.md
@@ -467,8 +467,6 @@ print ("Public key (DER):\n",binascii.b2a_hex(der))
Private key value: 100412371531109186445752967835007606723422767215817529341655177594081088564056. Number of bits 256
-D1.py:19: CryptographyDeprecationWarning: encode_point has been deprecated on EllipticCurvePublicNumbers and will be removed in a future version. Please use EllipticCurvePublicKey.public_bytes to obtain both compressed and uncompressed point encoding.
- enc_point=binascii.b2a_hex(vals.encode_point()).decode()
Public key encoded point: 048987ec7866a5d1e3116f08a3a8b8d53b7c84ec273956519cbe332e0a66c4c910babe551d3a2081b32746fb9f576c12b25a6a1bc6adc87b4e1c391805cfbbd01b
x=8987ec7866a5d1e3116f08a3a8b8d53b7c84ec273956519cbe332e0a66c4c910
From 186fd028afe0bcda2baeb55acb345df52496ba78 Mon Sep 17 00:00:00 2001
From: Pavlos Papadopoulos <44439128+pavlos-p@users.noreply.github.com>
Date: Fri, 18 Feb 2022 12:41:43 +0000
Subject: [PATCH 6/6] Update sample_ans.md
---
unit04_public_key/lab/sample_ans.md | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/unit04_public_key/lab/sample_ans.md b/unit04_public_key/lab/sample_ans.md
index 95280bd..fb76543 100644
--- a/unit04_public_key/lab/sample_ans.md
+++ b/unit04_public_key/lab/sample_ans.md
@@ -571,9 +571,11 @@ Signatures match: True
```python
import rsa
(bob_pub, bob_priv) = rsa.newkeys(512)
-print bob_pub
-print bob_priv
-ciphertext = rsa.encrypt('Here is my message', bob_pub)
+
+print (bob_pub)
+print (bob_priv)
+msg='Here is my message'
+ciphertext = rsa.encrypt(msg.encode(), bob_pub)
message = rsa.decrypt(ciphertext, bob_priv)
print(message.decode('utf8'))
```