def test_encryption_and_signing():
	message = "Some arbitrary message"
	mac_key_1 = key.with_length(256)
	mac_key_2 = key.with_length(256)
	cbc_key = key.with_length(256) 
	
	authenticated_encryption = Authenticated_Encryption((mac_key_1, mac_key_2, cbc_key))

	mac = CBC_MAC((mac_key_1, mac_key_2))
	cbc = AES_CBC(cbc_key)

	cipher, tag = authenticated_encryption.encrypt_and_sign(message)

	assert_equal(message, cbc.decrypt(cipher))
	assert_equal(tag, mac.sign(cipher))
class Authenticated_Encryption(object):
	def __init__(self, keys):
		self.mac = CBC_MAC((keys[0], keys[1]))
		self.aes_cbc = AES_CBC(keys[2])

	def encrypt_and_sign(self, message):
		cipher = self.aes_cbc.encrypt(message)
		tag = self.mac.sign(cipher)
		return cipher, tag

	def authenticate_and_decrypt(self, cipher, tag):
		authenticated = self.mac.verify(cipher, tag)
		message = "" if not authenticated else self.aes_cbc.decrypt(cipher)
		
		return authenticated, message
Beispiel #3
0
def main():
    ctr_ciphers = ["69dda8455c7dd4254bf353b773304eec0ec7702330098ce7f7520d1cbbb20fc388d1b0adb5054dbd7370849dbf0b88d393f252e764f1f5f7ad97ef79d59ce29f5f51eeca32eabedd9afa9329",      \
                    "770b80259ec33beb2561358a9f2dc617e46218c0a53cbeca695ae45faa8952aa0e311bde9d4e01726d3184c34451"]
    cbc_ciphers = ["4ca00ff4c898d61e1edbf1800618fb2828a226d160dad07883d04e008a7897ee2e4b7465d5290d0c0e6c6822236e1daafb94ffe0c5da05d9476be028ad7c1d81",
                   "5b68629feb8606f9a6667670b75b38a5b4832d0f26e1ab7da33249de7d4afc48e713ac646ace36e872ad5fb8a512428a6e21364b0c374df45503473c5242a253"]
    ctr_key = "36f18357be4dbd77f050515c73fcf9f2"  
    cbc_key = "140b41b22a29beb4061bda66b6747e14"

    #CBC
    decryptor = AES_CBC(cbc_key)
    for c in cbc_ciphers:
        print '%s' % decryptor.decrypt(c)

    #CTR
    decryptor = AES_CTR(ctr_key)
    for c in ctr_ciphers:
        print '%s' % decryptor.decrypt(c)
Beispiel #4
0
 def test_AES_CBC(self):
     key = os.urandom(16).encode('hex')
     decryptor = AES_CBC(key)
     for m in self.msgs:
         self.assertEqual(decryptor.decrypt(decryptor.encrypt(m)), m)
	def __init__(self, keys):
		self.mac = CBC_MAC((keys[0], keys[1]))
		self.aes_cbc = AES_CBC(keys[2])