def EnigmaTest(): enigma = Enigma("CAB", "BAC", "BCA") print(enigma.encrypt('ABC') == 'AAA') # should ACB print(enigma.decrypt('ACB') == 'CBA') print(enigma.encrypt('CAB') == 'CCC') print(enigma.decrypt('CAB') == 'AAA')
def EnigmaSpecialTest(): enigma = Enigma("SHBMFWEIQRODTAVXCPYZUJKGNL", "GYRFNUCZLQDWMKHSJOEPBVITXA", "MSEWGQHDPRFNXATOIBUJLCZVYK") cipherText = "OQMTANMGPABQSDAKAUFXXGJBSPHBZXHLXMBNOHTNQZQGDBMIQNZJ" cipherText2 = "MXNMFKPDVWDPIMPYACVYZUGUWGPVGAOXCDZDGYTLATOIBUJLCZVYNXATOIBUJLCZVYKMSEWGQHDPRFIBUJLCZVYKMSEWGQHDPRFNXATOWGQHDPRFNXATOIBUJLCZVYKMSEZVYKMSEWGQHDPRFNXATOIBUJLCXATOIBUJLCZVYKMSEWGQHDPRFNFNXATOIBUJLCZVYKMSEWGQHDPRDPRFNXATOIBUJLCZVYKMSEWGQHUJLCZVYKMSEWGQHDPRFNXATOIBRFNXATOIBUJLCZVYKMSEWGQHDPTOIBUJLCZVYKMSEWGQHDPRFNXAGQHDPRFNXATOIBUJLCZVYKMSEWOIBUJLCZVYKMSEWGQHDPRFNXATSEWGQHDPRFNXATOIBUJLCZVYKMCZVYKMSEWGQHDPRFNXATOIBUJLPRFNXATOIBUJLCZVYKMSEWGQHDJLCZVYKMSEWGQHDPRFNXATOIBUVYKMSEWGQHDPRFNXATOIBUJLCZMSEWGQHDPRFNXATOIBUJLCZVYKHDPRFNXATOIBUJLCZVYKMSEWGQYKMSEWGQHDPRFNXATOIBUJLCZVBUJLCZVYKMSEWGQHDPRFNXATOIQHDPRFNXATOIBUJLCZVYKMSEWGATOIBUJLCZVYKMSEWGQHDPRFNXLCZVYKMSEWGQHDPRFNXATOIBUJZ" print(enigma.decrypt(cipherText)) enigma.resetRotor() print(enigma.decrypt(cipherText2))
def main(): Config.readKeys() enigma = Enigma(Config.setting('key1'), Config.setting('key2'), Config.setting('key3')) print('Enigma... Press Ctrl+D to stop') print('Commands:\n encrypt <message>\n decrypt <message>') try: while True: command = input('> ') try: spaceIndex = command.index(' ') except: print('Invalid command:') print( 'Commands:\n encrypt <message>\n decrypt <message>') continue if command[:spaceIndex] == 'encrypt': print(enigma.encrypt(command[spaceIndex + 1:])) elif command[:spaceIndex] == 'decrypt': print(enigma.decrypt(command[spaceIndex + 1:])) else: print('Invalid command') print( 'Commands:\n encrypt <message>\n decrypt <message>') except (EOFError, KeyboardInterrupt): print() # Put the standard shell prompt on the next line
def test_same_characters_different_sequence(self, r1p: int, r2p: int, r3p: int, repeated_char: str): enigma = Enigma(r1_pos=r1p, r2_pos=r2p, r3_pos=r3p) cipher_text = enigma.encrypt(repeated_char[0] * 26) for test_char in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ': self.assertNotEqual(cipher_text, test_char * 26) self.assertEqual(repeated_char[0] * 26, enigma.decrypt(cipher_text))
def EnigmaTest1(): enigma = Enigma("CAB", "BAC", "BCA") messages = ['ABC', 'CAB', 'BCA'] for message in messages: enigma.resetRotor() encrypted_m = enigma.encrypt(message) enigma.resetRotor() print(enigma.decrypt(encrypted_m) == message)
def check_enigma(self, plaintext: str, r1p: int = 0, r2p: int = 0, r3p: int = 0): enigma = Enigma(r1_pos=r1p, r2_pos=r2p, r3_pos=r3p) cipher_text = enigma.encrypt(plaintext) self.assertNotEqual(plaintext, cipher_text) self.assertEqual(plaintext, enigma.decrypt(cipher_text))
def test_encrypt_decrypt(self, r1p: int, r2p: int, r3p: int, patch_key: str, rotor_selection: list, reflector_selection: int, plaintext: str): enigma = Enigma(r1_pos=r1p, r2_pos=r2p, r3_pos=r3p, patch_key=patch_key, rotor_selection=rotor_selection, reflector_selection=reflector_selection) cipher_text = enigma.encrypt(plaintext) self.assertNotEqual(cipher_text, plaintext) self.assertEqual(plaintext, enigma.decrypt(cipher_text))
def detect_region(): region = request.cookies.get('region') if region is None or Enigma.decrypt(request.cookies.get('region')) == '|': reg = Repo.getLocation() region = Enigma.encrypt('|'.join( [reg.get('country_name'), reg.get('country_code')])) @after_this_request def remember_region(response): response.set_cookie('region', region) g.region = region
def getRegion(): try: region = request.cookies.get('region') if region is None: region = Repo.getLocation() return { 'countryCode': region.get('country_code'), 'countryName': region.get('country_name') } else: region = Enigma.decrypt(region).split("|") return {'countryCode': region[1], 'countryName': region[0]} except Exception as e: return {'countryCode': "IN", 'countryName': "India"}
def test_real_example(self): plaintext = "DASOBERKOMMANDODERWEHRMAQTGIBTBEKANNTXAACHENXAACHENXISTGERETTETX" + \ "DURQGEBUENDELTENEINSATZDERHILFSKRAEFTEKONNTEDIEBEDROHUNGABGEWENDET" + \ "UNDDIERETTUNGDERSTADTGEGENXEINSXAQTXNULLXNULLXUHRSIQERGESTELLTWERDENX" patch_key = 'DBNATLIHGVZFMCOUYRSEPJXWQK' r1p = 16 r2p = 26 r3p = 8 enigma = Enigma(patch_key=patch_key, rotor_selection=[0, 3, 2], reflector_selection=1, r1_pos=r1p, r2_pos=r2p, r3_pos=r3p) cipher_text = enigma.encrypt(plaintext) self.assertEqual( 'YTCBORYNCVSQAWDTMVVDMVVCLWSPNPVKLLWUIAVUVDAYUIWUTCZWMTDWUGBQZCJ' + 'ZBFJNBYQZVZPPTXDQJQQFMBXXFXPYEROURJPFNCUYDZOZMVGPEYJYKPHDLGKNOB' + 'TJGMMMEMVLOIWWOBTZNERYOJOWCDZLVEVVPYPHNSYNCQXKIAGOWVSEWPXPCMXPW' + 'APVYFHLYCK', cipher_text) self.assertEqual(plaintext, enigma.decrypt(cipher_text))
('T', 'U'), ('W', 'Z'), ]), reflector=Reflector("A") ) e2 = Enigma(rotors=[ Rotor(position=24, type="II"), Rotor(position=13, type="I"), Rotor(position=22, type="III") ], plugboard=Plugboard([ ('A', 'M'), ('F', 'I'), ('N', 'V'), ('P', 'S'), ('T', 'U'), ('W', 'Z'), ]), reflector=Reflector("A") ) input_string = "Hello" print(f"Input: {input_string}") encrypted_string = e1.encrypt(input_string) print(f"Encrypted: {encrypted_string}") answer_string = e2.decrypt(encrypted_string) print(f"Answer: {answer_string}")