def encryption_oracle(p): p = os.urandom(randint(5, 5)) + p + os.urandom(randint(5, 10)) k = os.urandom(KEYSIZE) mode = choice(['ECB', 'CBC']) print("Encrypting under {0} mode".format(mode)) if mode == 'ECB': return ecb_encrypt(pkcs7_pad(p, 16), k) if mode == 'CBC': iv = os.urandom(16) return cbc_encrypt(pkcs7_pad(p, 16), k, iv)
def profile_for(email): email = urllib.parse.quote(email, safe='@') p = bytes('email=' + email + '&uid=10&role=user', 'utf8') return (ecb_encrypt(pkcs7_pad(p, 16), k))
def encryption_oracle(p): return ecb_encrypt(pkcs7_pad(prefix + p + c, 16), k)
def encrypt(p): p = ('comment1=cooking%20MCs;userdata=' + urllib.parse.quote(p, safe='') + ';comment2=%20like%20a%20pound%20of%20bacon') p = bytes(p, 'utf8') return cbc_encrypt(pkcs7_pad(p, 16), k, iv)
#!/usr/bin/env python3 # coding: utf-8 """ Implement PKCS#7 padding. https://cryptopals.com/sets/2/challenges/9 """ from block import pkcs7_pad bs = b'YELLOW SUBMARINE' print(pkcs7_pad(bs, 20))