IS Lab
This commit is contained in:
parent
9db9ac05ce
commit
df44199a02
25 changed files with 544 additions and 0 deletions
50
IS/Lab/Lab7/HomomorphicRSA.py
Normal file
50
IS/Lab/Lab7/HomomorphicRSA.py
Normal file
|
@ -0,0 +1,50 @@
|
|||
from Crypto.PublicKey import RSA
|
||||
from Crypto.Util.number import bytes_to_long, long_to_bytes
|
||||
|
||||
|
||||
def generate_keys():
|
||||
key = RSA.generate(2048)
|
||||
return key
|
||||
|
||||
|
||||
def encrypt(message, public_key):
|
||||
n = public_key.n
|
||||
e = public_key.e
|
||||
ciphertext = pow(message, e, n)
|
||||
return ciphertext
|
||||
|
||||
|
||||
def decrypt(ciphertext, private_key):
|
||||
n = private_key.n
|
||||
d = private_key.d
|
||||
plaintext = pow(ciphertext, d, n)
|
||||
return plaintext
|
||||
|
||||
|
||||
# Generate keys
|
||||
key = generate_keys()
|
||||
public_key = key.publickey()
|
||||
private_key = key
|
||||
|
||||
# Original values
|
||||
m1 = 7
|
||||
m2 = 3
|
||||
|
||||
# Encrypt
|
||||
c1 = encrypt(m1, public_key)
|
||||
c2 = encrypt(m2, public_key)
|
||||
print(f"Ciphertext 1: {c1}")
|
||||
print(f"Ciphertext 2: {c2}")
|
||||
|
||||
# Homomorphic multiplication
|
||||
c_product = (c1 * c2) % public_key.n
|
||||
print(f"Encrypted product: {c_product}")
|
||||
|
||||
# Decrypt result
|
||||
decrypted_product = decrypt(c_product, private_key)
|
||||
print(f"Decrypted product: {decrypted_product}")
|
||||
|
||||
# Verify
|
||||
expected_product = m1 * m2
|
||||
print(f"Expected product: {expected_product}")
|
||||
print(f"Match: {decrypted_product == expected_product}")
|
Loading…
Add table
Add a link
Reference in a new issue