예제 #1
0
파일: tests.py 프로젝트: aha-ha/aes-1
class TestBlock(unittest.TestCase):
    """
    Tests raw AES-128 block operations.
    """
    def setUp(self):
        self.aes = AES(b'\x00' * 16)

    def test_success(self):
        """ Should be able to encrypt and decrypt block messages. """
        message = b'\x01' * 16
        ciphertext = self.aes.encrypt_block(message)
        self.assertEqual(self.aes.decrypt_block(ciphertext), message)

        message = b'a secret message'
        ciphertext = self.aes.encrypt_block(message)
        self.assertEqual(self.aes.decrypt_block(ciphertext), message)

    def test_bad_key(self):
        """ Raw AES requires keys of an exact size. """
        with self.assertRaises(AssertionError):
            AES(b'short key')

        with self.assertRaises(AssertionError):
            AES(b'long key' * 10)

    def test_expected_value(self):
        """
        Tests taken from the NIST document, Appendix B:
        http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
        """
        message = b'\x32\x43\xF6\xA8\x88\x5A\x30\x8D\x31\x31\x98\xA2\xE0\x37\x07\x34'
        key     = b'\x2B\x7E\x15\x16\x28\xAE\xD2\xA6\xAB\xF7\x15\x88\x09\xCF\x4F\x3C'
        ciphertext = AES(bytes(key)).encrypt_block(bytes(message))
        self.assertEqual(ciphertext, b'\x39\x25\x84\x1D\x02\xDC\x09\xFB\xDC\x11\x85\x97\x19\x6A\x0B\x32')
예제 #2
0
파일: tests.py 프로젝트: boppreh/aes
class TestBlock(unittest.TestCase):
    """
    Tests raw AES-128 block operations.
    """
    def setUp(self):
        self.aes = AES(b'\00' * 16)

    def test_success(self):
        """ Should be able to encrypt and decrypt block messages. """
        message = b'\01' * 16
        ciphertext = self.aes.encrypt_block(message)
        self.assertEqual(self.aes.decrypt_block(ciphertext), message)

        message = b'a secret message'
        ciphertext = self.aes.encrypt_block(message)
        self.assertEqual(self.aes.decrypt_block(ciphertext), message)

    def test_bad_key(self):
        """ Raw AES requires keys of an exact size. """
        with self.assertRaises(AssertionError):
            AES(b'short key')

        with self.assertRaises(AssertionError):
            AES(b'long key' * 10)

    def test_expected_value(self):
        """
        Tests taken from the NIST document, Appendix B:
        http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
        """
        message = b'\x32\x43\xF6\xA8\x88\x5A\x30\x8D\x31\x31\x98\xA2\xE0\x37\x07\x34'
        key     = b'\x2B\x7E\x15\x16\x28\xAE\xD2\xA6\xAB\xF7\x15\x88\x09\xCF\x4F\x3C'
        ciphertext = AES(bytes(key)).encrypt_block(bytes(message))
        self.assertEqual(ciphertext, b'\x39\x25\x84\x1D\x02\xDC\x09\xFB\xDC\x11\x85\x97\x19\x6A\x0B\x32')
