Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import omr
- import random
- def egcd(a, b):
- if a == 0:
- return (b, 0, 1)
- else:
- g, y, x = egcd(b % a, a)
- return (g, x - (b // a) * y, y)
- def modinv(a, m):
- g, x, y = egcd(a, m)
- if g != 1:
- raise Exception('modular inverse does not exist')
- else:
- return x % m
- def genKey():
- primes=[]
- while len(primes)<2:
- a = random.randrange(10**255,10**256)
- x = omr.mrt(a,3)
- if x:
- betterx = omr.mrt(x,128)
- if betterx:
- primes.append(x)
- p,q = primes[0],primes[1]
- n = p*q
- phi = (p-1)*(q-1)
- e = (2**16)+1
- try:
- d = modinv(e,phi)
- except:
- print("Theze numbers aren't dank, m8")
- return([hex(e),hex(n)],[hex(d),hex(n)])
- def encrypt(message,k):
- numericalmessage="0x"
- if len(message) >(len(k[1])-3)/2:
- print("Message too large")
- input()
- exit()
- for i in message:
- numericalmessage += hex(ord(i)).split("0x")[1]
- return hex(pow(int(numericalmessage,16),int(k[0],16),int(k[1],16)))
- def decrypt(crypted,k):
- message = ""
- crypted = hex(pow(int(crypted,16),int(k[0],16),int(k[1],16)))
- crypted = crypted [2:]
- while crypted:
- message += chr(int(crypted[:2],16))
- crypted = crypted[2:]
- return message
- def startup():
- x = input("Encrypt or Decrypt? [E/D] ")
- if x.lower() == "e":
- m = input("Write message to encrypt: ")
- e = input("Write public Key: (Example: ['number1', 'number2'] ")
- e = e[1:]
- e = e[0:len(e)-1]
- e = e.split(",")
- e[0] = e[0][1:]
- e[0] = e[0][0:len(e[0])-1]
- e[1] = e[1][2:]
- e[1] = e[1][0:len(e[1])-1]
- return encrypt(m,e)
- elif x.lower() == "d":
- m = input("Write message to decrypt: ")
- e = input("Write private Key: (Example: ['number1', 'number2'] ")
- e = e[1:]
- e = e[0:len(e)-1]
- e = e.split(",")
- e[0] = e[0][1:]
- e[0] = e[0][0:len(e[0])-1]
- e[1] = e[1][2:]
- e[1] = e[1][0:len(e[1])-1]
- return decrypt(m,e)
- else:
- startup()
- def gk():
- a,b = genKey()
- print("Public key: ",a,"\n\n\n\n\n","Private key: ",b)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement