def encryption_oracle(pt): global key if key is None: key = get_rnd_bytes(AES.block_size) cipher = AES.new(key, AES.MODE_ECB) pt+=d64_suffix padded_pt = c9.pad_pkcs7(pt, AES.block_size) return cipher.encrypt(padded_pt)
def encrypt(self, pt): pt = c9.pad_pkcs7(pt, self._blk_sz) pt_blks = [pt[i : i + self._blk_sz] for i in range(0, len(pt), self._blk_sz)] ct = b"" prev = self._iv for pt_blk in pt_blks: ct_blk = self._cipher.encrypt(strxor(pt_blk, prev)) ct += ct_blk prev = ct_blk return ct
def aes_encrypt_ecb(text, key, pad = False): # if you want to pad, pass pad = True and appropriate blockSize cipher = AES.new(key, AES.MODE_ECB) if pad: text = pad_pkcs7(text, AES.block_size) c = cipher.encrypt(text) return c
def encryption_oracle(pt): global key, random_text if key is None: key = get_rnd_bytes(AES.block_size) if random_text is None: random_text = get_rnd_bytes(random.randint(1,123)) cipher = AES.new(key, AES.MODE_ECB) pt = random_text + pt #prepend random text pt+=d64_suffix padded_pt = c9.pad_pkcs7(pt, AES.block_size) return cipher.encrypt(padded_pt)
def select_random_pad_encrypt(): global key, iv blk_sz = 16 if key is None: key = c11.get_rnd_bytes(blk_sz) if iv is None: iv = c11.get_rnd_bytes(blk_sz) lines = [l.strip() for l in open('c17.txt', 'rb').readlines()] pt = lines[random.randint(0,9)] padded_pt = c9.pad_pkcs7(pt, 16) cipher = AES.new(key, AES.MODE_ECB) iv = c11.get_rnd_bytes(blk_sz) cbc = c10.CBC(cipher, iv, blk_sz) return(cbc.encrypt(padded_pt))
def aes_encrypt_cbc(text, key, iv, pad=False): if pad: text = pad_pkcs7(text, AES.block_size) c = b'' prev = iv for block in range(0, len(text), AES.block_size): textBlock = text[block:block + AES.block_size] cipherBlock = aes_encrypt_ecb(bytes_xor(textBlock, prev), key) c += cipherBlock prev = cipherBlock return c