コード例 #1
0
ファイル: ECBmode.py プロジェクト: Gadal/Matasano-Crypto
def decrypt_ECB(key, text, strip_padding=True):
    cipher = AES.AESCipher(key, AES.MODE_ECB)
    decrypted = cipher.decrypt(text)
    
    # Strip padding when decrypting whole messages.
    # Don't do it if only decrypting a single block.
    if strip_padding:
        return unpad(decrypted)
    else:
        return decrypted
コード例 #2
0
ファイル: CBCmode.py プロジェクト: Gadal/Matasano-Crypto
def decrypt_CBC(key, text):
    block_size = 16

    cipher_blocks = generate_blocks(text, block_size)
    initialisation_vector = b'\x00' * block_size
    cipher_blocks.insert(0, initialisation_vector)
    
    text_blocks = []

    for i in range(len(cipher_blocks) - 1):
        decrypted = decrypt_ECB(key, cipher_blocks[i + 1], strip_padding=False)
        text_blocks.append(fixed_xor(cipher_blocks[i], decrypted))

    return unpad("".join(text_blocks))