41 lines
973 B
Python
41 lines
973 B
Python
from Crypto.PublicKey import RSA
|
|
from Crypto.Cipher import PKCS1_OAEP
|
|
import os
|
|
|
|
# Check if keys already exist
|
|
if not os.path.exists("bob_private.pem"):
|
|
key = RSA.generate(2048)
|
|
|
|
private_key = key.export_key()
|
|
public_key = key.publickey().export_key()
|
|
|
|
# Save the private key
|
|
with open("bob_private.pem", "wb") as f:
|
|
f.write(private_key)
|
|
|
|
# Save the public key
|
|
with open("bob_public.pem", "wb") as f:
|
|
f.write(public_key)
|
|
|
|
print("Generated and saved Bob's public and private keys.")
|
|
|
|
if not os.path.exists('ctext'):
|
|
print('No ctext found. Run alice.py')
|
|
exit(0)
|
|
|
|
# Read the private key
|
|
with open("bob_private.pem", "rb") as f:
|
|
private_key = RSA.import_key(f.read())
|
|
|
|
# Read the ciphertext
|
|
with open("ctext", "rb") as f:
|
|
ciphertext = f.read()
|
|
|
|
print(f'Ciphertext: {ciphertext}')
|
|
|
|
cipher = PKCS1_OAEP.new(private_key)
|
|
|
|
# Decrypt
|
|
message = cipher.decrypt(ciphertext)
|
|
print("Decrypted message:", message.decode())
|