just for now
This commit is contained in:
36
week06/easy/test.py
Normal file
36
week06/easy/test.py
Normal file
@ -0,0 +1,36 @@
|
||||
import random
|
||||
from Crypto.Util.number import getPrime, inverse
|
||||
from Crypto.Util.number import inverse
|
||||
|
||||
|
||||
def moc_encryption_message(p, q):
|
||||
message = int.from_bytes("flaggy".encode(), 'big')
|
||||
print("original message: ", message)
|
||||
c = pow(message,p,q)
|
||||
return c
|
||||
|
||||
|
||||
def modular_inverse(p, phi_q):
|
||||
x = inverse(p, phi_q)
|
||||
return x % phi_q
|
||||
|
||||
def decrypt_message(encrypted, p, q):
|
||||
phi_q = q - 1
|
||||
d = modular_inverse(p, phi_q)
|
||||
message = pow(encrypted, d, q)
|
||||
return message
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
bit_length = 992
|
||||
o = getPrime(bit_length*2)
|
||||
q = getPrime(bit_length*2)
|
||||
e, n = int(o), int(q)
|
||||
if not (bit_length * 2 - 1 <= n.bit_length() <= bit_length * 2): # has to be not
|
||||
print("wrong bit count")
|
||||
c = moc_encryption_message(o, q)
|
||||
m = decrypt_message(c, o, q)
|
||||
print("decrypted message: ", m)
|
||||
byte_length = (m.bit_length() + 7) // 8
|
||||
decoded_string = m.to_bytes(byte_length, 'big').decode()
|
||||
print("Decrypted_message_to_string: ", decoded_string)
|
Reference in New Issue
Block a user