예제 #3
0
파일: test.py 프로젝트: D-0M/aes-python
 def test_expected_values256(self):
     message = b'\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xAA\xBB\xCC\xDD\xEE\xFF'
     aes = AES(b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f')
     ciphertext = aes.encrypt_block(message)
     self.assertEqual(
         ciphertext, b'\x8e\xa2\xb7\xca\x51\x67\x45\xbf\xea\xfc\x49\x90\x4b\x49\x60\x89')
     self.assertEqual(aes.decrypt_block(ciphertext), message)
예제 #4
0
def aes_ecb_encrypt(key, plaintext):
    """
    Encrypts a plaintext using AES in ECB mode.
    """
    aes = AES(key)
    padded = pad_pkcs7(plaintext)
    return b''.join(aes.encrypt_block(b) for b in divide(padded, AES.BLOCK_SIZE))
예제 #5
0
파일: test.py 프로젝트: D-0M/aes-python
 def test_expected_values192(self):
     message = b'\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xAA\xBB\xCC\xDD\xEE\xFF'
     aes = AES(
         b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17')
     ciphertext = aes.encrypt_block(message)
     self.assertEqual(
         ciphertext, b'\xdd\xa9\x7c\xa4\x86\x4c\xdf\xe0\x6e\xaf\x70\xa0\xec\x0d\x71\x91')
     self.assertEqual(aes.decrypt_block(ciphertext), message)
예제 #6
0
def encrypt_ecb(message, k):
    aes = AES(k)
    c = ''
    blocks = [message[i:i + 16] for i in range(0, len(message), 16)]
    for i in blocks:
        m = bytes(i, 'raw_unicode_escape')
        ci = aes.encrypt_block(m)
        hexc = str(binascii.hexlify(ci))
        print(hexc)
        c += hexc[2:len(hexc) - 1]
    return c
예제 #7
0
def aes_ctr_stream(key, nonce, endianness='little'):
    """
    Returns a generator of single-bytes suitable to encrypt or decrypt
    plaintexts.
    """
    aes = AES(key)
    nonce_int = int.from_bytes(nonce, endianness)
    block_pad = b'\x00' * (AES.BLOCK_SIZE - len(nonce))
    for i in count():
        text = block_pad + nonce_int.to_bytes(len(nonce), endianness)
        for byte in aes.encrypt_block(text):
            yield byte
        nonce_int += 1
예제 #8
0
def aes_cbc_encrypt(key, ciphertext, iv):
    """
    Encrypts a plaintext using AES in CBC mode.
    """
    aes = AES(key)

    previous = iv
    encrypted_blocks = []
    for block in divide(pad_pkcs7(ciphertext), AES.BLOCK_SIZE):
        encrypted_block = aes.encrypt_block(xor(previous, block))
        encrypted_blocks.append(encrypted_block)
        previous = encrypted_block

    return b''.join(encrypted_blocks)
예제 #9
0
def example():
    k = bytes.fromhex('2b7e151628aed2a6abf7158809cf4f3c')
    m = bytes.fromhex('414553206573206d757920666163696c')
    aes = AES(k)
    ma = aes._key_matrices
    index = 4
    # print the keys
    for i in range(1, 11):
        for j in ma[i]:
            print(str(index) + " " + str(binascii.hexlify(bytearray(j))))
            index += 1
    # answer
    c = aes.encrypt_block(m)
    print(binascii.hexlify(c))
    print(stringToBytes("AES es muy facil"))
예제 #10
0
파일: test.py 프로젝트: D-0M/aes-python
 def test_256(self):
     aes = AES(b'P' * 32)
     message = b'M' * 16
     ciphertext = aes.encrypt_block(message)
     self.assertEqual(aes.decrypt_block(ciphertext), message)
예제 #11
0
class TestBlock(unittest.TestCase):
    """
    Tests raw AES-128 block operations.
    """
    def setUp(self):
        self.aes = AES(b'\00' * 16)

    def test_success(self):
        """ Should be able to encrypt and decrypt block messages. """
        message = b'\01' * 16
        ciphertext = self.aes.encrypt_block(message)
        self.assertEqual(self.aes.decrypt_block(ciphertext), message)

        message = b'a secret message'
        ciphertext = self.aes.encrypt_block(message)
        self.assertEqual(self.aes.decrypt_block(ciphertext), message)

    def test_bad_key(self):
        """ Raw AES requires keys of an exact size. """
        with self.assertRaises(AssertionError):
            AES(b'short key')

        with self.assertRaises(AssertionError):
            AES(b'long key' * 10)

    def test_expected_value_128(self):
        """
        Tests taken from the NIST document, Appendix B:
        http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
        """
        message = b'\x32\x43\xF6\xA8\x88\x5A\x30\x8D\x31\x31\x98\xA2\xE0\x37\x07\x34'
        key     = b'\x2B\x7E\x15\x16\x28\xAE\xD2\xA6\xAB\xF7\x15\x88\x09\xCF\x4F\x3C'
        ciphertext = AES(bytes(key)).encrypt_block(bytes(message))
        self.assertEqual(ciphertext, b'\x39\x25\x84\x1D\x02\xDC\x09\xFB\xDC\x11\x85\x97\x19\x6A\x0B\x32')
    
    def test_expected_value_printing(self):
        
        #Tests taken from the NIST document, Appendix B:
        #http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
        
        message = b'\x43\x6f\x72\x72\x65\x63\x74\x20\x44\x65\x63\x72\x79\x70\x74\x21'
        key     = b'\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F'
        ciphertext = AES(bytes(key)).encrypt_block_with_printing(bytes(message))
        self.assertEqual(ciphertext,  b'\xF4\x35\x15\x03\xAA\x78\x1C\x52\x02\x67\xD6\x90\xC4\x2D\x1F\x43')    
    def test_decrypt_value_printing(self):
        
        #Tests taken from the NIST document, Appendix B:
        #http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
        
        key        = b'\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F'
        ciphertext = b'\xF4\x35\x15\x03\xAA\x78\x1C\x52\x02\x67\xD6\x90\xC4\x2D\x1F\x43'
        message = AES(bytes(key)).decrypt_block_with_printing(bytes(ciphertext))
        self.assertEqual(message, b'\x43\x6f\x72\x72\x65\x63\x74\x20\x44\x65\x63\x72\x79\x70\x74\x21')
        
    
    def test_expected_value2_printing(self):
        """
        Tests taken from the NIST document, Appendix B:
        http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
        """
        message = b'\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xdd\xee\xff'
        key     = b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f'
        ciphertext = AES(bytes(key)).encrypt_block(bytes(message))
        self.assertEqual(ciphertext,  b'\x69\xc4\xe0\xd8\x6a\x7b\x04\x30\xd8\xcd\xb7\x80\x70\xb4\xc5\x5a')    
    def test_decrypt_value2_printing(self):
        """
        Tests taken from the NIST document, Appendix B:
        http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
        """
        key        = b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f'
        ciphertext = b'\x69\xc4\xe0\xd8\x6a\x7b\x04\x30\xd8\xcd\xb7\x80\x70\xb4\xc5\x5a'
        message = AES(bytes(key)).decrypt_block(bytes(ciphertext))
        self.assertEqual(message, b'\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xdd\xee\xff')
예제 #12
0
파일: tests.py 프로젝트: boppreh/aes
 def test_expected_values256(self):
     message = b'\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xAA\xBB\xCC\xDD\xEE\xFF'
     aes = AES(b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f')
     ciphertext = aes.encrypt_block(message)
     self.assertEqual(ciphertext, b'\x8e\xa2\xb7\xca\x51\x67\x45\xbf\xea\xfc\x49\x90\x4b\x49\x60\x89')
     self.assertEqual(aes.decrypt_block(ciphertext), message)
예제 #13
0
파일: tests.py 프로젝트: boppreh/aes
 def test_expected_values192(self):
     message = b'\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xAA\xBB\xCC\xDD\xEE\xFF'
     aes = AES(b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17')
     ciphertext = aes.encrypt_block(message)
     self.assertEqual(ciphertext, b'\xdd\xa9\x7c\xa4\x86\x4c\xdf\xe0\x6e\xaf\x70\xa0\xec\x0d\x71\x91')
     self.assertEqual(aes.decrypt_block(ciphertext), message)
예제 #14
0
파일: tests.py 프로젝트: boppreh/aes
 def test_256(self):
     aes = AES(b'P' * 32)
     message = b'M' * 16
     ciphertext = aes.encrypt_block(message)
     self.assertEqual(aes.decrypt_block(ciphertext), message)
예제 #15
0
    m -= 1
    m = 4
    k = int(n / m)
    # generate strings
    s = []
    for i in range(2**m):
        st = bin(i)[2:]
        s.append(str('0' * (m - len(st)) + st))
    f = []
    # get frecuency
    for i in s:
        f.append(findf(bn, i))
    sf = 0
    for i in f:
        sf += i**2
    pt = (((2**m) / k) * (sf)) - k
    return pt


k = bytes.fromhex('CFBF50935CE44C197D1459E8483A38FA')
k = bytearray.fromhex('C6CAB7B7B9D584450D0609112FD5F39A')
vi = bytes.fromhex('69F67F1AE5349D250000000000000000')
vi = bytes.fromhex('AF92750E273C5EE60000000000000000')
s = ''
aes = AES(k)
for i in range(64):
    v = bytes.fromhex(hex(int(binascii.hexlify(vi), 16) | i)[2:])
    st = str(binascii.hexlify(aes.encrypt_block(v)))
    s += st[2:len(st) - 1]
print(poker(s))