From 3d2e8fc358454f6206b7fe16e075b26e9f602e3b Mon Sep 17 00:00:00 2001 From: "E. Almqvist" Date: Sun, 10 May 2020 01:18:35 +0200 Subject: [PATCH] Added block chiffer --- block.py | 52 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 46 insertions(+), 6 deletions(-) diff --git a/block.py b/block.py index c3b4efb..832e7ad 100644 --- a/block.py +++ b/block.py @@ -1,3 +1,4 @@ +import math from lib.input import * from lib.vars import alphabet from lib.vars import listToString @@ -19,15 +20,54 @@ def keyToIntTuple(key): def applyKeyToBlock(keyT, blockL): # function to apply a key to a block blockDe = [""] * blockSize + if(in_mode == 0): + for i in range(blockSize): + blockDe[i] = blockL[keyT[i]] # encrypting + elif(in_mode == 1): + for i in range(blockSize): + blockDe[keyT[i]] = blockL[i] # decrypting - for i in range(blockSize): - blockDe[i] = blockL[keyT[i]] - - print(blockDe) return blockDe +def splitInput(inputL, n): + out = [] + inputLen = len(inputL) + x = inputLen / float(n) + + last = 0.0 + while last < inputLen: + out.append( inputL[ int(last):int(last + x) ] ) + last += x + + return out + +def getOutput(blocksL): + out = "" + for block in blocksL: + out += listToString(block) + + return out + +# +# Do the encrypting/decrypting stuff with the input +# +TXT = list(in_txt) KEY = keyToIntTuple(in_key) # define and make the key a tuple so that we can index it -applyKeyToBlock(keyToIntTuple(in_key), list(in_txt)) +amountBlocks = len(TXT) / blockSize +if( math.floor(amountBlocks) != math.ceil(amountBlocks) ): + print("Error: Input didn't match key size.") + print("amountBlocks: " + str(amountBlocks)) + exit() + +Blocks = splitInput(TXT, amountBlocks) +BlocksDe = [None] * len(Blocks) + +count = -1 +for block in Blocks: + count += 1 + BlocksDe[count] = applyKeyToBlock(KEY, block) + - +### Finally print the output +print( getOutput(BlocksDe) )