Пример #1
0
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)
Пример #2
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)
Пример #3
0
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)
Пример #4
0
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)