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] 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)