Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
 def testConvertByteListIntoHexString(self):
     l=[104, 101, 108, 76, 111, 32, 87, 111, 114, 108, 100, 33, 33]
     self.assertEqual("68656C4C6F20576F726C642121",Util.convertByteListIntoHexString(l))
Ejemplo n.º 3
0
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