From 953e1d19805ed8b6894ab99fd949cd2beb039074 Mon Sep 17 00:00:00 2001 From: Pavlos Papadopoulos <44439128+pavlos-p@users.noreply.github.com> Date: Fri, 18 Feb 2022 11:55:33 +0000 Subject: [PATCH 1/6] Update sample_ans.md --- unit04_public_key/lab/sample_ans.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/unit04_public_key/lab/sample_ans.md b/unit04_public_key/lab/sample_ans.md index 428734c..715b9da 100644 --- a/unit04_public_key/lab/sample_ans.md +++ b/unit04_public_key/lab/sample_ans.md @@ -344,6 +344,8 @@ The curves are: brainpoolP512t1: RFC 5639 curve over a 512 bit prime field SM2 : SM2 curve over a 256 bit prime field ``` + +## C.5 The commands are: ``` From d2767299aa0079a174f5c648e37521d00664b44d Mon Sep 17 00:00:00 2001 From: Pavlos Papadopoulos <44439128+pavlos-p@users.noreply.github.com> Date: Fri, 18 Feb 2022 12:25:21 +0000 Subject: [PATCH 2/6] Update README.md --- unit04_public_key/lab/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/unit04_public_key/lab/README.md b/unit04_public_key/lab/README.md index 0fe6612..d914ea8 100644 --- a/unit04_public_key/lab/README.md +++ b/unit04_public_key/lab/README.md @@ -346,6 +346,7 @@ print ("Public key (DER):\n",binascii.b2a_hex(der)) For a message of “Hello. Alice”, what is the ciphertext sent (just include the first four characters): +**NOTE**: Python 3.5 is not working using the above code example. Please use Python 3.8 ! ### D.2 From dcdcaca2caad369a99140e3866fb5930a359ca42 Mon Sep 17 00:00:00 2001 From: Pavlos Papadopoulos <44439128+pavlos-p@users.noreply.github.com> Date: Fri, 18 Feb 2022 12:27:11 +0000 Subject: [PATCH 3/6] Update sample_ans.md --- unit04_public_key/lab/sample_ans.md | 44 +++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/unit04_public_key/lab/sample_ans.md b/unit04_public_key/lab/sample_ans.md index 715b9da..2199402 100644 --- a/unit04_public_key/lab/sample_ans.md +++ b/unit04_public_key/lab/sample_ans.md @@ -423,6 +423,9 @@ For the prime number we have 65 bytes + 1 bit (521 bits). # ECC Encryption ## D.1 + +**Python 2.7**: + ```python import OpenSSL import pyelliptic @@ -471,6 +474,47 @@ 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 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'))
 ```