cryptopals

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 2c14f2e2a1a97bba3f48503feb90661ec9a5876e
parent 34d51f1d77f4f0a9b59aa6b81a266f541283c9fc
Author: mpizzzle <michael.770211@gmail.com>
Date:   Mon, 30 Oct 2017 17:55:46 +0000

padding validation wasn't checking last byte, algorithm now fixed

Diffstat:
Mset2/cbc_bitflipping_attacks.py | 7++-----
Mset2/ecb_cut_and_paste.py | 5+----
Mset2/pkcs7_padding_validation.py | 7++++---
3 files changed, 7 insertions(+), 12 deletions(-)

diff --git a/set2/cbc_bitflipping_attacks.py b/set2/cbc_bitflipping_attacks.py @@ -2,11 +2,8 @@ import re from Crypto.Cipher import AES from Crypto import Random -def random_key(): - return Random.new().read(AES.block_size) - -key = random_key() -iv = random_key() +key = Random.new().read(AES.block_size) +iv = Random.new().read(AES.block_size) def encrypt(msg): pad_len = AES.block_size - (len(msg) % AES.block_size) diff --git a/set2/ecb_cut_and_paste.py b/set2/ecb_cut_and_paste.py @@ -2,10 +2,7 @@ import re from Crypto.Cipher import AES from Crypto import Random -def random_key(): - return Random.new().read(AES.block_size) - -key = random_key() +key = Random.new().read(AES.block_size) def encrypt(msg): pad_len = AES.block_size - (len(msg) % AES.block_size) diff --git a/set2/pkcs7_padding_validation.py b/set2/pkcs7_padding_validation.py @@ -5,10 +5,11 @@ def pkcs7_padding(msg): return msg + ''.join([chr(pad_len) for x in range(pad_len)]) def pkcs7_padding_stripper(msg): - for char in msg[:len(msg) - ord(msg[len(msg) - 1]) : -1]: - if char != msg[len(msg) - 1]: + if ord(msg[len(msg) - 1]) > AES.block_size or ord(msg[len(msg) - 1]) == 0: + raise Exception("invalid pkcs7 padding") + for c in msg[:len(msg) - ord(msg[len(msg) - 1]) - 1 : -1]: + if c != msg[len(msg) - 1]: raise Exception("invalid pkcs7 padding") - return msg[:len(msg) - ord(msg[len(msg) - 1])] plaintext = "YELLOW SUBMARINE"