import random import math as floor def genKys(length): length *= 8 key = [0] * length choice = floor.floor(random.random() * length) for i in range(choice): key[floor.floor(random.random() * (length - 1))] = 1 return key def enc(plain, key): length = len(key) cipher = [None] * length for i in range(length): cipher[i] = 1 if key[i] == plain[i] else 0 return cipher def getBts(plain): length = len(plain) bits = [None] * length * 8 for i in range(length): for j in range(8): bits[8 * i + 7 - j] = (int)(ord(plain[i]) / pow(2, j)) % 2 return bits def getBytes(bits): length = len(bits) data = [] byte = 0 for i in range((int)(length / 8)): for j in range(8): byte += pow(2, 7 - j) * bits[8 * i + j] data.append(byte) byte = 0 return data def toString(bytes): size = len(bytes) output = "" for i in range(size): output += chr(bytes[i]) return output