def OFB(text, key, init_vector, nbits, decrypt=False): ''' nbits: encryption length ''' if 256 % nbits != 0: raise Exception('Length of nbits must be a factor of 256!') fullbits = text_to_bits(text) pea = PEA(key) qbits = init_vector bits_encrypt = [] for i in range(int(len(fullbits) / nbits)): if not decrypt: bits = fullbits[(i * nbits):((i + 1) * nbits)] enc_res = pea.encrypt(qbits, False) res = [x ^ y for (x, y) in zip(bits, enc_res[:nbits])] bits_encrypt.extend(res) qbits = qbits[nbits:] + enc_res[:nbits] else: bits = fullbits[(i * nbits):((i + 1) * nbits)] enc_res = pea.encrypt(qbits, False) res = [x ^ y for (x, y) in zip(bits, enc_res[:nbits])] bits_encrypt.extend(res) qbits = qbits[nbits:] + enc_res[:nbits] return bits_to_text(bits_encrypt)
def main(): from pea import PEA from autopipe import showimage pea = PEA() pea.filename_holo = "../../../../documentos/carlos/enfused-sub/0427-0433-04X-568-c.tiff" wg = wrapped_gradient(pea.phase) showimage(wg) return 0
def ECB(text, key, decrypt=False): fullbits = text_to_bits(text) pea = PEA(key) bits_encrypt = [] for i in range(int(len(fullbits) / 256)): bits = fullbits[(i * 256):((i + 1) * 256)] bits_encrypt.extend(pea.encrypt(bits, decrypt)) return bits_to_text(bits_encrypt)
def CBC(text, key, init_vector, decrypt=False): fullbits = text_to_bits(text) pea = PEA(key) last_bits = init_vector bits_encrypt = [] for i in range(int(len(fullbits) / 256)): if not decrypt: bits = fullbits[(i * 256):((i + 1) * 256)] bits = [x ^ y for (x, y) in zip(bits, last_bits)] res = pea.encrypt(bits, decrypt) last_bits = res bits_encrypt.extend(res) else: bits = fullbits[(i * 256):((i + 1) * 256)] res = pea.encrypt(bits, decrypt) res = [x ^ y for (x, y) in zip(res, last_bits)] last_bits = bits bits_encrypt.extend(res) return bits_to_text(bits_encrypt)
def CTR(text, key, decrypt=False): fullbits = text_to_bits(text) pea = PEA(key) bits_encrypt = [] count = create_ctr_start(key) for i in range(int(len(fullbits) / 256)): if not decrypt: bits = fullbits[(i * 256):((i + 1) * 256)] cbits = int_to_bits(count) enc_res = pea.encrypt(cbits, False) res = [x ^ y for (x, y) in zip(bits, enc_res)] bits_encrypt.extend(res) else: bits = fullbits[(i * 256):((i + 1) * 256)] cbits = int_to_bits(count) enc_res = pea.encrypt(cbits, False) res = [x ^ y for (x, y) in zip(bits, enc_res)] bits_encrypt.extend(res) count += 1 return bits_to_text(bits_encrypt)