Beispiel #1
0
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')
Beispiel #2
0
def EnigmaSpecialTest():
    enigma = Enigma("SHBMFWEIQRODTAVXCPYZUJKGNL", "GYRFNUCZLQDWMKHSJOEPBVITXA",
                    "MSEWGQHDPRFNXATOIBUJLCZVYK")

    cipherText = "OQMTANMGPABQSDAKAUFXXGJBSPHBZXHLXMBNOHTNQZQGDBMIQNZJ"
    cipherText2 = "MXNMFKPDVWDPIMPYACVYZUGUWGPVGAOXCDZDGYTLATOIBUJLCZVYNXATOIBUJLCZVYKMSEWGQHDPRFIBUJLCZVYKMSEWGQHDPRFNXATOWGQHDPRFNXATOIBUJLCZVYKMSEZVYKMSEWGQHDPRFNXATOIBUJLCXATOIBUJLCZVYKMSEWGQHDPRFNFNXATOIBUJLCZVYKMSEWGQHDPRDPRFNXATOIBUJLCZVYKMSEWGQHUJLCZVYKMSEWGQHDPRFNXATOIBRFNXATOIBUJLCZVYKMSEWGQHDPTOIBUJLCZVYKMSEWGQHDPRFNXAGQHDPRFNXATOIBUJLCZVYKMSEWOIBUJLCZVYKMSEWGQHDPRFNXATSEWGQHDPRFNXATOIBUJLCZVYKMCZVYKMSEWGQHDPRFNXATOIBUJLPRFNXATOIBUJLCZVYKMSEWGQHDJLCZVYKMSEWGQHDPRFNXATOIBUVYKMSEWGQHDPRFNXATOIBUJLCZMSEWGQHDPRFNXATOIBUJLCZVYKHDPRFNXATOIBUJLCZVYKMSEWGQYKMSEWGQHDPRFNXATOIBUJLCZVBUJLCZVYKMSEWGQHDPRFNXATOIQHDPRFNXATOIBUJLCZVYKMSEWGATOIBUJLCZVYKMSEWGQHDPRFNXLCZVYKMSEWGQHDPRFNXATOIBUJZ"
    print(enigma.decrypt(cipherText))
    enigma.resetRotor()
    print(enigma.decrypt(cipherText2))
Beispiel #3
0
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
Beispiel #4
0
 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))
Beispiel #5
0
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)
Beispiel #6
0
 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))
Beispiel #7
0
 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))
Beispiel #8
0
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
Beispiel #9
0
 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"}
Beispiel #10
0
 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))
Beispiel #11
0
        ('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}")