def loadFromJsonFiles(): CharIndexMap.rangeTypeisCharacterBased=False seed=None baseMcCfg=Util.readJsonFileIntoObject("./state/baseMcCfg.json") baseMachine=EnigmaDynamicFactory().createEnigmaMachineFromConfig(baseMcCfg) baseMcStg=MachineSettingsMemento.loadFromMap(Util.readJsonFileIntoObject("./state/baseMcStg.json")) baseMachine.adjustMachineSettings(baseMcStg) levelMcCfg=Util.readJsonFileIntoObject("./state/levelMcCfg.json") levelMachine=EnigmaDynamicFactory().createEnigmaMachineFromConfig(levelMcCfg) levelMcStg=MachineSettingsMemento.loadFromMap(Util.readJsonFileIntoObject("./state/levelMcStg.json")) levelMachine.adjustMachineSettings(levelMcStg) level=Level.loadFromMap(Util.readJsonFileIntoObject("./state/level.json")) msg="Hello Enigma !" msgSeq=Util.encodeStringIntoByteList(msg) level.inputMsg=msgSeq levelEncryptor=LevelEncryptor(baseMachine,levelMachine,level,seed) encLevel=levelEncryptor.encryptLevel() print("ENC:") print(Util.convertByteListIntoHexString(encLevel.outputMsg)) encLevel.inputMsg="" levelDecryptor=LevelDecryptor(baseMachine,levelMachine,level) levelDecryptor.level=encLevel resultLevel=levelDecryptor.decryptLevel() print("DEC:") print(resultLevel.inputMsg) print(Util.decodeByteListIntoString(resultLevel.inputMsg)) print("DONE !!") return resultLevel.inputMsg pass
def testConvertByteListIntoHexString(self): l=[104, 101, 108, 76, 111, 32, 87, 111, 114, 108, 100, 33, 33] self.assertEqual("68656C4C6F20576F726C642121",Util.convertByteListIntoHexString(l))
def encryptTextAsBin(writeToFile=False): CharIndexMap.rangeTypeisCharacterBased=False start_time = time.time() seed=None baseMachineModelName=EnigmaConfigGenerator(seed).createRandomModelName() baseMachineCfg=EnigmaConfigGenerator(seed).createMachineConfig(baseMachineModelName) if writeToFile: Util.writeObjectToFileAsJson(baseMachineCfg,"./state/baseMcCfg.json") baseMachine=EnigmaDynamicFactory(seed).createEnigmaMachineFromConfig(baseMachineCfg) baseMcStg=MachineSettingManager(seed).generateRandomSettingsForMachine(baseMachine) if writeToFile: Util.writeObjectToFileAsJson(baseMcStg.getAsMap(),"./state/baseMcStg.json") baseMachine.adjustMachineSettings(baseMcStg) levelMachineModelName=EnigmaConfigGenerator(seed).createRandomModelName() levelMcCfg=EnigmaConfigGenerator(seed).createMachineConfig(levelMachineModelName) if writeToFile: Util.writeObjectToFileAsJson(levelMcCfg,"./state/levelMcCfg.json") levelMachine=EnigmaDynamicFactory(seed).createEnigmaMachineFromConfig(levelMcCfg) levelMcStg=MachineSettingManager(seed).generateRandomSettingsForMachine(levelMachine) if writeToFile: Util.writeObjectToFileAsJson(levelMcStg.getAsMap(),"./state/levelMcStg.json") levelMachine.adjustMachineSettings(levelMcStg) level=Level(baseMcStg,levelMcStg,seed) if writeToFile: Util.writeObjectToFileAsJson(level.getAsMap(),"./state/level.json") elapsed_time = time.time() - start_time # print("2 MAchines were created in :"+str(elapsed_time)) msg="Hello Enigma !" msgSeq=Util.encodeStringIntoByteList(msg) level.inputMsg=msgSeq start_time = time.time() levelEncryptor=LevelEncryptor(baseMachine,levelMachine,level,seed) encLevel=levelEncryptor.encryptLevel() elapsed_time = time.time() - start_time # print("Encrypted Seq in : "+str(elapsed_time)) print("ENC:") print(Util.convertByteListIntoHexString(encLevel.outputMsg)) encLevel.inputMsg="" start_time = time.time() levelDecryptor=LevelDecryptor(baseMachine,levelMachine,level) levelDecryptor.level=encLevel resultLevel=levelDecryptor.decryptLevel() elapsed_time = time.time() - start_time # print("Decrypted Sequence in :"+str(elapsed_time)) # print("DEC:") # print(resultLevel.inputMsg) # print(Util.decodeByteListIntoString(resultLevel.inputMsg)) # print("DONE !!") return resultLevel.inputMsg