def totient(): number = int(raw_input("What number do you want the totient of: ")) factors = Crypto.factorize(number) sum=1.0 for i in factors: sum*= 1-fractions.Fraction(1,i) print(int(sum*number)) print('') print('')
def decryptRSAPrimes(): n = int(raw_input("What is your n: ")) factors = Crypto.factorize(n) p=factors[0] q=factors[1] totient = (p-1)*(q-1) e = int(raw_input("what is your e value: ")) d = Crypto.modinv(e,totient) message = [] count = int(raw_input("How many numbers in your message: ")) for i in range(0,count): message.append(int(raw_input("What is the next number: "))) print('') decrypt='' for i in message: decrypt += chr((i**d%n)) print(decrypt)
print("[b] Find prime factors") print("[c] Calculate totient") print("[d] Calculate gcd") print("[e] Calculate multiplicative inverse") print("[f] Calculate entropy") print("[g] Perform a shift") print("[h] Decrypt RSA with primes") print("[i] Decrypt RSA without primes") print("[x] Exit\n>>> ") answer = raw_input() if answer == 'a': Modular_Exponent() elif answer == 'b': n = int(raw_input("What number do you want to factor: ")) print(Crypto.factorize(n)) elif answer == 'c': totient() elif answer == 'd': x = int(raw_input("Enter your first number: ")) y = int(raw_input("Enter your second number: ")) print("The gcd is: " + str(Crypto.egcd(x,y)[0])) elif answer == 'e': x = int(raw_input("Enter your number: ")) y = int(raw_input("Enter your mod: ")) print("The inverse is: " + str(Crypto.modinv(x,y))) elif answer == 'f': Crypto.entropy() elif answer == 'g': Crypto.shift() elif answer == 'h':