Advertisement
Guest User

Enigma.py

a guest
Mar 24th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.73 KB | None | 0 0
  1. from re import match
  2. letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 ,.?!:$()"
  3. print("Installing data... Please wait...")
  4. exec("primes = [2,"+open("PrimesDataBase.pr", "r").read()+"]")
  5. print("Data installed")
  6. def get_beginning():
  7.     try:
  8.         return int(input("Enter the first number to use:\n"))
  9.     except:
  10.         print("Must be a number")
  11.         get_beginning()
  12. beginning = int(get_beginning())
  13. print(25*"="+"Important!"+25*"="+"\n"+6*"="+"After "+str(len(primes))+" characters it will be the same key"+7*"=")
  14. while 0 == 0:
  15.     dat = ""
  16.     EnOrDeCode = input("Encode or Decode?\n")
  17.     if match(r"^( +)?[eE][nN]([cC]([oO]([dD]([eE])?)?)?)?( +)?$", EnOrDeCode):
  18.         En = input("Enter text to Encode:\n")
  19.         for i in range(len(En)-1, -1, -1):
  20.             try:
  21.                 if i+beginning < len(primes):
  22.                     ip = i+beginning
  23.                 else:
  24.                     ip = (i+beginning) %len(primes)
  25.                 if letters.index(En[i])+primes[ip] <= len(letters)-1:
  26.                     ind = letters.index(En[i])+primes[ip]
  27.                 else:
  28.                     ind = (letters.index(En[i])+primes[ip]) % len(letters)
  29.                 dat += letters[ind]
  30.             except ValueError:
  31.                 dat += "-"
  32.         print(dat)
  33.     elif match(r"^( +)?[dD][eE]([cC]([oO]([dD]([eE])?)?)?)?( +)?$", EnOrDeCode):
  34.         datOne = ""
  35.         DeOne = input("Enter text to Decode:\n")
  36.         De = ""
  37.         for i in range(len(DeOne)-1, -1, -1):
  38.             De += DeOne[i]
  39.         for i in range(len(De)-1, -1, -1):
  40.             if De[i] != "-":
  41.                 if i+beginning < len(primes):
  42.                     ip = i+beginning
  43.                 else:
  44.                     ip = (i+beginning) %len(primes)
  45.                 if letters.index(De[i])-primes[ip]<0:
  46.                     ind = (letters.index(De[i])-primes[ip]) % len(letters)
  47.                 else:
  48.                     ind = letters.index(De[i])-primes[ip]
  49.                     datOne += letters[ind]
  50.             else:
  51.                 datOne += "-"
  52.         for i in range(len(datOne)-1,-1,-1):
  53.             dat += datOne[i]
  54.         print(dat)
  55.     else:
  56.         print("try again")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement