Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from numbthy import *
- import random
- size = 8
- pad = 32
- def Encode(p, q, plain):
- cipher = ""
- N = p * q
- phi = (p-1)*(q-1)
- # for e in reversed(xrange(2, phi)):
- # if gcd(e, phi) == 1:
- # break
- while True:
- e = random.randint(2, phi)
- if gcd(e, phi) == 1:
- break
- pass
- print "e : " + str(e)
- for i in range(0, len(plain), size):
- M = int(plain[i:i+size], 2)
- cipher += bin(pow(M, e, N))[2:].rjust(pad , "0")
- return cipher, e
- def Decode(cipher, p , q, e):
- N = p * q
- phi = (p - 1) * (q - 1)
- d = invmod(e, phi)
- plain = ""
- for i in range(0, len(cipher), pad):
- C = int(cipher[i:i+pad], 2)
- plain += hex(pow(C, d, N))[2:].decode("hex")
- return plain
- file = "plain.txt"
- f = open(file, 'rb').read()
- plain = ''.join(format(ord(x), 'b').rjust(8, "0") for x in f)
- p = 859
- q = 997
- cipher, e = Encode(p, q, plain)
- print "cipher : " + cipher
- plaintext = Decode(cipher, p, q, e)
- print "plaintext : " + plaintext
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement