Path: blob/master/RSA-encryption/Intro-Challenges/Challenge-13/encrypt.py
1402 views
#!/usr/bin/env python1from Crypto.PublicKey import *2from Crypto.Util.number import *3import os, sys45class Unbuffered(object):6def __init__(self, stream):7self.stream = stream8def write(self, data):9self.stream.write(data)10self.stream.flush()11def writelines(self, datas):12self.stream.writelines(datas)13self.stream.flush()14def __getattr__(self, attr):15return getattr(self.stream, attr)1617sys.stdout = Unbuffered(sys.stdout)1819def _encrypt(message, e, n):20m = bytes_to_long(message)21return long_to_bytes(pow(m, e, n))2223def genkey(size):24p = getPrime(size/2)25q = getPrime(size/2)26e = 6553727phin = (p-1)*(q-1)28d = inverse(e, phin)29n = p*q30return (p, q, e, d, phin, n)3132if __name__ == "__main__":33p, q, e, d, phin, n = genkey(1024)34print "Welcome to RSA encryption oracle!"35for i in range(6):36print "RSA service"37print "[1] Encrypt"38print "[2] Give me N"39option = int(raw_input("Enter your choice: "))40if option == 1:41try:42message = raw_input("Enter the message you want to encrypt (in hex): ").decode("hex")43except:44print "Enter proper hex chars"45exit(0)46ct = _encrypt(message, e, n)47print "Here take your ciphertext (in hex): ", ct.encode("hex")48print "\n\n"49elif option == 2:50try:51mod_val = int(raw_input("Enter the value of modulus: "))52except Exception as e:53print "[+] Exception: ", e54if mod_val == n:55print "Voila! You solved the challenge!"56else:57print "Nice try! But the answer is incorrect!"58else:59print "Enter proper value of choice"60print "Exiting..."616263