def encode(message, key): lfsr_1 = LFSR(key[0:16], [0,14]) # 17 bit LSFR lfsr_2 = LFSR(key[16:40], [10,18,19,22]) # 25 bit LSFR cipher = [] for character in message: key_stream = (lfsr_1.cycle() + lfsr_2.cycle()) % 256 cipher.append(key_stream ^ ord(character)) return "".join(map(chr, cipher))
def test_cycle(): ''' First cycle: 1,1,0,1,0 -> output 0, feedback 0 0,1,1,0,1 -> output 1, feedback 1 1,0,1,1,0 -> output 0, feedback 1 1,1,0,1,1 -> output 1, feedback 0 0,1,1,0,1 -> output 1, feedback 1 1,0,1,1,0 -> output 0, feedback 1 1,1,0,1,1 -> output 1, feedback 0 0,1,1,0,1 -> output 1, feedback 1 Output = 11011010b = 128d ''' lfsr = LFSR([1,0,1,0], [0,1]) output = lfsr.cycle() assert output == 218