Advanced Encryption Standard

Links:



Python Implementation

The implementation is written for visualizing & demonstrating the steps of AES algorithm, so it doesn't completely focus on efficiency.

Note: The algorithm uses Electronic Code Book (ECB) mode to process longer data for the sake of simplicity in demonstration. However, ECB mode is insecure as it is vulnerable to frequency analysis, so this encryption mode must be avoided.

The symbol "▼" signifies expandable sections. Click to expand/collapse.

In [1]:
from numpy import array, zeros, arange, roll
from numpy.core.fromnumeric import shape
from IPython.core.display import display, HTML
from secrets import token_bytes
from tqdm.notebook import tqdm
from PIL import Image
In [2]:
class AdvancedEncryptionStandard:

    _substitution_box = array(
    [
        0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76,
        0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0,
        0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,
        0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75,
        0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84,
        0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,
        0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8,
        0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2,
        0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,
        0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb,
        0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79,
        0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,
        0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a,
        0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e,
        0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,
        0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16
    ], dtype='B')

    _substitution_box_inv = zeros(256, dtype='B')
    _substitution_box_inv[_substitution_box] = arange(256, dtype='B')

    _Rcon = array([0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40,
                   0x80, 0x1B, 0x36, 0x6C, 0xD8, 0xAB, 0x4D, 0x9A,
                   0x2F, 0x5E, 0xBC, 0x63, 0xC6, 0x97, 0x35, 0x6A,
                   0xD4, 0xB3, 0x7D, 0xFA, 0xEF, 0xC5, 0x91, 0x39], dtype='B')
    
    _c = array([[2, 3, 1, 1],
                [1, 2, 3, 1],
                [1, 1, 2, 3],
                [3, 1, 1, 2]], dtype='B')
    
    _c_inv = array([[0x0e, 0x0b, 0x0d, 0x09],
                    [0x09, 0x0e, 0x0b, 0x0d],
                    [0x0d, 0x09, 0x0e, 0x0b],
                    [0x0b, 0x0d, 0x09, 0x0e]], dtype='B')
    
    _key_to_rounds = {16:10, 24:12, 32:14}

    _formatters = {
            'HEX' : lambda x: hex(x)[2:].zfill(2), 
            'BIN' : lambda x: bin(x)[2:].zfill(8), 
            'DEC' : lambda x: str(x).zfill(3)
        }

    def __init__(self):
        self.html_output = ''

    def _get_html(self, body):
        return '''
        <html>
        <head>
        <style>
            *{
                font-size: 15px;
            }
            div.i{
                font-style: italic;
                text-decoration: underline;
                margin-top: 24px;
                margin-top: 5px;
                font-weight: bold;
                font-size: 17px;
            }
            .op{
                vertical-align:middle;
            }
            caption {
                font-size: 10px;
                opacity: 0.6;
            }
            table {
                border-collapse: collapse;
                margin: 3px;
                display: inline;
            }
            th, td {
                border: 1px solid;
                padding: 3px;
                margin: 0;
                text-align: center;
            }
            summary *{
                display: inline-block;
            }
            details{
                padding-left: 16px;
                margin-top: 5px;
            }
        </style>
        </head>
        <body>'''+body+'</body></html>'
    
    def _html_key_table(self, key):
        return f'''
            <h5>Given Key</h5>
            <table>
                <tr>
                    <th>ASCII</th>
                    {''.join('<td>'+chr(k)+'</td>' for k in key)}
                </tr>
                <tr>
                    <th>HEX</th>
                    {''.join('<td>'+self._formatters['HEX'](k)+'</td>' for k in key)}
                </tr>
                <tr>
                    <th>BIN</th>
                    {''.join('<td>'+self._formatters['BIN'](k)+'</td>' for k in key)}
                </tr>
                <tr>
                    <th>DEC</th>
                    {''.join('<td>'+self._formatters['DEC'](k)+'</td>' for k in key)}
                </tr>
            </table>
            '''

    def arr_to_html(self, arr, caption, fmttr = lambda x:x):
        html=f'<table><caption>{caption}</caption>'
        for row in arr:
            html+='<tr>'
            for val in row:
                html+=f'<td>{fmttr(val)}</td>'
            html+='</tr>'
        return html+'</table>'

    def state_matrix_to_html(self, data):
        html = ''
        for c, f in self._formatters.items():
            html+=self.arr_to_html(data, c, f)
        return html
        
    def pad(self, data):
        p = 16 - len(data)%16
        if p==16: return data
        return data+p.to_bytes(p, 'big')

    def unpad(self, data):
        p = int(data[-1])
        if p>16: return data
        return data.rstrip(p.to_bytes(p, 'big'))

    def galois_multiply(self, a, b):
        p = 0
        for _ in range(8):
            p^= -(b&1)&a
            mask = -((a>>7)&1)
            a = (((a<<1)%(1<<9))^(0b100011011 & mask))
            b>>=1
        return p

    def key_expansion(self, key):
        rounds = (self._key_to_rounds[len(key)]+1)*4
        w = [None]*rounds
        for i in range(4):
            w[i] = array([key[4*i+j] for j in range(4)], dtype='B')
        for i in range(4, rounds):
            temp = w[i-1].copy()
            if i%4==0:
                temp = roll(temp, -1)
                temp[:4] = self._substitution_box[temp[:4]]
                temp[0] = temp[0]^self._Rcon[i//4-1]
            w[i] = w[i-4]^temp
        w = array(w, dtype='B')

        html = '<div class="i">Key Expansion</div><table><tr><th></th>'
        for i in range(rounds):
            html+=f'<th>w<sub>{i}</sub></th>'
        for i in range(4):
            html+=f'<tr><th>B<sub>{i}</sub></th>'
            for j in range(rounds): 
                html+=f'<td>{hex((w[j][i]))[2:].zfill(2)}</td>'
            html+='</tr>'
        return w, html+'</table>'
    
    def substitute_bytes(self, data, sbox):
        for i in range(4):
            for j in range(4):
                data[i, j] = sbox[data[i, j]]
        self.html_output+='<div class="i">Substitute Bytes</div>'+self.state_matrix_to_html(data)

    def mix_columns(self, data, c):
        for i in range(4):
            column = data[:, i].copy()
            for j in range(4):
                res = 0
                for k in range(4):
                    res^=self.galois_multiply(c[j, k], column[k])
                data[j, i] = res
        self.html_output+='<div class="i">Mix Columns</div>'+self.state_matrix_to_html(data)

    def shift_rows(self, data, inverse=False):
        v = 1 if inverse else -1
        for i in range(len(data)):
            data[i] = roll(data[i], v*i)
        self.html_output+='<div class="i">Shift Rows</div>'+self.state_matrix_to_html(data)

    def add_round_key(self, data, round_key):
        b = 'BIN'
        self.html_output+='<div class="i">Add Round Key</div>'+self.arr_to_html(data, b, self._formatters[b])+'<span class="op">⊕</span>'+self.arr_to_html(round_key.T, b, self._formatters[b])+'<span class="op">=</span>'
        data^=round_key.T
        self.html_output+=self.arr_to_html(data, b, self._formatters[b])+'<p>State Matrix</p>'+self.state_matrix_to_html(data)

    def _encrypt(self, message, round_keys, rounds):
        self.html_output = ''
        data = array(message, dtype='B').reshape(4, 4).T
        self.html_output+='<p>State Matrix</p>'+self.state_matrix_to_html(data)
        self.add_round_key(data, round_keys[0:4])

        for i in range(1, rounds):
            self.html_output+=f'<details><summary>▼ Round {i}</summary>'
            self.substitute_bytes(data, self._substitution_box)
            self.shift_rows(data)
            self.mix_columns(data, self._c)
            self.add_round_key(data, round_keys[4*i:4*(i+1)])
            self.html_output+='</details>'

        self.html_output+=f'<details><summary>▼ Round {i+1}</summary>'
        self.substitute_bytes(data, self._substitution_box)
        self.shift_rows(data)
        self.add_round_key(data, round_keys[-4:])
        self.html_output+='</details>'

        return bytes(data.T.reshape(1, -1))

    def _decrypt(self, data, round_keys, rounds):
        self.html_output = ''

        data = array(data, dtype='B').reshape(4, 4).T

        self.html_output+='<p>State Matrix</p>'+self.state_matrix_to_html(data)

        self.add_round_key(data, round_keys[-4:])

        for i in range(rounds, 1, -1):
            self.html_output+=f'<details><summary>▼ Round {rounds-i+1}</summary>'
            self.shift_rows(data, inverse=True)
            self.substitute_bytes(data, self._substitution_box_inv)
            self.add_round_key(data, round_keys[4*(i-1):4*i])
            self.mix_columns(data, self._c_inv)
            self.html_output+='</details>'

        self.html_output+=f'<details><summary>▼ Round {rounds-i+2}</summary>'
        self.shift_rows(data, inverse=True)
        self.substitute_bytes(data, self._substitution_box_inv)
        self.add_round_key(data, round_keys[:4])
        self.html_output+='</details>'

        return bytes(data.T.reshape(1, -1))

    def encrypt(self, data, key=None, round_keys=None, rounds=None, key_info_expanded = False):
        html_body = f'<p>Given Plain Text: <b>{data}</b></p>'
        data = bytearray(data)
        data = self.pad(data)
        if key is not None:
            html_body+=f'<details {"open" if key_info_expanded else ""}><summary>▼ Key Information</summary>'+self._html_key_table(key)
            round_keys, html = self.key_expansion(key)
            html_body+=html+'</details>'
            rounds = self._key_to_rounds[len(key)]
        cipher_text = bytearray()
        if len(data)==16:
            html_body+='<details open><summary>▼ AES Encryption</summary>'
            cipher_text = self._encrypt(data, round_keys, rounds)
            html_body += self.html_output
        else:
            html_body+='<p>Using Electronic Code Book (ECB) mode, </p><details open><summary>▼ AES Encryption</summary>'
            for i in tqdm(range(0, len(data), 16), desc='Blocks Processed'):
                message = data[i:i+16]
                html_body+=f'<details><summary>▼ Block {i//16 + 1} | Plaintext: <b>{bytes(message)}</b></summary>'
                cipher_text += self._encrypt(message, round_keys, rounds)
                html_body += self.html_output+'</details>'
        cipher_text = bytes(cipher_text)
        html_body+= f'</details><p>Cipher Text: <b>{cipher_text}</b></p>'
        return cipher_text, HTML(self._get_html(html_body))
    
    def decrypt(self, data, key=None, round_keys=None, rounds=None, key_info_expanded = False):
        html_body = f'<p>Given Cipher Text: <b>{data}</b></p>'
        data = bytearray(data)
        if key is not None:
            html_body+=f'<details {"open" if key_info_expanded else ""}><summary>▼ Key Information</summary>'+self._html_key_table(key)
            round_keys, html = self.key_expansion(key)
            html_body+=html+'</details>'
            rounds = self._key_to_rounds[len(key)]
        decipher_text = bytearray()
        if len(data)==16:
            html_body+='<details open><summary>▼ AES Decryption</summary>'
            decipher_text = self._decrypt(data, round_keys, rounds)
            html_body += self.html_output
        else:
            html_body+='<p>Using Electronic Code Book (ECB) mode, </p><details open><summary>▼ AES Decryption</summary>'
            for i in tqdm(range(0, len(data), 16), desc='Blocks Processed'):
                message = data[i:i+16]
                html_body+=f'<details><summary>▼ Block {i//16 + 1} | Ciphertext: <b>{bytes(message)}</b></summary>'
                decipher_text += self._decrypt(message, round_keys, rounds)
                html_body += self.html_output+'</details>'

        decipher_text = bytes(self.unpad(decipher_text))
        html_body+= f'</details><p>Deciphered Text: <b>{decipher_text}</b></p>'
        return decipher_text, HTML(self._get_html(html_body))
In [3]:
key = 'asdfghjklqwertyu'.encode('ascii')
message = 'Hi! I am Samuel.'

aes = AdvancedEncryptionStandard()

print('AES Encryption:')
cipher, html = aes.encrypt(message.encode('ascii'), key, key_info_expanded = True)
display(html)

print('\n\nAES Decryption:')
decipher, html = aes.decrypt(cipher, key)
display(html)
AES Encryption:

Given Plain Text: b'Hi! I am Samuel.'

▼ Key Information
Given Key
ASCII asdfghjklqwertyu
HEX 6173646667686a6b6c71776572747975
BIN 01100001011100110110010001100110011001110110100001101010011010110110110001110001011101110110010101110010011101000111100101110101
DEC 097115100102103104106107108113119101114116121117
Key Expansion
w0w1w2w3w4w5w6w7w8w9w10w11w12w13w14w15w16w17w18w19w20w21w22w23w24w25w26w27w28w29w30w31w32w33w34w35w36w37w38w39w40w41w42w43
B061676c72f394f88a30a45cd61ebae6306ed432029f4b797b357e077c99e7e09c6b8c6cf0d45834c496cefa3e
B173687174c5addca89b36ea42546288ca492ba369210aa9c0939930f067fece3e2bd51b25fe2b30155e754550
B2646a7779f993e49db526c25f654381deeba829f748e0c93ead4d84ba2e63e75d6c0fe8b5151af247312bd99e
B3666b6575264d285d58153d60aebb86e6aa119771ddcc5b2afc306b41ecdcb7f632ee59afbe5009a6a2f2fb5d
▼ AES Encryption

State Matrix

HEX
48492075
69205365
2161616c
206d6d2e
BIN
01001000010010010010000001110101
01101001001000000101001101100101
00100001011000010110000101101100
00100000011011010110110100101110
DEC
072073032117
105032083101
033097097108
032109109046
Add Round Key
BIN
01001000010010010010000001110101
01101001001000000101001101100101
00100001011000010110000101101100
00100000011011010110110100101110
⊕
BIN
01100001011001110110110001110010
01110011011010000111000101110100
01100100011010100111011101111001
01100110011010110110010101110101
=
BIN
00101001001011100100110000000111
00011010010010000010001000010001
01000101000010110001011000010101
01000110000001100000100001011011

State Matrix

HEX
292e4c07
1a482211
450b1615
4606085b
BIN
00101001001011100100110000000111
00011010010010000010001000010001
01000101000010110001011000010101
01000110000001100000100001011011
DEC
041046076007
026072034017
069011022021
070006008091
▼ Round 1
Substitute Bytes
HEX
a53129c5
a2529382
6e2b4759
5a6f3039
BIN
10100101001100010010100111000101
10100010010100101001001110000010
01101110001010110100011101011001
01011010011011110011000000111001
DEC
165049041197
162082147130
110043071089
090111048057
Shift Rows
HEX
a53129c5
529382a2
47596e2b
395a6f30
BIN
10100101001100010010100111000101
01010010100100111000001010100010
01000111010110010110111000101011
00111001010110100110111100110000
DEC
165049041197
082147130162
071089110043
057090111048
Mix Columns
HEX
d9cfce77
f1bdebd7
32fec661
932d49bd
BIN
11011001110011111100111001110111
11110001101111011110101111010111
00110010111111101100011001100001
10010011001011010100100110111101
DEC
217207206119
241189235215
050254198097
147045073189
Add Round Key
BIN
11011001110011111100111001110111
11110001101111011110101111010111
00110010111111101100011001100001
10010011001011010100100110111101
⊕
BIN
11110011100101001111100010001010
11000101101011011101110010101000
11111001100100111110010010011101
00100110010011010010100001011101
=
BIN
00101010010110110011011011111101
00110100000100000011011101111111
11001011011011010010001011111100
10110101011000000110000111100000

State Matrix

HEX
2a5b36fd
3410377f
cb6d22fc
b56061e0
BIN
00101010010110110011011011111101
00110100000100000011011101111111
11001011011011010010001011111100
10110101011000000110000111100000
DEC
042091054253
052016055127
203109034252
181096097224
▼ Round 2
Substitute Bytes
HEX
e5390554
18ca9ad2
1f3c93b0
d5d0efe1
BIN
11100101001110010000010101010100
00011000110010101001101011010010
00011111001111001001001110110000
11010101110100001110111111100001
DEC
229057005084
024202154210
031060147176
213208239225
Shift Rows
HEX
e5390554
ca9ad218
93b01f3c
e1d5d0ef
BIN
11100101001110010000010101010100
11001010100110101101001000011000
10010011101100000001111100111100
11100001110101011101000011101111
DEC
229057005084
202154210024
147176031060
225213208239
Mix Columns
HEX
e6a2a853
25084bcf
2abc821e
b4d0791d
BIN
11100110101000101010100001010011
00100101000010000100101111001111
00101010101111001000001000011110
10110100110100000111100100011101
DEC
230162168083
037008075207
042188130030
180208121029
Add Round Key
BIN
11100110101000101010100001010011
00100101000010000100101111001111
00101010101111001000001000011110
10110100110100000111100100011101
⊕
BIN
00110000101001000101110011010110
10011011001101101110101001000010
10110101001001101100001001011111
01011000000101010011110101100000
=
BIN
11010110000001101111010010000101
10111110001111101010000110001101
10011111100110100100000001000001
11101100110001010100010001111101

State Matrix

HEX
d606f485
be3ea18d
9f9a4041
ecc5447d
BIN
11010110000001101111010010000101
10111110001111101010000110001101
10011111100110100100000001000001
11101100110001010100010001111101
DEC
214006244133
190062161141
159154064065
236197068125
▼ Round 3
Substitute Bytes
HEX
f66fbf97
aeb2325d
dbb80983
cea61bff
BIN
11110110011011111011111110010111
10101110101100100011001001011101
11011011101110000000100110000011
11001110101001100001101111111111
DEC
246111191151
174178050093
219184009131
206166027255
Shift Rows
HEX
f66fbf97
b2325dae
0983dbb8
ffcea61b
BIN
11110110011011111011111110010111
10110010001100100101110110101110
00001001100000111101101110111000
11111111110011101010011000011011
DEC
246111191151
178050093174
009131219184
255206166027
Mix Columns
HEX
ccc5ff7f
6d5bd518
4c09be7f
5f870b82
BIN
11001100110001011111111101111111
01101101010110111101010100011000
01001100000010011011111001111111
01011111100001110000101110000010
DEC
204197255127
109091213024
076009190127
095135011130
Add Round Key
BIN
11001100110001011111111101111111
01101101010110111101010100011000
01001100000010011011111001111111
01011111100001110000101110000010
⊕
BIN
00011110101110101110011000110000
01010100011000101000100011001010
01100101010000111000000111011110
10101110101110111000011011100110
=
BIN
11010010011111110001100101001111
00111001001110010101110111010010
00101001010010100011111110100001
11110001001111001000110101100100

State Matrix

HEX
d27f194f
39395dd2
294a3fa1
f13c8d64
BIN
11010010011111110001100101001111
00111001001110010101110111010010
00101001010010100011111110100001
11110001001111001000110101100100
DEC
210127025079
057057093210
041074063161
241060141100
▼ Round 4
Substitute Bytes
HEX
b5d2d484
12124cb5
a5d67532
a1eb5d43
BIN
10110101110100101101010010000100
00010010000100100100110010110101
10100101110101100111010100110010
10100001111010110101110101000011
DEC
181210212132
018018076181
165214117050
161235093067
Shift Rows
HEX
b5d2d484
124cb512
7532a5d6
43a1eb5d
BIN
10110101110100101101010010000100
00010010010011001011010100010010
01110101001100101010010111010110
01000011101000011110101101011101
DEC
181210212132
018076181018
117050165214
067161235093
Mix Columns
HEX
71f839ae
4dbdba9c
880216c6
254abae9
BIN
01110001111110000011100110101110
01001101101111011011101010011100
10001000000000100001011011000110
00100101010010101011101011101001
DEC
113248057174
077189186156
136002022198
037074186233
Add Round Key
BIN
01110001111110000011100110101110
01001101101111011011101010011100
10001000000000100001011011000110
00100101010010101011101011101001
⊕
BIN
01101110110101000011001000000010
01001001001010111010001101101001
11101011101010000010100111110111
10101010000100011001011101110001
=
BIN
00011111001011000000101110101100
00000100100101100001100111110101
01100011101010100011111100110001
10001111010110110010110110011000

State Matrix

HEX
1f2c0bac
049619f5
63aa3f31
8f5b2d98
BIN
00011111001011000000101110101100
00000100100101100001100111110101
01100011101010100011111100110001
10001111010110110010110110011000
DEC
031044011172
004150025245
099170063049
143091045152
▼ Round 5
Substitute Bytes
HEX
c0712b91
f290d4e6
fbac75c7
7339d846
BIN
11000000011100010010101110010001
11110010100100001101010011100110
11111011101011000111010111000111
01110011001110011101100001000110
DEC
192113043145
242144212230
251172117199
115057216070
Shift Rows
HEX
c0712b91
90d4e6f2
75c7fbac
467339d8
BIN
11000000011100010010101110010001
10010000110101001110011011110010
01110101110001111111101110101100
01000110011100110011100111011000
DEC
192113043145
144212230242
117199251172
070115057216
Mix Columns
HEX
0331a540
22e3d359
70a56b53
3266125d
BIN
00000011001100011010010101000000
00100010111000111101001101011001
01110000101001010110101101010011
00110010011001100001001001011101
DEC
003049165064
034227211089
112165107083
050102018093
Add Round Key
BIN
00000011001100011010010101000000
00100010111000111101001101011001
01110000101001010110101101010011
00110010011001100001001001011101
⊕
BIN
10011111010010110111100101111011
00100001000010101010100111000000
01001000111000001100100100111110
11011101110011000101101100101010
=
BIN
10011100011110101101110000111011
00000011111010010111101010011001
00111000010001011010001001101101
11101111101010100100100101110111

State Matrix

HEX
9c7adc3b
03e97a99
3845a26d
efaa4977
BIN
10011100011110101101110000111011
00000011111010010111101010011001
00111000010001011010001001101101
11101111101010100100100101110111
DEC
156122220059
003233122153
056069162109
239170073119
▼ Round 6
Substitute Bytes
HEX
deda86e2
7b1edaee
076e3a3c
dfac3bf5
BIN
11011110110110101000011011100010
01111011000111101101101011101110
00000111011011100011101000111100
11011111101011000011101111110101
DEC
222218134226
123030218238
007110058060
223172059245
Shift Rows
HEX
deda86e2
1edaee7b
3a3c076e
f5dfac3b
BIN
11011110110110101000011011100010
00011110110110101110111001111011
00111010001111000000011101101110
11110101110111111010110000111011
DEC
222218134226
030218238123
058060007110
245223172059
Mix Columns
HEX
4a399507
59eee49d
b0028908
ac363b5e
BIN
01001010001110011001010100000111
01011001111011101110010010011101
10110000000000101000100100001000
10101100001101100011101101011110
DEC
074057149007
089238228157
176002137008
172054059094
Add Round Key
BIN
01001010001110011001010100000111
01011001111011101110010010011101
10110000000000101000100100001000
10101100001101100011101101011110
⊕
BIN
00110101011111100000011101111100
10010011100110010011000011110000
10101101010011011000010010111010
11111100001100000110101101000001
=
BIN
01111111010001111001001001111011
11001010011101111101010001101101
00011101010011110000110110110010
01010000000001100101000000011111

State Matrix

HEX
7f47927b
ca77d46d
1d4f0db2
5006501f
BIN
01111111010001111001001001111011
11001010011101111101010001101101
00011101010011110000110110110010
01010000000001100101000000011111
DEC
127071146123
202119212109
029079013178
080006080031
▼ Round 7
Substitute Bytes
HEX
d2a04f21
74f5483c
a484d737
536f53c0
BIN
11010010101000000100111100100001
01110100111101010100100000111100
10100100100001001101011100110111
01010011011011110101001111000000
DEC
210160079033
116245072060
164132215055
083111083192
Shift Rows
HEX
d2a04f21
f5483c74
d737a484
c0536f53
BIN
11010010101000000100111100100001
11110101010010000011110001110100
11010111001101111010010010000100
11000000010100110110111101010011
DEC
210160079033
245072060116
215055164132
192083111083
Mix Columns
HEX
ace71109
813aaf0d
c97391b3
d4229735
BIN
10101100111001110001000100001001
10000001001110101010111100001101
11001001011100111001000110110011
11010100001000101001011100110101
DEC
172231017009
129058175013
201115145179
212034151053
Add Round Key
BIN
10101100111001110001000100001001
10000001001110101010111100001101
11001001011100111001000110110011
11010100001000101001011100110101
⊕
BIN
10011001111001111110000010011100
01100111111111101100111000111110
00101110011000111110011101011101
11101100110111001011011111110110
=
BIN
00110101000000001111000110010101
11100110110001000110000100110011
11100111000100000111011011101110
00111000111111100010000011000011

State Matrix

HEX
3500f195
e6c46133
e71076ee
38fe20c3
BIN
00110101000000001111000110010101
11100110110001000110000100110011
11100111000100000111011011101110
00111000111111100010000011000011
DEC
053000241149
230196097051
231016118238
056254032195
▼ Round 8
Substitute Bytes
HEX
9663a12a
8e1cefc3
94ca3828
07bbb72e
BIN
10010110011000111010000100101010
10001110000111001110111111000011
10010100110010100011100000101000
00000111101110111011011100101110
DEC
150099161042
142028239195
148202056040
007187183046
Shift Rows
HEX
9663a12a
1cefc38e
382894ca
2e07bbb7
BIN
10010110011000111010000100101010
00011100111011111100001110001110
00111000001010001001010011001010
00101110000001111011101110110111
DEC
150099161042
028239195142
056040148202
046007187183
Mix Columns
HEX
05c328a0
c8d920df
88d587e9
d96cc24f
BIN
00000101110000110010100010100000
11001000110110010010000011011111
10001000110101011000011111101001
11011001011011001100001001001111
DEC
005195040160
200217032223
136213135233
217108194079
Add Round Key
BIN
00000101110000110010100010100000
11001000110110010010000011011111
10001000110101011000011111101001
11011001011011001100001001001111
⊕
BIN
01101011100011000110110011110000
00101011110101010001101100100101
01101100000011111110100010110101
00110010111011100101100110101111
=
BIN
01101110010011110100010001010000
11100011000011000011101111111010
11100100110110100110111101011100
11101011100000101001101111100000

State Matrix

HEX
6e4f4450
e30c3bfa
e4da6f5c
eb829be0
BIN
01101110010011110100010001010000
11100011000011000011101111111010
11100100110110100110111101011100
11101011100000101001101111100000
DEC
110079068080
227012059250
228218111092
235130155224
▼ Round 9
Substitute Bytes
HEX
9f841b53
11fee22d
6957a84a
e91314e1
BIN
10011111100001000001101101010011
00010001111111101110001000101101
01101001010101111010100001001010
11101001000100110001010011100001
DEC
159132027083
017254226045
105087168074
233019020225
Shift Rows
HEX
9f841b53
fee22d11
a84a6957
e1e91314
BIN
10011111100001000001101101010011
11111110111000100010110100010001
10101000010010100110100101010111
11100001111010010001001100010100
DEC
159132027083
254226045017
168074105087
225233019020
Mix Columns
HEX
758d3bd6
7a6ce99c
12d2d1d0
35f64f9b
BIN
01110101100011010011101111010110
01111010011011001110100110011100
00010010110100101101000111010000
00110101111101100100111110011011
DEC
117141059214
122108233156
018210209208
053246079155
Add Round Key
BIN
01110101100011010011101111010110
01111010011011001110100110011100
00010010110100101101000111010000
00110101111101100100111110011011
⊕
BIN
11010100010110000011010011000100
11111110001010110011000000010101
00010101000110101111001001000111
10111110010100000000100110100110
=
BIN
10100001110101010000111100010010
10000100010001111101100110001001
00000111110010000010001110010111
10001011101001100100011000111101

State Matrix

HEX
a1d50f12
8447d989
07c82397
8ba6463d
BIN
10100001110101010000111100010010
10000100010001111101100110001001
00000111110010000010001110010111
10001011101001100100011000111101
DEC
161213015018
132071217137
007200035151
139166070061
▼ Round 10
Substitute Bytes
HEX
320376c9
5fa035a7
c5e82688
3d245a27
BIN
00110010000000110111011011001001
01011111101000000011010110100111
11000101111010000010011010001000
00111101001001000101101000100111
DEC
050003118201
095160053167
197232038136
061036090039
Shift Rows
HEX
320376c9
a035a75f
2688c5e8
273d245a
BIN
00110010000000110111011011001001
10100000001101011010011101011111
00100110100010001100010111101000
00100111001111010010010001011010
DEC
050003118201
160053167095
038136197232
039061036090
Add Round Key
BIN
00110010000000110111011011001001
10100000001101011010011101011111
00100110100010001100010111101000
00100111001111010010010001011010
⊕
BIN
10010110110011101111101000111110
01011110011101010100010101010000
00110001001010111101100110011110
10100010111100101111101101011101
=
BIN
10100100110011011000110011110111
11111110010000001110001000001111
00010111101000110001110001110110
10000101110011111101111100000111

State Matrix

HEX
a4cd8cf7
fe40e20f
17a31c76
85cfdf07
BIN
10100100110011011000110011110111
11111110010000001110001000001111
00010111101000110001110001110110
10000101110011111101111100000111
DEC
164205140247
254064226015
023163028118
133207223007

Cipher Text: b'\xa4\xfe\x17\x85\xcd@\xa3\xcf\x8c\xe2\x1c\xdf\xf7\x0fv\x07'


AES Decryption:

Given Cipher Text: b'\xa4\xfe\x17\x85\xcd@\xa3\xcf\x8c\xe2\x1c\xdf\xf7\x0fv\x07'

▼ Key Information
Given Key
ASCII asdfghjklqwertyu
HEX 6173646667686a6b6c71776572747975
BIN 01100001011100110110010001100110011001110110100001101010011010110110110001110001011101110110010101110010011101000111100101110101
DEC 097115100102103104106107108113119101114116121117
Key Expansion
w0w1w2w3w4w5w6w7w8w9w10w11w12w13w14w15w16w17w18w19w20w21w22w23w24w25w26w27w28w29w30w31w32w33w34w35w36w37w38w39w40w41w42w43
B061676c72f394f88a30a45cd61ebae6306ed432029f4b797b357e077c99e7e09c6b8c6cf0d45834c496cefa3e
B173687174c5addca89b36ea42546288ca492ba369210aa9c0939930f067fece3e2bd51b25fe2b30155e754550
B2646a7779f993e49db526c25f654381deeba829f748e0c93ead4d84ba2e63e75d6c0fe8b5151af247312bd99e
B3666b6575264d285d58153d60aebb86e6aa119771ddcc5b2afc306b41ecdcb7f632ee59afbe5009a6a2f2fb5d
▼ AES Decryption

State Matrix

HEX
a4cd8cf7
fe40e20f
17a31c76
85cfdf07
BIN
10100100110011011000110011110111
11111110010000001110001000001111
00010111101000110001110001110110
10000101110011111101111100000111
DEC
164205140247
254064226015
023163028118
133207223007
Add Round Key
BIN
10100100110011011000110011110111
11111110010000001110001000001111
00010111101000110001110001110110
10000101110011111101111100000111
⊕
BIN
10010110110011101111101000111110
01011110011101010100010101010000
00110001001010111101100110011110
10100010111100101111101101011101
=
BIN
00110010000000110111011011001001
10100000001101011010011101011111
00100110100010001100010111101000
00100111001111010010010001011010

State Matrix

HEX
320376c9
a035a75f
2688c5e8
273d245a
BIN
00110010000000110111011011001001
10100000001101011010011101011111
00100110100010001100010111101000
00100111001111010010010001011010
DEC
050003118201
160053167095
038136197232
039061036090
▼ Round 1
Shift Rows
HEX
320376c9
5fa035a7
c5e82688
3d245a27
BIN
00110010000000110111011011001001
01011111101000000011010110100111
11000101111010000010011010001000
00111101001001000101101000100111
DEC
050003118201
095160053167
197232038136
061036090039
Substitute Bytes
HEX
a1d50f12
8447d989
07c82397
8ba6463d
BIN
10100001110101010000111100010010
10000100010001111101100110001001
00000111110010000010001110010111
10001011101001100100011000111101
DEC
161213015018
132071217137
007200035151
139166070061
Add Round Key
BIN
10100001110101010000111100010010
10000100010001111101100110001001
00000111110010000010001110010111
10001011101001100100011000111101
⊕
BIN
11010100010110000011010011000100
11111110001010110011000000010101
00010101000110101111001001000111
10111110010100000000100110100110
=
BIN
01110101100011010011101111010110
01111010011011001110100110011100
00010010110100101101000111010000
00110101111101100100111110011011

State Matrix

HEX
758d3bd6
7a6ce99c
12d2d1d0
35f64f9b
BIN
01110101100011010011101111010110
01111010011011001110100110011100
00010010110100101101000111010000
00110101111101100100111110011011
DEC
117141059214
122108233156
018210209208
053246079155
Mix Columns
HEX
9f841b53
fee22d11
a84a6957
e1e91314
BIN
10011111100001000001101101010011
11111110111000100010110100010001
10101000010010100110100101010111
11100001111010010001001100010100
DEC
159132027083
254226045017
168074105087
225233019020
▼ Round 2
Shift Rows
HEX
9f841b53
11fee22d
6957a84a
e91314e1
BIN
10011111100001000001101101010011
00010001111111101110001000101101
01101001010101111010100001001010
11101001000100110001010011100001
DEC
159132027083
017254226045
105087168074
233019020225
Substitute Bytes
HEX
6e4f4450
e30c3bfa
e4da6f5c
eb829be0
BIN
01101110010011110100010001010000
11100011000011000011101111111010
11100100110110100110111101011100
11101011100000101001101111100000
DEC
110079068080
227012059250
228218111092
235130155224
Add Round Key
BIN
01101110010011110100010001010000
11100011000011000011101111111010
11100100110110100110111101011100
11101011100000101001101111100000
⊕
BIN
01101011100011000110110011110000
00101011110101010001101100100101
01101100000011111110100010110101
00110010111011100101100110101111
=
BIN
00000101110000110010100010100000
11001000110110010010000011011111
10001000110101011000011111101001
11011001011011001100001001001111

State Matrix

HEX
05c328a0
c8d920df
88d587e9
d96cc24f
BIN
00000101110000110010100010100000
11001000110110010010000011011111
10001000110101011000011111101001
11011001011011001100001001001111
DEC
005195040160
200217032223
136213135233
217108194079
Mix Columns
HEX
9663a12a
1cefc38e
382894ca
2e07bbb7
BIN
10010110011000111010000100101010
00011100111011111100001110001110
00111000001010001001010011001010
00101110000001111011101110110111
DEC
150099161042
028239195142
056040148202
046007187183
▼ Round 3
Shift Rows
HEX
9663a12a
8e1cefc3
94ca3828
07bbb72e
BIN
10010110011000111010000100101010
10001110000111001110111111000011
10010100110010100011100000101000
00000111101110111011011100101110
DEC
150099161042
142028239195
148202056040
007187183046
Substitute Bytes
HEX
3500f195
e6c46133
e71076ee
38fe20c3
BIN
00110101000000001111000110010101
11100110110001000110000100110011
11100111000100000111011011101110
00111000111111100010000011000011
DEC
053000241149
230196097051
231016118238
056254032195
Add Round Key
BIN
00110101000000001111000110010101
11100110110001000110000100110011
11100111000100000111011011101110
00111000111111100010000011000011
⊕
BIN
10011001111001111110000010011100
01100111111111101100111000111110
00101110011000111110011101011101
11101100110111001011011111110110
=
BIN
10101100111001110001000100001001
10000001001110101010111100001101
11001001011100111001000110110011
11010100001000101001011100110101

State Matrix

HEX
ace71109
813aaf0d
c97391b3
d4229735
BIN
10101100111001110001000100001001
10000001001110101010111100001101
11001001011100111001000110110011
11010100001000101001011100110101
DEC
172231017009
129058175013
201115145179
212034151053
Mix Columns
HEX
d2a04f21
f5483c74
d737a484
c0536f53
BIN
11010010101000000100111100100001
11110101010010000011110001110100
11010111001101111010010010000100
11000000010100110110111101010011
DEC
210160079033
245072060116
215055164132
192083111083
▼ Round 4
Shift Rows
HEX
d2a04f21
74f5483c
a484d737
536f53c0
BIN
11010010101000000100111100100001
01110100111101010100100000111100
10100100100001001101011100110111
01010011011011110101001111000000
DEC
210160079033
116245072060
164132215055
083111083192
Substitute Bytes
HEX
7f47927b
ca77d46d
1d4f0db2
5006501f
BIN
01111111010001111001001001111011
11001010011101111101010001101101
00011101010011110000110110110010
01010000000001100101000000011111
DEC
127071146123
202119212109
029079013178
080006080031
Add Round Key
BIN
01111111010001111001001001111011
11001010011101111101010001101101
00011101010011110000110110110010
01010000000001100101000000011111
⊕
BIN
00110101011111100000011101111100
10010011100110010011000011110000
10101101010011011000010010111010
11111100001100000110101101000001
=
BIN
01001010001110011001010100000111
01011001111011101110010010011101
10110000000000101000100100001000
10101100001101100011101101011110

State Matrix

HEX
4a399507
59eee49d
b0028908
ac363b5e
BIN
01001010001110011001010100000111
01011001111011101110010010011101
10110000000000101000100100001000
10101100001101100011101101011110
DEC
074057149007
089238228157
176002137008
172054059094
Mix Columns
HEX
deda86e2
1edaee7b
3a3c076e
f5dfac3b
BIN
11011110110110101000011011100010
00011110110110101110111001111011
00111010001111000000011101101110
11110101110111111010110000111011
DEC
222218134226
030218238123
058060007110
245223172059
▼ Round 5
Shift Rows
HEX
deda86e2
7b1edaee
076e3a3c
dfac3bf5
BIN
11011110110110101000011011100010
01111011000111101101101011101110
00000111011011100011101000111100
11011111101011000011101111110101
DEC
222218134226
123030218238
007110058060
223172059245
Substitute Bytes
HEX
9c7adc3b
03e97a99
3845a26d
efaa4977
BIN
10011100011110101101110000111011
00000011111010010111101010011001
00111000010001011010001001101101
11101111101010100100100101110111
DEC
156122220059
003233122153
056069162109
239170073119
Add Round Key
BIN
10011100011110101101110000111011
00000011111010010111101010011001
00111000010001011010001001101101
11101111101010100100100101110111
⊕
BIN
10011111010010110111100101111011
00100001000010101010100111000000
01001000111000001100100100111110
11011101110011000101101100101010
=
BIN
00000011001100011010010101000000
00100010111000111101001101011001
01110000101001010110101101010011
00110010011001100001001001011101

State Matrix

HEX
0331a540
22e3d359
70a56b53
3266125d
BIN
00000011001100011010010101000000
00100010111000111101001101011001
01110000101001010110101101010011
00110010011001100001001001011101
DEC
003049165064
034227211089
112165107083
050102018093
Mix Columns
HEX
c0712b91
90d4e6f2
75c7fbac
467339d8
BIN
11000000011100010010101110010001
10010000110101001110011011110010
01110101110001111111101110101100
01000110011100110011100111011000
DEC
192113043145
144212230242
117199251172
070115057216
▼ Round 6
Shift Rows
HEX
c0712b91
f290d4e6
fbac75c7
7339d846
BIN
11000000011100010010101110010001
11110010100100001101010011100110
11111011101011000111010111000111
01110011001110011101100001000110
DEC
192113043145
242144212230
251172117199
115057216070
Substitute Bytes
HEX
1f2c0bac
049619f5
63aa3f31
8f5b2d98
BIN
00011111001011000000101110101100
00000100100101100001100111110101
01100011101010100011111100110001
10001111010110110010110110011000
DEC
031044011172
004150025245
099170063049
143091045152
Add Round Key
BIN
00011111001011000000101110101100
00000100100101100001100111110101
01100011101010100011111100110001
10001111010110110010110110011000
⊕
BIN
01101110110101000011001000000010
01001001001010111010001101101001
11101011101010000010100111110111
10101010000100011001011101110001
=
BIN
01110001111110000011100110101110
01001101101111011011101010011100
10001000000000100001011011000110
00100101010010101011101011101001

State Matrix

HEX
71f839ae
4dbdba9c
880216c6
254abae9
BIN
01110001111110000011100110101110
01001101101111011011101010011100
10001000000000100001011011000110
00100101010010101011101011101001
DEC
113248057174
077189186156
136002022198
037074186233
Mix Columns
HEX
b5d2d484
124cb512
7532a5d6
43a1eb5d
BIN
10110101110100101101010010000100
00010010010011001011010100010010
01110101001100101010010111010110
01000011101000011110101101011101
DEC
181210212132
018076181018
117050165214
067161235093
▼ Round 7
Shift Rows
HEX
b5d2d484
12124cb5
a5d67532
a1eb5d43
BIN
10110101110100101101010010000100
00010010000100100100110010110101
10100101110101100111010100110010
10100001111010110101110101000011
DEC
181210212132
018018076181
165214117050
161235093067
Substitute Bytes
HEX
d27f194f
39395dd2
294a3fa1
f13c8d64
BIN
11010010011111110001100101001111
00111001001110010101110111010010
00101001010010100011111110100001
11110001001111001000110101100100
DEC
210127025079
057057093210
041074063161
241060141100
Add Round Key
BIN
11010010011111110001100101001111
00111001001110010101110111010010
00101001010010100011111110100001
11110001001111001000110101100100
⊕
BIN
00011110101110101110011000110000
01010100011000101000100011001010
01100101010000111000000111011110
10101110101110111000011011100110
=
BIN
11001100110001011111111101111111
01101101010110111101010100011000
01001100000010011011111001111111
01011111100001110000101110000010

State Matrix

HEX
ccc5ff7f
6d5bd518
4c09be7f
5f870b82
BIN
11001100110001011111111101111111
01101101010110111101010100011000
01001100000010011011111001111111
01011111100001110000101110000010
DEC
204197255127
109091213024
076009190127
095135011130
Mix Columns
HEX
f66fbf97
b2325dae
0983dbb8
ffcea61b
BIN
11110110011011111011111110010111
10110010001100100101110110101110
00001001100000111101101110111000
11111111110011101010011000011011
DEC
246111191151
178050093174
009131219184
255206166027
▼ Round 8
Shift Rows
HEX
f66fbf97
aeb2325d
dbb80983
cea61bff
BIN
11110110011011111011111110010111
10101110101100100011001001011101
11011011101110000000100110000011
11001110101001100001101111111111
DEC
246111191151
174178050093
219184009131
206166027255
Substitute Bytes
HEX
d606f485
be3ea18d
9f9a4041
ecc5447d
BIN
11010110000001101111010010000101
10111110001111101010000110001101
10011111100110100100000001000001
11101100110001010100010001111101
DEC
214006244133
190062161141
159154064065
236197068125
Add Round Key
BIN
11010110000001101111010010000101
10111110001111101010000110001101
10011111100110100100000001000001
11101100110001010100010001111101
⊕
BIN
00110000101001000101110011010110
10011011001101101110101001000010
10110101001001101100001001011111
01011000000101010011110101100000
=
BIN
11100110101000101010100001010011
00100101000010000100101111001111
00101010101111001000001000011110
10110100110100000111100100011101

State Matrix

HEX
e6a2a853
25084bcf
2abc821e
b4d0791d
BIN
11100110101000101010100001010011
00100101000010000100101111001111
00101010101111001000001000011110
10110100110100000111100100011101
DEC
230162168083
037008075207
042188130030
180208121029
Mix Columns
HEX
e5390554
ca9ad218
93b01f3c
e1d5d0ef
BIN
11100101001110010000010101010100
11001010100110101101001000011000
10010011101100000001111100111100
11100001110101011101000011101111
DEC
229057005084
202154210024
147176031060
225213208239
▼ Round 9
Shift Rows
HEX
e5390554
18ca9ad2
1f3c93b0
d5d0efe1
BIN
11100101001110010000010101010100
00011000110010101001101011010010
00011111001111001001001110110000
11010101110100001110111111100001
DEC
229057005084
024202154210
031060147176
213208239225
Substitute Bytes
HEX
2a5b36fd
3410377f
cb6d22fc
b56061e0
BIN
00101010010110110011011011111101
00110100000100000011011101111111
11001011011011010010001011111100
10110101011000000110000111100000
DEC
042091054253
052016055127
203109034252
181096097224
Add Round Key
BIN
00101010010110110011011011111101
00110100000100000011011101111111
11001011011011010010001011111100
10110101011000000110000111100000
⊕
BIN
11110011100101001111100010001010
11000101101011011101110010101000
11111001100100111110010010011101
00100110010011010010100001011101
=
BIN
11011001110011111100111001110111
11110001101111011110101111010111
00110010111111101100011001100001
10010011001011010100100110111101

State Matrix

HEX
d9cfce77
f1bdebd7
32fec661
932d49bd
BIN
11011001110011111100111001110111
11110001101111011110101111010111
00110010111111101100011001100001
10010011001011010100100110111101
DEC
217207206119
241189235215
050254198097
147045073189
Mix Columns
HEX
a53129c5
529382a2
47596e2b
395a6f30
BIN
10100101001100010010100111000101
01010010100100111000001010100010
01000111010110010110111000101011
00111001010110100110111100110000
DEC
165049041197
082147130162
071089110043
057090111048
▼ Round 10
Shift Rows
HEX
a53129c5
a2529382
6e2b4759
5a6f3039
BIN
10100101001100010010100111000101
10100010010100101001001110000010
01101110001010110100011101011001
01011010011011110011000000111001
DEC
165049041197
162082147130
110043071089
090111048057
Substitute Bytes
HEX
292e4c07
1a482211
450b1615
4606085b
BIN
00101001001011100100110000000111
00011010010010000010001000010001
01000101000010110001011000010101
01000110000001100000100001011011
DEC
041046076007
026072034017
069011022021
070006008091
Add Round Key
BIN
00101001001011100100110000000111
00011010010010000010001000010001
01000101000010110001011000010101
01000110000001100000100001011011
⊕
BIN
01100001011001110110110001110010
01110011011010000111000101110100
01100100011010100111011101111001
01100110011010110110010101110101
=
BIN
01001000010010010010000001110101
01101001001000000101001101100101
00100001011000010110000101101100
00100000011011010110110100101110

State Matrix

HEX
48492075
69205365
2161616c
206d6d2e
BIN
01001000010010010010000001110101
01101001001000000101001101100101
00100001011000010110000101101100
00100000011011010110110100101110
DEC
072073032117
105032083101
033097097108
032109109046

Deciphered Text: b'Hi! I am Samuel.'

In [4]:
key = token_bytes(16)
message = 'Advanced Encryption Standard is cool!'

aes = AdvancedEncryptionStandard()

print('AES Encryption:')
cipher, html = aes.encrypt(message.encode('ascii'), key)
display(html)

print('\n\nAES Decryption:')
decipher, html = aes.decrypt(cipher, key)
display(html)
AES Encryption:

Given Plain Text: b'Advanced Encryption Standard is cool!'

▼ Key Information
Given Key
ASCII M.‰SØz8Àߍ÷OU»
HEX 4d2e8953d87a180738c0df8df74f55bb
BIN 01001101001011101000100101010011110110000111101000011000000001110011100011000000110111111000110111110111010011110101010110111011
DEC 077046137083216122024007056192223141247079085187
Key Expansion
w0w1w2w3w4w5w6w7w8w9w10w11w12w13w14w15w16w17w18w19w20w21w22w23w24w25w26w27w28w29w30w31w32w33w34w35w36w37w38w39w40w41w42w43
B04dd838f7c91129de04153ce224310def22131ef10c1f01f0c3dcdd2de935e8c5ae9b73b623b8cb7d6ad21964
B12e7ac04fd2a8682773dbb394964dfe6afab749233285ccef05804ca357d79b388750cbf32070bb48a8d8632b
B28918df55637ba4f1047fdb2a364992b8d29b09b1910a03b2f3f9fa482bd2286013c1e98936f71e97ef180691
B353078dbb3b3cb10a261aaba1bea40fae61c5ca64c005cfab4c49862d94dd5b7632efb4c27c9327e5831037d2

Using Electronic Code Book (ECB) mode,

▼ AES Encryption
▼ Block 1 | Plaintext: b'Advanced Encrypt'

State Matrix

HEX
416e2072
64634579
76656e70
61646374
BIN
01000001011011100010000001110010
01100100011000110100010101111001
01110110011001010110111001110000
01100001011001000110001101110100
DEC
065110032114
100099069121
118101110112
097100099116
Add Round Key
BIN
01000001011011100010000001110010
01100100011000110100010101111001
01110110011001010110111001110000
01100001011001000110001101110100
⊕
BIN
01001101110110000011100011110111
00101110011110101100000001001111
10001001000110001101111101010101
01010011000001111000110110111011
=
BIN
00001100101101100001100010000101
01001010000110011000010100110110
11111111011111011011000100100101
00110010011000111110111011001111

State Matrix

HEX
0cb61885
4a198536
ff7db125
3263eecf
BIN
00001100101101100001100010000101
01001010000110011000010100110110
11111111011111011011000100100101
00110010011000111110111011001111
DEC
012182024133
074025133054
255125177037
050099238207
▼ Round 1
Substitute Bytes
HEX
fe4ead97
d6d49705
16ffc83f
23fb288a
BIN
11111110010011101010110110010111
11010110110101001001011100000101
00010110111111111100100000111111
00100011111110110010100010001010
DEC
254078173151
214212151005
022255200063
035251040138
Shift Rows
HEX
fe4ead97
d49705d6
c83f16ff
8a23fb28
BIN
11111110010011101010110110010111
11010100100101110000010111010110
11001000001111110001011011111111
10001010001000111111101100101000
DEC
254078173151
212151005214
200063022255
138035251040
Mix Columns
HEX
c222a383
84196612
24c292dc
0a3c12db
BIN
11000010001000101010001110000011
10000100000110010110011000010010
00100100110000101001001011011100
00001010001111000001001011011011
DEC
194034163131
132025102018
036194146220
010060018219
Add Round Key
BIN
11000010001000101010001110000011
10000100000110010110011000010010
00100100110000101001001011011100
00001010001111000001001011011011
⊕
BIN
11001001000100010010100111011110
11010010101010000110100000100111
01100011011110111010010011110001
00111011001111001011000100001010
=
BIN
00001011001100111000101001011101
01010110101100010000111000110101
01000111101110010011011000101101
00110001000000001010001111010001

State Matrix

HEX
0b338a5d
56b10e35
47b9362d
3100a3d1
BIN
00001011001100111000101001011101
01010110101100010000111000110101
01000111101110010011011000101101
00110001000000001010001111010001
DEC
011051138093
086177014053
071185054045
049000163209
▼ Round 2
Substitute Bytes
HEX
2bc37e4c
b1c8ab96
a05605d8
c7630a3e
BIN
00101011110000110111111001001100
10110001110010001010101110010110
10100000010101100000010111011000
11000111011000110000101000111110
DEC
043195126076
177200171150
160086005216
199099010062
Shift Rows
HEX
2bc37e4c
c8ab96b1
05d8a056
3ec7630a
BIN
00101011110000110111111001001100
11001000101010111001011010110001
00000101110110001010000001010110
00111110110001110110001100001010
DEC
043195126076
200171150177
005216160086
062199099010
Mix Columns
HEX
2e649e0c
913ad1c5
ab91164f
ccb87227
BIN
00101110011001001001111000001100
10010001001110101101000111000101
10101011100100010001011001001111
11001100101110000111001000100111
DEC
046100158012
145058209197
171145022079
204184114039
Add Round Key
BIN
00101110011001001001111000001100
10010001001110101101000111000101
10101011100100010001011001001111
11001100101110000111001000100111
⊕
BIN
00000100000101010011110011100010
01110011110110111011001110010100
00000100011111111101101100101010
00100110000110101010101110100001
=
BIN
00101010011100011010001011101110
11100010111000010110001001010001
10101111111011101100110101100101
11101010101000101101100110000110

State Matrix

HEX
2a71a2ee
e2e16251
afeecd65
eaa2d986
BIN
00101010011100011010001011101110
11100010111000010110001001010001
10101111111011101100110101100101
11101010101000101101100110000110
DEC
042113162238
226225098081
175238205101
234162217134
▼ Round 3
Substitute Bytes
HEX
e5a33a28
98f8aad1
7928bd4d
873a3544
BIN
11100101101000110011101000101000
10011000111110001010101011010001
01111001001010001011110101001101
10000111001110100011010101000100
DEC
229163058040
152248170209
121040189077
135058053068
Shift Rows
HEX
e5a33a28
f8aad198
bd4d7928
44873a35
BIN
11100101101000110011101000101000
11111000101010101101000110011000
10111101010011010111100100101000
01000100100001110011101000110101
DEC
229163058040
248170209152
189077121040
068135058053
Mix Columns
HEX
3b725ffe
96bc324e
b00157bf
f90c92a2
BIN
00111011011100100101111111111110
10010110101111000011001001001110
10110000000000010101011110111111
11111001000011001001001010100010
DEC
059114095254
150188050078
176001087191
249012146162
Add Round Key
BIN
00111011011100100101111111111110
10010110101111000011001001001110
10110000000000010101011110111111
11111001000011001001001010100010
⊕
BIN
00100100001100010000110111101111
10010110010011011111111001101010
00110110010010011001001010111000
10111110101001000000111110101110
=
BIN
00011111010000110101001000010001
00000000111100011100110000100100
10000110010010001100010100000111
01000111101010001001110100001100

State Matrix

HEX
1f435211
00f1cc24
8648c507
47a89d0c
BIN
00011111010000110101001000010001
00000000111100011100110000100100
10000110010010001100010100000111
01000111101010001001110100001100
DEC
031067082017
000241204036
134072197007
071168157012
▼ Round 4
Substitute Bytes
HEX
c01a0082
63a14b36
4452a6c5
a0c25efe
BIN
11000000000110100000000010000010
01100011101000010100101100110110
01000100010100101010011011000101
10100000110000100101111011111110
DEC
192026000130
099161075054
068082166197
160194094254
Shift Rows
HEX
c01a0082
a14b3663
a6c54452
fea0c25e
BIN
11000000000110100000000010000010
10100001010010110011011001100011
10100110110001010100010001010010
11111110101000001100001001011110
DEC
192026000130
161075054099
166197068082
254160194094
Mix Columns
HEX
3b8cdcb6
967862ec
2f3be3a7
bbfbed10
BIN
00111011100011001101110010110110
10010110011110000110001011101100
00101111001110111110001110100111
10111011111110111110110100010000
DEC
059140220182
150120098236
047059227167
187251237016
Add Round Key
BIN
00111011100011001101110010110110
10010110011110000110001011101100
00101111001110111110001110100111
10111011111110111110110100010000
⊕
BIN
00100010000100110001111011110001
11111010101101110100100100100011
11010010100110110000100110110001
01100001110001011100101001100100
=
BIN
00011001100111111100001001000111
01101100110011110010101111001111
11111101101000001110101000010110
11011010001111100010011101110100

State Matrix

HEX
199fc247
6ccf2bcf
fda0ea16
da3e2774
BIN
00011001100111111100001001000111
01101100110011110010101111001111
11111101101000001110101000010110
11011010001111100010011101110100
DEC
025159194071
108207043207
253160234022
218062039116
▼ Round 5
Substitute Bytes
HEX
d4db25a0
508af18a
54e08747
57b2cc92
BIN
11010100110110110010010110100000
01010000100010101111000110001010
01010100111000001000011101000111
01010111101100101100110010010010
DEC
212219037160
080138241138
084224135071
087178204146
Shift Rows
HEX
d4db25a0
8af18a50
874754e0
9257b2cc
BIN
11010100110110110010010110100000
10001010111100011000101001010000
10000111010001110101010011100000
10010010010101111011001011001100
DEC
212219037160
138241138080
135071084224
146087178204
Mix Columns
HEX
23b52987
dbbc64f7
e65dca64
556ecec8
BIN
00100011101101010010100110000111
11011011101111000110010011110111
11100110010111011100101001100100
01010101011011101100111011001000
DEC
035181041135
219188100247
230093202100
085110206200
Add Round Key
BIN
00100011101101010010100110000111
11011011101111000110010011110111
11100110010111011100101001100100
01010101011011101100111011001000
⊕
BIN
00001100000111110000000111110000
00110010100001011100110011101111
10010001000010100000001110110010
11000000000001011100111110101011
=
BIN
00101111101010100010100001110111
11101001001110011010100000011000
01110111010101111100100111010110
10010101011010110000000101100011

State Matrix

HEX
2faa2877
e939a818
7757c9d6
956b0163
BIN
00101111101010100010100001110111
11101001001110011010100000011000
01110111010101111100100111010110
10010101011010110000000101100011
DEC
047170040119
233057168024
119087201214
149107001099
▼ Round 6
Substitute Bytes
HEX
15ac34f5
1e12c2ad
f55bddf6
2a7f7cfb
BIN
00010101101011000011010011110101
00011110000100101100001010101101
11110101010110111101110111110110
00101010011111110111110011111011
DEC
021172052245
030018194173
245091221246
042127124251
Shift Rows
HEX
15ac34f5
12c2ad1e
ddf6f55b
fb2a7f7c
BIN
00010101101011000011010011110101
00010010110000101010110100011110
11011101111101101111010101011011
11111011001010100111111101111100
DEC
021172052245
018194173030
221246245091
251042127124
Mix Columns
HEX
3ac20ef4
b6180e58
b0e7e9d9
1d8ffab9
BIN
00111010110000100000111011110100
10110110000110000000111001011000
10110000111001111110100111011001
00011101100011111111101010111001
DEC
058194014244
182024014088
176231233217
029143250185
Add Round Key
BIN
00111010110000100000111011110100
10110110000110000000111001011000
10110000111001111110100111011001
00011101100011111111101010111001
⊕
BIN
11000011110111001101110100101101
00000101100000000100110010100011
11110011111110011111101001001000
01001100010010011000011000101101
=
BIN
11111001000111101101001111011001
10110011100110000100001011111011
01000011000111100001001110010001
01010001110001100111110010010100

State Matrix

HEX
f91ed3d9
b39842fb
431e1391
51c67c94
BIN
11111001000111101101001111011001
10110011100110000100001011111011
01000011000111100001001110010001
01010001110001100111110010010100
DEC
249030211217
179152066251
067030019145
081198124148
▼ Round 7
Substitute Bytes
HEX
99726635
6d462c0f
1a727d81
d1b41022
BIN
10011001011100100110011000110101
01101101010001100010110000001111
00011010011100100111110110000001
11010001101101000001000000100010
DEC
153114102053
109070044015
026114125129
209180016034
Shift Rows
HEX
99726635
462c0f6d
7d811a72
22d1b410
BIN
10011001011100100110011000110101
01000110001011000000111101101101
01111101100000010001101001110010
00100010110100011011010000010000
DEC
153114102053
070044015109
125129026114
034209180016
Mix Columns
HEX
bcc073bf
b063e269
432f9a8c
cf82cc60
BIN
10111100110000000111001110111111
10110000011000111110001001101001
01000011001011111001101010001100
11001111100000101100110001100000
DEC
188192115191
176099226105
067047154140
207130204096
Add Round Key
BIN
10111100110000000111001110111111
10110000011000111110001001101001
01000011001011111001101010001100
11001111100000101100110001100000
⊕
BIN
11101001001101011110100011000101
01010111110101111001101100111000
00101011110100100010100001100000
10010100110111010101101101110110
=
BIN
01010101111101011001101101111010
11100111101101000111100101010001
01101000111111011011001011101100
01011011010111111001011100010110

State Matrix

HEX
55f59b7a
e7b47951
68fdb2ec
5b5f9716
BIN
01010101111101011001101101111010
11100111101101000111100101010001
01101000111111011011001011101100
01011011010111111001011100010110
DEC
085245155122
231180121081
104253178236
091095151022
▼ Round 8
Substitute Bytes
HEX
fce614da
948db6d1
455437ce
39cf8847
BIN
11111100111001100001010011011010
10010100100011011011011011010001
01000101010101000011011111001110
00111001110011111000100001000111
DEC
252230020218
148141182209
069084055206
057207136071
Shift Rows
HEX
fce614da
8db6d194
37ce4554
4739cf88
BIN
11111100111001100001010011011010
10001101101101101101000110010100
00110111110011100100010101010100
01000111001110011100111110001000
DEC
252230020218
141182209148
055206069084
071057207136
Mix Columns
HEX
1fe1cad4
e3e1ad9d
d69c0565
2b3b2dbe
BIN
00011111111000011100101011010100
11100011111000011010110110011101
11010110100111000000010101100101
00101011001110110010110110111110
DEC
031225202212
227225173157
214156005101
043059045190
Add Round Key
BIN
00011111111000011100101011010100
11100011111000011010110110011101
11010110100111000000010101100101
00101011001110110010110110111110
⊕
BIN
10101110100110110111001110110110
10000111010100001100101111110011
00010011110000011110100110001001
00110010111011111011010011000010
=
BIN
10110001011110101011100101100010
01100100101100010110011001101110
11000101010111011110110011101100
00011001110101001001100101111100

State Matrix

HEX
b17ab962
64b1666e
c55decec
19d4997c
BIN
10110001011110101011100101100010
01100100101100010110011001101110
11000101010111011110110011101100
00011001110101001001100101111100
DEC
177122185098
100177102110
197093236236
025212153124
▼ Round 9
Substitute Bytes
HEX
c8da56aa
43c8339f
a64ccece
d448ee10
BIN
11001000110110100101011010101010
01000011110010000011001110011111
10100110010011001100111011001110
11010100010010001110111000010000
DEC
200218086170
067200051159
166076206206
212072238016
Shift Rows
HEX
c8da56aa
c8339f43
cecea64c
10d448ee
BIN
11001000110110100101011010101010
11001000001100111001111101000011
11001110110011101010011001001100
00010000110101000100100011101110
DEC
200218086170
200051159067
206206166076
016212072238
Mix Columns
HEX
16e0f828
1a21ca16
b7094658
653b532d
BIN
00010110111000001111100000101000
00011010001000011100101000010110
10110111000010010100011001011000
01100101001110110101001100101101
DEC
022224248040
026033202022
183009070088
101059083045
Add Round Key
BIN
00010110111000001111100000101000
00011010001000011100101000010110
10110111000010010100011001011000
01100101001110110101001100101101
⊕
BIN
00100011101110001100101101111101
00100000011100001011101101001000
00110110111101110001111010010111
01111100100100110010011111100101
=
BIN
00110101010110000011001101010101
00111010010100010111000101011110
10000001111111100101100011001111
00011001101010000111010011001000

State Matrix

HEX
35583355
3a51715e
81fe58cf
19a874c8
BIN
00110101010110000011001101010101
00111010010100010111000101011110
10000001111111100101100011001111
00011001101010000111010011001000
DEC
053088051085
058081113094
129254088207
025168116200
▼ Round 10
Substitute Bytes
HEX
966ac3fc
80d1a358
0cbb6a8a
d4c292e8
BIN
10010110011010101100001111111100
10000000110100011010001101011000
00001100101110110110101010001010
11010100110000101001001011101000
DEC
150106195252
128209163088
012187106138
212194146232
Shift Rows
HEX
966ac3fc
d1a35880
6a8a0cbb
e8d4c292
BIN
10010110011010101100001111111100
11010001101000110101100010000000
01101010100010100000110010111011
11101000110101001100001010010010
DEC
150106195252
209163088128
106138012187
232212194146
Add Round Key
BIN
10010110011010101100001111111100
11010001101000110101100010000000
01101010100010100000110010111011
11101000110101001100001010010010
⊕
BIN
01101010110100100001100101100100
10101000110110000110001100101011
11101111000110000000011010010001
10000011000100000011011111010010
=
BIN
11111100101110001101101010011000
01111001011110110011101110101011
10000101100100100000101000101010
01101011110001001111010101000000

State Matrix

HEX
fcb8da98
797b3bab
85920a2a
6bc4f540
BIN
11111100101110001101101010011000
01111001011110110011101110101011
10000101100100100000101000101010
01101011110001001111010101000000
DEC
252184218152
121123059171
133146010042
107196245064
▼ Block 2 | Plaintext: b'ion Standard is '

State Matrix

HEX
69536420
6f746169
6e617273
206e6420
BIN
01101001010100110110010000100000
01101111011101000110000101101001
01101110011000010111001001110011
00100000011011100110010000100000
DEC
105083100032
111116097105
110097114115
032110100032
Add Round Key
BIN
01101001010100110110010000100000
01101111011101000110000101101001
01101110011000010111001001110011
00100000011011100110010000100000
⊕
BIN
01001101110110000011100011110111
00101110011110101100000001001111
10001001000110001101111101010101
01010011000001111000110110111011
=
BIN
00100100100010110101110011010111
01000001000011101010000100100110
11100111011110011010110100100110
01110011011010011110100110011011

State Matrix

HEX
248b5cd7
410ea126
e779ad26
7369e99b
BIN
00100100100010110101110011010111
01000001000011101010000100100110
11100111011110011010110100100110
01110011011010011110100110011011
DEC
036139092215
065014161038
231121173038
115105233155
▼ Round 1
Substitute Bytes
HEX
363d4a0e
83ab32f7
94b695f7
8ff91e14
BIN
00110110001111010100101000001110
10000011101010110011001011110111
10010100101101101001010111110111
10001111111110010001111000010100
DEC
054061074014
131171050247
148182149247
143249030020
Shift Rows
HEX
363d4a0e
ab32f783
95f794b6
148ff91e
BIN
00110110001111010100101000001110
10101011001100101111011110000011
10010101111101111001010010110110
00010100100011111111100100011110
DEC
054061074014
171050247131
149247148182
020143249030
Mix Columns
HEX
0b54fb2a
cbd4e1cc
90709ed8
4c87541b
BIN
00001011010101001111101100101010
11001011110101001110000111001100
10010000011100001001111011011000
01001100100001110101010000011011
DEC
011084251042
203212225204
144112158216
076135084027
Add Round Key
BIN
00001011010101001111101100101010
11001011110101001110000111001100
10010000011100001001111011011000
01001100100001110101010000011011
⊕
BIN
11001001000100010010100111011110
11010010101010000110100000100111
01100011011110111010010011110001
00111011001111001011000100001010
=
BIN
11000010010001011101001011110100
00011001011111001000100111101011
11110011000010110011101000101001
01110111101110111110010100010001

State Matrix

HEX
c245d2f4
197c89eb
f30b3a29
77bbe511
BIN
11000010010001011101001011110100
00011001011111001000100111101011
11110011000010110011101000101001
01110111101110111110010100010001
DEC
194069210244
025124137235
243011058041
119187229017
▼ Round 2
Substitute Bytes
HEX
256eb5bf
d410a7e9
0d2b80a5
f5ead982
BIN
00100101011011101011010110111111
11010100000100001010011111101001
00001101001010111000000010100101
11110101111010101101100110000010
DEC
037110181191
212016167233
013043128165
245234217130
Shift Rows
HEX
256eb5bf
10a7e9d4
80a50d2b
82f5ead9
BIN
00100101011011101011010110111111
00010000101001111110100111010100
10000000101001010000110100101011
10000010111101011110101011011001
DEC
037110181191
016167233212
128165013043
130245234217
Mix Columns
HEX
787eb6f0
1c3a81a8
b39c634d
e041ef8c
BIN
01111000011111101011011011110000
00011100001110101000000110101000
10110011100111000110001101001101
11100000010000011110111110001100
DEC
120126182240
028058129168
179156099077
224065239140
Add Round Key
BIN
01111000011111101011011011110000
00011100001110101000000110101000
10110011100111000110001101001101
11100000010000011110111110001100
⊕
BIN
00000100000101010011110011100010
01110011110110111011001110010100
00000100011111111101101100101010
00100110000110101010101110100001
=
BIN
01111100011010111000101000010010
01101111111000010011001000111100
10110111111000111011100001100111
11000110010110110100010000101101

State Matrix

HEX
7c6b8a12
6fe1323c
b7e3b867
c65b442d
BIN
01111100011010111000101000010010
01101111111000010011001000111100
10110111111000111011100001100111
11000110010110110100010000101101
DEC
124107138018
111225050060
183227184103
198091068045
▼ Round 3
Substitute Bytes
HEX
107f7ec9
a8f823eb
a9116c85
b4391bd8
BIN
00010000011111110111111011001001
10101000111110000010001111101011
10101001000100010110110010000101
10110100001110010001101111011000
DEC
016127126201
168248035235
169017108133
180057027216
Shift Rows
HEX
107f7ec9
f823eba8
6c85a911
d8b4391b
BIN
00010000011111110111111011001001
11111000001000111110101110101000
01101100100001011010100100010001
11011000101101000011100100011011
DEC
016127126201
248035235168
108133169017
216180057027
Mix Columns
HEX
87aa4a60
97196aaa
438a976e
0f54b2cf
BIN
10000111101010100100101001100000
10010111000110010110101010101010
01000011100010101001011101101110
00001111010101001011001011001111
DEC
135170074096
151025106170
067138151110
015084178207
Add Round Key
BIN
10000111101010100100101001100000
10010111000110010110101010101010
01000011100010101001011101101110
00001111010101001011001011001111
⊕
BIN
00100100001100010000110111101111
10010110010011011111111001101010
00110110010010011001001010111000
10111110101001000000111110101110
=
BIN
10100011100110110100011110001111
00000001010101001001010011000000
01110101110000110000010111010110
10110001111100001011110101100001

State Matrix

HEX
a39b478f
015494c0
75c305d6
b1f0bd61
BIN
10100011100110110100011110001111
00000001010101001001010011000000
01110101110000110000010111010110
10110001111100001011110101100001
DEC
163155071143
001084148192
117195005214
177240189097
▼ Round 4
Substitute Bytes
HEX
0a14a073
7c2022ba
9d2e6bf6
c88c7aef
BIN
00001010000101001010000001110011
01111100001000000010001010111010
10011101001011100110101111110110
11001000100011000111101011101111
DEC
010020160115
124032034186
157046107246
200140122239
Shift Rows
HEX
0a14a073
2022ba7c
6bf69d2e
efc88c7a
BIN
00001010000101001010000001110011
00100000001000101011101001111100
01101011111101101001110100101110
11101111110010001000110001111010
DEC
010020160115
032034186124
107246157046
239200140122
Mix Columns
HEX
f0709f36
1899ff83
d682b4dd
9063df33
BIN
11110000011100001001111100110110
00011000100110011111111110000011
11010110100000101011010011011101
10010000011000111101111100110011
DEC
240112159054
024153255131
214130180221
144099223051
Add Round Key
BIN
11110000011100001001111100110110
00011000100110011111111110000011
11010110100000101011010011011101
10010000011000111101111100110011
⊕
BIN
00100010000100110001111011110001
11111010101101110100100100100011
11010010100110110000100110110001
01100001110001011100101001100100
=
BIN
11010010011000111000000111000111
11100010001011101011011010100000
00000100000110011011110101101100
11110001101001100001010101010111

State Matrix

HEX
d26381c7
e22eb6a0
0419bd6c
f1a61557
BIN
11010010011000111000000111000111
11100010001011101011011010100000
00000100000110011011110101101100
11110001101001100001010101010111
DEC
210099129199
226046182160
004025189108
241166021087
▼ Round 5
Substitute Bytes
HEX
b5fb0cc6
98314ee0
f2d47a50
a124595b
BIN
10110101111110110000110011000110
10011000001100010100111011100000
11110010110101000111101001010000
10100001001001000101100101011011
DEC
181251012198
152049078224
242212122080
161036089091
Shift Rows
HEX
b5fb0cc6
314ee098
7a50f2d4
5ba12459
BIN
10110101111110110000110011000110
00110001010011101110000010011000
01111010010100001111001011010100
01011011101000010010010001011001
DEC
181251012198
049078224152
122080242212
091161036089
Mix Columns
HEX
03cef5a9
0236fed3
9ded7f06
39514eaf
BIN
00000011110011101111010110101001
00000010001101101111111011010011
10011101111011010111111100000110
00111001010100010100111010101111
DEC
003206245169
002054254211
157237127006
057081078175
Add Round Key
BIN
00000011110011101111010110101001
00000010001101101111111011010011
10011101111011010111111100000110
00111001010100010100111010101111
⊕
BIN
00001100000111110000000111110000
00110010100001011100110011101111
10010001000010100000001110110010
11000000000001011100111110101011
=
BIN
00001111110100011111010001011001
00110000101100110011001000111100
00001100111001110111110010110100
11111001010101001000000100000100

State Matrix

HEX
0fd1f459
30b3323c
0ce77cb4
f9548104
BIN
00001111110100011111010001011001
00110000101100110011001000111100
00001100111001110111110010110100
11111001010101001000000100000100
DEC
015209244089
048179050060
012231124180
249084129004
▼ Round 6
Substitute Bytes
HEX
763ebfcb
046d23eb
fe94108d
99200cf2
BIN
01110110001111101011111111001011
00000100011011010010001111101011
11111110100101000001000010001101
10011001001000000000110011110010
DEC
118062191203
004109035235
254148016141
153032012242
Shift Rows
HEX
763ebfcb
6d23eb04
108dfe94
f299200c
BIN
01110110001111101011111111001011
01101101001000111110101100000100
00010000100011011111111010010100
11110010100110010010000000001100
DEC
118062191203
109035235004
016141254148
242153032012
Mix Columns
HEX
b90d9d19
6e6d4b68
36acd3e8
18c58fce
BIN
10111001000011011001110100011001
01101110011011010100101101101000
00110110101011001101001111101000
00011000110001011000111111001110
DEC
185013157025
110109075104
054172211232
024197143206
Add Round Key
BIN
10111001000011011001110100011001
01101110011011010100101101101000
00110110101011001101001111101000
00011000110001011000111111001110
⊕
BIN
11000011110111001101110100101101
00000101100000000100110010100011
11110011111110011111101001001000
01001100010010011000011000101101
=
BIN
01111010110100010100000000110100
01101011111011010000011111001011
11000101010101010010100110100000
01010100100011000000100111100011

State Matrix

HEX
7ad14034
6bed07cb
c55529a0
548c09e3
BIN
01111010110100010100000000110100
01101011111011010000011111001011
11000101010101010010100110100000
01010100100011000000100111100011
DEC
122209064052
107237007203
197085041160
084140009227
▼ Round 7
Substitute Bytes
HEX
da3e0918
7f55c51f
a6fca5e0
20640111
BIN
11011010001111100000100100011000
01111111010101011100010100011111
10100110111111001010010111100000
00100000011001000000000100010001
DEC
218062009024
127085197031
166252165224
032100001017
Shift Rows
HEX
da3e0918
55c51f7f
a5e0a6fc
11206401
BIN
11011010001111100000100100011000
01010101110001010001111101111111
10100101111000001010011011111100
00010001001000000110010000000001
DEC
218062009024
085197031127
165224166252
017032100001
Mix Columns
HEX
e4e8f14c
95b4a2f8
ed40ed87
a7276aa9
BIN
11100100111010001111000101001100
10010101101101001010001011111000
11101101010000001110110110000111
10100111001001110110101010101001
DEC
228232241076
149180162248
237064237135
167039106169
Add Round Key
BIN
11100100111010001111000101001100
10010101101101001010001011111000
11101101010000001110110110000111
10100111001001110110101010101001
⊕
BIN
11101001001101011110100011000101
01010111110101111001101100111000
00101011110100100010100001100000
10010100110111010101101101110110
=
BIN
00001101110111010001100110001001
11000010011000110011100111000000
11000110100100101100010111100111
00110011111110100011000111011111

State Matrix

HEX
0ddd1989
c26339c0
c692c5e7
33fa31df
BIN
00001101110111010001100110001001
11000010011000110011100111000000
11000110100100101100010111100111
00110011111110100011000111011111
DEC
013221025137
194099057192
198146197231
051250049223
▼ Round 8
Substitute Bytes
HEX
d7c1d4a7
25fb12ba
b44fa694
c32dc79e
BIN
11010111110000011101010010100111
00100101111110110001001010111010
10110100010011111010011010010100
11000011001011011100011110011110
DEC
215193212167
037251018186
180079166148
195045199158
Shift Rows
HEX
d7c1d4a7
fb12ba25
a694b44f
9ec32dc7
BIN
11010111110000011101010010100111
11111011000100101011101000100101
10100110100101001011010001001111
10011110110000110010110111000111
DEC
215193212167
251018186037
166148180079
158195045199
Mix Columns
HEX
9bf8ffb2
558151fb
c2be6a4e
1843330d
BIN
10011011111110001111111110110010
01010101100000010101000111111011
11000010101111100110101001001110
00011000010000110011001100001101
DEC
155248255178
085129081251
194190106078
024067051013
Add Round Key
BIN
10011011111110001111111110110010
01010101100000010101000111111011
11000010101111100110101001001110
00011000010000110011001100001101
⊕
BIN
10101110100110110111001110110110
10000111010100001100101111110011
00010011110000011110100110001001
00110010111011111011010011000010
=
BIN
00110101011000111000110000000100
11010010110100011001101000001000
11010001011111111000001111000111
00101010101011001000011111001111

State Matrix

HEX
35638c04
d2d19a08
d17f83c7
2aac87cf
BIN
00110101011000111000110000000100
11010010110100011001101000001000
11010001011111111000001111000111
00101010101011001000011111001111
DEC
053099140004
210209154008
209127131199
042172135207
▼ Round 9
Substitute Bytes
HEX
96fb64f2
b53eb830
3ed2ecc6
e591178a
BIN
10010110111110110110010011110010
10110101001111101011100000110000
00111110110100101110110011000110
11100101100100010001011110001010
DEC
150251100242
181062184048
062210236198
229145023138
Shift Rows
HEX
96fb64f2
3eb830b5
ecc63ed2
8ae59117
BIN
10010110111110110110010011110010
00111110101110000011000010110101
11101100110001100011111011010010
10001010111001011001000100010111
DEC
150251100242
062184048181
236198062210
138229145023
Mix Columns
HEX
131d37fe
4f24d7f9
eee080c1
7cb99b44
BIN
00010011000111010011011111111110
01001111001001001101011111111001
11101110111000001000000011000001
01111100101110011001101101000100
DEC
019029055254
079036215249
238224128193
124185155068
Add Round Key
BIN
00010011000111010011011111111110
01001111001001001101011111111001
11101110111000001000000011000001
01111100101110011001101101000100
⊕
BIN
00100011101110001100101101111101
00100000011100001011101101001000
00110110111101110001111010010111
01111100100100110010011111100101
=
BIN
00110000101001011111110010000011
01101111010101000110110010110001
11011000000101111001111001010110
00000000001010101011110010100001

State Matrix

HEX
30a5fc83
6f546cb1
d8179e56
002abca1
BIN
00110000101001011111110010000011
01101111010101000110110010110001
11011000000101111001111001010110
00000000001010101011110010100001
DEC
048165252131
111084108177
216023158086
000042188161
▼ Round 10
Substitute Bytes
HEX
0406b0ec
a82050c8
61f00bb1
63e56532
BIN
00000100000001101011000011101100
10101000001000000101000011001000
01100001111100000000101110110001
01100011111001010110010100110010
DEC
004006176236
168032080200
097240011177
099229101050
Shift Rows
HEX
0406b0ec
2050c8a8
0bb161f0
3263e565
BIN
00000100000001101011000011101100
00100000010100001100100010101000
00001011101100010110000111110000
00110010011000111110010101100101
DEC
004006176236
032080200168
011177097240
050099229101
Add Round Key
BIN
00000100000001101011000011101100
00100000010100001100100010101000
00001011101100010110000111110000
00110010011000111110010101100101
⊕
BIN
01101010110100100001100101100100
10101000110110000110001100101011
11101111000110000000011010010001
10000011000100000011011111010010
=
BIN
01101110110101001010100110001000
10001000100010001010101110000011
11100100101010010110011101100001
10110001011100111101001010110111

State Matrix

HEX
6ed4a988
8888ab83
e4a96761
b173d2b7
BIN
01101110110101001010100110001000
10001000100010001010101110000011
11100100101010010110011101100001
10110001011100111101001010110111
DEC
110212169136
136136171131
228169103097
177115210183
▼ Block 3 | Plaintext: b'cool!\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b'

State Matrix

HEX
63210000
6f000000
6f000000
6c00000b
BIN
01100011001000010000000000000000
01101111000000000000000000000000
01101111000000000000000000000000
01101100000000000000000000001011
DEC
099033000000
111000000000
111000000000
108000000011
Add Round Key
BIN
01100011001000010000000000000000
01101111000000000000000000000000
01101111000000000000000000000000
01101100000000000000000000001011
⊕
BIN
01001101110110000011100011110111
00101110011110101100000001001111
10001001000110001101111101010101
01010011000001111000110110111011
=
BIN
00101110111110010011100011110111
01000001011110101100000001001111
11100110000110001101111101010101
00111111000001111000110110110000

State Matrix

HEX
2ef938f7
417ac04f
e618df55
3f078db0
BIN
00101110111110010011100011110111
01000001011110101100000001001111
11100110000110001101111101010101
00111111000001111000110110110000
DEC
046249056247
065122192079
230024223085
063007141176
▼ Round 1
Substitute Bytes
HEX
31990768
83daba84
8ead9efc
75c55de7
BIN
00110001100110010000011101101000
10000011110110101011101010000100
10001110101011011001111011111100
01110101110001010101110111100111
DEC
049153007104
131218186132
142173158252
117197093231
Shift Rows
HEX
31990768
daba8483
9efc8ead
e775c55d
BIN
00110001100110010000011101101000
11011010101110101000010010000011
10011110111111001000111010101101
11100111011101011100010101011101
DEC
049153007104
218186132131
158252142173
231117197093
Mix Columns
HEX
6e75d2be
c09c58c4
fe5fd04d
c21c922c
BIN
01101110011101011101001010111110
11000000100111000101100011000100
11111110010111111101000001001101
11000010000111001001001000101100
DEC
110117210190
192156088196
254095208077
194028146044
Add Round Key
BIN
01101110011101011101001010111110
11000000100111000101100011000100
11111110010111111101000001001101
11000010000111001001001000101100
⊕
BIN
11001001000100010010100111011110
11010010101010000110100000100111
01100011011110111010010011110001
00111011001111001011000100001010
=
BIN
10100111011001001111101101100000
00010010001101000011000011100011
10011101001001000111010010111100
11111001001000000010001100100110

State Matrix

HEX
a764fb60
123430e3
9d2474bc
f9202326
BIN
10100111011001001111101101100000
00010010001101000011000011100011
10011101001001000111010010111100
11111001001000000010001100100110
DEC
167100251096
018052048227
157036116188
249032035038
▼ Round 2
Substitute Bytes
HEX
5c430fd0
c9180411
5e369265
99b726f7
BIN
01011100010000110000111111010000
11001001000110000000010000010001
01011110001101101001001001100101
10011001101101110010011011110111
DEC
092067015208
201024004017
094054146101
153183038247
Shift Rows
HEX
5c430fd0
180411c9
92655e36
f799b726
BIN
01011100010000110000111111010000
00011000000001000001000111001001
10010010011001010101111000110110
11110111100110011011011100100110
DEC
092067015208
024004017201
146101094054
247153183038
Mix Columns
HEX
f576c4eb
367d7825
793d601f
9b8d2bd8
BIN
11110101011101101100010011101011
00110110011111010111100000100101
01111001001111010110000000011111
10011011100011010010101111011000
DEC
245118196235
054125120037
121061096031
155141043216
Add Round Key
BIN
11110101011101101100010011101011
00110110011111010111100000100101
01111001001111010110000000011111
10011011100011010010101111011000
⊕
BIN
00000100000101010011110011100010
01110011110110111011001110010100
00000100011111111101101100101010
00100110000110101010101110100001
=
BIN
11110001011000111111100000001001
01000101101001101100101110110001
01111101010000101011101100110101
10111101100101111000000001111001

State Matrix

HEX
f163f809
45a6cbb1
7d42bb35
bd978079
BIN
11110001011000111111100000001001
01000101101001101100101110110001
01111101010000101011101100110101
10111101100101111000000001111001
DEC
241099248009
069166203177
125066187053
189151128121
▼ Round 3
Substitute Bytes
HEX
a1fb4101
6e241fc8
ff2cea96
7a88cdb6
BIN
10100001111110110100000100000001
01101110001001000001111111001000
11111111001011001110101010010110
01111010100010001100110110110110
DEC
161251065001
110036031200
255044234150
122136205182
Shift Rows
HEX
a1fb4101
241fc86e
ea96ff2c
b67a88cd
BIN
10100001111110110100000100000001
00100100000111111100100001101110
11101010100101101111111100101100
10110110011110101000100011001101
DEC
161251065001
036031200110
234150255044
182122136205
Mix Columns
HEX
6920b651
7a1e5864
8b5def7b
416bffc0
BIN
01101001001000001011011001010001
01111010000111100101100001100100
10001011010111011110111101111011
01000001011010111111111111000000
DEC
105032182081
122030088100
139093239123
065107255192
Add Round Key
BIN
01101001001000001011011001010001
01111010000111100101100001100100
10001011010111011110111101111011
01000001011010111111111111000000
⊕
BIN
00100100001100010000110111101111
10010110010011011111111001101010
00110110010010011001001010111000
10111110101001000000111110101110
=
BIN
01001101000100011011101110111110
11101100010100111010011000001110
10111101000101000111110111000011
11111111110011111111000001101110

State Matrix

HEX
4d11bbbe
ec53a60e
bd147dc3
ffcff06e
BIN
01001101000100011011101110111110
11101100010100111010011000001110
10111101000101000111110111000011
11111111110011111111000001101110
DEC
077017187190
236083166014
189020125195
255207240110
▼ Round 4
Substitute Bytes
HEX
e382eaae
ceed24ab
7afaff2e
168a8c9f
BIN
11100011100000101110101010101110
11001110111011010010010010101011
01111010111110101111111100101110
00010110100010101000110010011111
DEC
227130234174
206237036171
122250255046
022138140159
Shift Rows
HEX
e382eaae
ed24abce
ff2e7afa
9f168a8c
BIN
11100011100000101110101010101110
11101101001001001010101111001110
11111111001011100111101011111010
10011111000101101000101010001100
DEC
227130234174
237036171206
255046122250
159022138140
Mix Columns
HEX
914bd978
a7aea3b0
51c03000
09bbfbde
BIN
10010001010010111101100101111000
10100111101011101010001110110000
01010001110000000011000000000000
00001001101110111111101111011110
DEC
145075217120
167174163176
081192048000
009187251222
Add Round Key
BIN
10010001010010111101100101111000
10100111101011101010001110110000
01010001110000000011000000000000
00001001101110111111101111011110
⊕
BIN
00100010000100110001111011110001
11111010101101110100100100100011
11010010100110110000100110110001
01100001110001011100101001100100
=
BIN
10110011010110001100011110001001
01011101000110011110101010010011
10000011010110110011100110110001
01101000011111100011000110111010

State Matrix

HEX
b358c789
5d19ea93
835b39b1
687e31ba
BIN
10110011010110001100011110001001
01011101000110011110101010010011
10000011010110110011100110110001
01101000011111100011000110111010
DEC
179088199137
093025234147
131091057177
104126049186
▼ Round 5
Substitute Bytes
HEX
6d6ac6a7
4cd487dc
ec3912c8
45f3c7f4
BIN
01101101011010101100011010100111
01001100110101001000011111011100
11101100001110010001001011001000
01000101111100111100011111110100
DEC
109106198167
076212135220
236057018200
069243199244
Shift Rows
HEX
6d6ac6a7
d487dc4c
12c8ec39
f445f3c7
BIN
01101101011010101100011010100111
11010100100001111101110001001100
00010010110010001110110000111001
11110100010001011111001111000111
DEC
109106198167
212135220076
018200236057
244069243199
Mix Columns
HEX
5bcbf77f
1c79b9b3
9aa9d7cb
827b9c12
BIN
01011011110010111111011101111111
00011100011110011011100110110011
10011010101010011101011111001011
10000010011110111001110000010010
DEC
091203247127
028121185179
154169215203
130123156018
Add Round Key
BIN
01011011110010111111011101111111
00011100011110011011100110110011
10011010101010011101011111001011
10000010011110111001110000010010
⊕
BIN
00001100000111110000000111110000
00110010100001011100110011101111
10010001000010100000001110110010
11000000000001011100111110101011
=
BIN
01010111110101001111011010001111
00101110111111000111010101011100
00001011101000111101010001111001
01000010011111100101001110111001

State Matrix

HEX
57d4f68f
2efc755c
0ba3d479
427e53b9
BIN
01010111110101001111011010001111
00101110111111000111010101011100
00001011101000111101010001111001
01000010011111100101001110111001
DEC
087212246143
046252117092
011163212121
066126083185
▼ Round 6
Substitute Bytes
HEX
5b484273
31b09d4a
2b0a48b6
2cf3ed56
BIN
01011011010010000100001001110011
00110001101100001001110101001010
00101011000010100100100010110110
00101100111100111110110101010110
DEC
091072066115
049176157074
043010072182
044243237086
Shift Rows
HEX
5b484273
b09d4a31
48b62b0a
562cf3ed
BIN
01011011010010000100001001110011
10110000100111010100101000110001
01001000101101100010101100001010
01010110001011001111001111101101
DEC
091072066115
176157074049
072182043010
086044243237
Mix Columns
HEX
63b68252
ae8458e2
81d6507a
b9ab5a6f
BIN
01100011101101101000001001010010
10101110100001000101100011100010
10000001110101100101000001111010
10111001101010110101101001101111
DEC
099182130082
174132088226
129214080122
185171090111
Add Round Key
BIN
01100011101101101000001001010010
10101110100001000101100011100010
10000001110101100101000001111010
10111001101010110101101001101111
⊕
BIN
11000011110111001101110100101101
00000101100000000100110010100011
11110011111110011111101001001000
01001100010010011000011000101101
=
BIN
10100000011010100101111101111111
10101011000001000001010001000001
01110010001011111010101000110010
11110101111000101101110001000010

State Matrix

HEX
a06a5f7f
ab041441
722faa32
f5e2dc42
BIN
10100000011010100101111101111111
10101011000001000001010001000001
01110010001011111010101000110010
11110101111000101101110001000010
DEC
160106095127
171004020065
114047170050
245226220066
▼ Round 7
Substitute Bytes
HEX
e002cfd2
62f2fa83
4015ac23
e698862c
BIN
11100000000000101100111111010010
01100010111100101111101010000011
01000000000101011010110000100011
11100110100110001000011000101100
DEC
224002207210
098242250131
064021172035
230152134044
Shift Rows
HEX
e002cfd2
f2fa8362
ac234015
2ce69886
BIN
11100000000000101100111111010010
11110010111110101000001101100010
10101100001000110100000000010101
00101100111001101001100010000110
DEC
224002207210
242250131098
172035064021
044230152134
Mix Columns
HEX
56d4c38a
dc6e8aaf
258f7f0b
3d08a20d
BIN
01010110110101001100001110001010
11011100011011101000101010101111
00100101100011110111111100001011
00111101000010001010001000001101
DEC
086212195138
220110138175
037143127011
061008162013
Add Round Key
BIN
01010110110101001100001110001010
11011100011011101000101010101111
00100101100011110111111100001011
00111101000010001010001000001101
⊕
BIN
11101001001101011110100011000101
01010111110101111001101100111000
00101011110100100010100001100000
10010100110111010101101101110110
=
BIN
10111111111000010010101101001111
10001011101110010001000110010111
00001110010111010101011101101011
10101001110101011111100101111011

State Matrix

HEX
bfe12b4f
8bb91197
0e5d576b
a9d5f97b
BIN
10111111111000010010101101001111
10001011101110010001000110010111
00001110010111010101011101101011
10101001110101011111100101111011
DEC
191225043079
139185017151
014093087107
169213249123
▼ Round 8
Substitute Bytes
HEX
08f8f184
3d568288
ab4c5b7f
d3039921
BIN
00001000111110001111000110000100
00111101010101101000001010001000
10101011010011000101101101111111
11010011000000111001100100100001
DEC
008248241132
061086130136
171076091127
211003153033
Shift Rows
HEX
08f8f184
5682883d
5b7fab4c
21d30399
BIN
00001000111110001111000110000100
01010110100000101000100000111101
01011011011111111010101101001100
00100001110100110000001110011001
DEC
008248241132
086130136061
091127171076
033211003153
Mix Columns
HEX
90dad281
68b51fb3
8bea3191
57532dcf
BIN
10010000110110101101001010000001
01101000101101010001111110110011
10001011111010100011000110010001
01010111010100110010110111001111
DEC
144218210129
104181031179
139234049145
087083045207
Add Round Key
BIN
10010000110110101101001010000001
01101000101101010001111110110011
10001011111010100011000110010001
01010111010100110010110111001111
⊕
BIN
10101110100110110111001110110110
10000111010100001100101111110011
00010011110000011110100110001001
00110010111011111011010011000010
=
BIN
00111110010000011010000100110111
11101111111001011101010001000000
10011000001010111101100000011000
01100101101111001001100100001101

State Matrix

HEX
3e41a137
efe5d440
982bd818
65bc990d
BIN
00111110010000011010000100110111
11101111111001011101010001000000
10011000001010111101100000011000
01100101101111001001100100001101
DEC
062065161055
239229212064
152043216024
101188153013
▼ Round 9
Substitute Bytes
HEX
b283329a
dfd94809
46f161ad
4d65eed7
BIN
10110010100000110011001010011010
11011111110110010100100000001001
01000110111100010110000110101101
01001101011001011110111011010111
DEC
178131050154
223217072009
070241097173
077101238215
Shift Rows
HEX
b283329a
d94809df
61ad46f1
d74d65ee
BIN
10110010100000110011001010011010
11011001010010000000100111011111
01100001101011010100011011110001
11010111010011010110010111101110
DEC
178131050154
217072009223
097173070241
215077101238
Mix Columns
HEX
b9255c4a
6fb28fd9
cb5d1895
c0e1d35c
BIN
10111001001001010101110001001010
01101111101100101000111111011001
11001011010111010001100010010101
11000000111000011101001101011100
DEC
185037092074
111178143217
203093024149
192225211092
Add Round Key
BIN
10111001001001010101110001001010
01101111101100101000111111011001
11001011010111010001100010010101
11000000111000011101001101011100
⊕
BIN
00100011101110001100101101111101
00100000011100001011101101001000
00110110111101110001111010010111
01111100100100110010011111100101
=
BIN
10011010100111011001011100110111
01001111110000100011010010010001
11111101101010100000011000000010
10111100011100101111010010111001

State Matrix

HEX
9a9d9737
4fc23491
fdaa0602
bc72f4b9
BIN
10011010100111011001011100110111
01001111110000100011010010010001
11111101101010100000011000000010
10111100011100101111010010111001
DEC
154157151055
079194052145
253170006002
188114244185
▼ Round 10
Substitute Bytes
HEX
b85e889a
84251881
54ac6f77
6540bf56
BIN
10111000010111101000100010011010
10000100001001010001100010000001
01010100101011000110111101110111
01100101010000001011111101010110
DEC
184094136154
132037024129
084172111119
101064191086
Shift Rows
HEX
b85e889a
25188184
6f7754ac
566540bf
BIN
10111000010111101000100010011010
00100101000110001000000110000100
01101111011101110101010010101100
01010110011001010100000010111111
DEC
184094136154
037024129132
111119084172
086101064191
Add Round Key
BIN
10111000010111101000100010011010
00100101000110001000000110000100
01101111011101110101010010101100
01010110011001010100000010111111
⊕
BIN
01101010110100100001100101100100
10101000110110000110001100101011
11101111000110000000011010010001
10000011000100000011011111010010
=
BIN
11010010100011001001000111111110
10001101110000001110001010101111
10000000011011110101001000111101
11010101011101010111011101101101

State Matrix

HEX
d28c91fe
8dc0e2af
806f523d
d575776d
BIN
11010010100011001001000111111110
10001101110000001110001010101111
10000000011011110101001000111101
11010101011101010111011101101101
DEC
210140145254
141192226175
128111082061
213117119109

Cipher Text: b'\xfcy\x85k\xb8{\x92\xc4\xda;\n\xf5\x98\xab*@n\x88\xe4\xb1\xd4\x88\xa9s\xa9\xabg\xd2\x88\x83a\xb7\xd2\x8d\x80\xd5\x8c\xc0ou\x91\xe2Rw\xfe\xaf=m'


AES Decryption:

Given Cipher Text: b'\xfcy\x85k\xb8{\x92\xc4\xda;\n\xf5\x98\xab*@n\x88\xe4\xb1\xd4\x88\xa9s\xa9\xabg\xd2\x88\x83a\xb7\xd2\x8d\x80\xd5\x8c\xc0ou\x91\xe2Rw\xfe\xaf=m'

▼ Key Information
Given Key
ASCII M.‰SØz8Àߍ÷OU»
HEX 4d2e8953d87a180738c0df8df74f55bb
BIN 01001101001011101000100101010011110110000111101000011000000001110011100011000000110111111000110111110111010011110101010110111011
DEC 077046137083216122024007056192223141247079085187
Key Expansion
w0w1w2w3w4w5w6w7w8w9w10w11w12w13w14w15w16w17w18w19w20w21w22w23w24w25w26w27w28w29w30w31w32w33w34w35w36w37w38w39w40w41w42w43
B04dd838f7c91129de04153ce224310def22131ef10c1f01f0c3dcdd2de935e8c5ae9b73b623b8cb7d6ad21964
B12e7ac04fd2a8682773dbb394964dfe6afab749233285ccef05804ca357d79b388750cbf32070bb48a8d8632b
B28918df55637ba4f1047fdb2a364992b8d29b09b1910a03b2f3f9fa482bd2286013c1e98936f71e97ef180691
B353078dbb3b3cb10a261aaba1bea40fae61c5ca64c005cfab4c49862d94dd5b7632efb4c27c9327e5831037d2

Using Electronic Code Book (ECB) mode,

▼ AES Decryption
▼ Block 1 | Ciphertext: b'\xfcy\x85k\xb8{\x92\xc4\xda;\n\xf5\x98\xab*@'

State Matrix

HEX
fcb8da98
797b3bab
85920a2a
6bc4f540
BIN
11111100101110001101101010011000
01111001011110110011101110101011
10000101100100100000101000101010
01101011110001001111010101000000
DEC
252184218152
121123059171
133146010042
107196245064
Add Round Key
BIN
11111100101110001101101010011000
01111001011110110011101110101011
10000101100100100000101000101010
01101011110001001111010101000000
⊕
BIN
01101010110100100001100101100100
10101000110110000110001100101011
11101111000110000000011010010001
10000011000100000011011111010010
=
BIN
10010110011010101100001111111100
11010001101000110101100010000000
01101010100010100000110010111011
11101000110101001100001010010010

State Matrix

HEX
966ac3fc
d1a35880
6a8a0cbb
e8d4c292
BIN
10010110011010101100001111111100
11010001101000110101100010000000
01101010100010100000110010111011
11101000110101001100001010010010
DEC
150106195252
209163088128
106138012187
232212194146
▼ Round 1
Shift Rows
HEX
966ac3fc
80d1a358
0cbb6a8a
d4c292e8
BIN
10010110011010101100001111111100
10000000110100011010001101011000
00001100101110110110101010001010
11010100110000101001001011101000
DEC
150106195252
128209163088
012187106138
212194146232
Substitute Bytes
HEX
35583355
3a51715e
81fe58cf
19a874c8
BIN
00110101010110000011001101010101
00111010010100010111000101011110
10000001111111100101100011001111
00011001101010000111010011001000
DEC
053088051085
058081113094
129254088207
025168116200
Add Round Key
BIN
00110101010110000011001101010101
00111010010100010111000101011110
10000001111111100101100011001111
00011001101010000111010011001000
⊕
BIN
00100011101110001100101101111101
00100000011100001011101101001000
00110110111101110001111010010111
01111100100100110010011111100101
=
BIN
00010110111000001111100000101000
00011010001000011100101000010110
10110111000010010100011001011000
01100101001110110101001100101101

State Matrix

HEX
16e0f828
1a21ca16
b7094658
653b532d
BIN
00010110111000001111100000101000
00011010001000011100101000010110
10110111000010010100011001011000
01100101001110110101001100101101
DEC
022224248040
026033202022
183009070088
101059083045
Mix Columns
HEX
c8da56aa
c8339f43
cecea64c
10d448ee
BIN
11001000110110100101011010101010
11001000001100111001111101000011
11001110110011101010011001001100
00010000110101000100100011101110
DEC
200218086170
200051159067
206206166076
016212072238
▼ Round 2
Shift Rows
HEX
c8da56aa
43c8339f
a64ccece
d448ee10
BIN
11001000110110100101011010101010
01000011110010000011001110011111
10100110010011001100111011001110
11010100010010001110111000010000
DEC
200218086170
067200051159
166076206206
212072238016
Substitute Bytes
HEX
b17ab962
64b1666e
c55decec
19d4997c
BIN
10110001011110101011100101100010
01100100101100010110011001101110
11000101010111011110110011101100
00011001110101001001100101111100
DEC
177122185098
100177102110
197093236236
025212153124
Add Round Key
BIN
10110001011110101011100101100010
01100100101100010110011001101110
11000101010111011110110011101100
00011001110101001001100101111100
⊕
BIN
10101110100110110111001110110110
10000111010100001100101111110011
00010011110000011110100110001001
00110010111011111011010011000010
=
BIN
00011111111000011100101011010100
11100011111000011010110110011101
11010110100111000000010101100101
00101011001110110010110110111110

State Matrix

HEX
1fe1cad4
e3e1ad9d
d69c0565
2b3b2dbe
BIN
00011111111000011100101011010100
11100011111000011010110110011101
11010110100111000000010101100101
00101011001110110010110110111110
DEC
031225202212
227225173157
214156005101
043059045190
Mix Columns
HEX
fce614da
8db6d194
37ce4554
4739cf88
BIN
11111100111001100001010011011010
10001101101101101101000110010100
00110111110011100100010101010100
01000111001110011100111110001000
DEC
252230020218
141182209148
055206069084
071057207136
▼ Round 3
Shift Rows
HEX
fce614da
948db6d1
455437ce
39cf8847
BIN
11111100111001100001010011011010
10010100100011011011011011010001
01000101010101000011011111001110
00111001110011111000100001000111
DEC
252230020218
148141182209
069084055206
057207136071
Substitute Bytes
HEX
55f59b7a
e7b47951
68fdb2ec
5b5f9716
BIN
01010101111101011001101101111010
11100111101101000111100101010001
01101000111111011011001011101100
01011011010111111001011100010110
DEC
085245155122
231180121081
104253178236
091095151022
Add Round Key
BIN
01010101111101011001101101111010
11100111101101000111100101010001
01101000111111011011001011101100
01011011010111111001011100010110
⊕
BIN
11101001001101011110100011000101
01010111110101111001101100111000
00101011110100100010100001100000
10010100110111010101101101110110
=
BIN
10111100110000000111001110111111
10110000011000111110001001101001
01000011001011111001101010001100
11001111100000101100110001100000

State Matrix

HEX
bcc073bf
b063e269
432f9a8c
cf82cc60
BIN
10111100110000000111001110111111
10110000011000111110001001101001
01000011001011111001101010001100
11001111100000101100110001100000
DEC
188192115191
176099226105
067047154140
207130204096
Mix Columns
HEX
99726635
462c0f6d
7d811a72
22d1b410
BIN
10011001011100100110011000110101
01000110001011000000111101101101
01111101100000010001101001110010
00100010110100011011010000010000
DEC
153114102053
070044015109
125129026114
034209180016
▼ Round 4
Shift Rows
HEX
99726635
6d462c0f
1a727d81
d1b41022
BIN
10011001011100100110011000110101
01101101010001100010110000001111
00011010011100100111110110000001
11010001101101000001000000100010
DEC
153114102053
109070044015
026114125129
209180016034
Substitute Bytes
HEX
f91ed3d9
b39842fb
431e1391
51c67c94
BIN
11111001000111101101001111011001
10110011100110000100001011111011
01000011000111100001001110010001
01010001110001100111110010010100
DEC
249030211217
179152066251
067030019145
081198124148
Add Round Key
BIN
11111001000111101101001111011001
10110011100110000100001011111011
01000011000111100001001110010001
01010001110001100111110010010100
⊕
BIN
11000011110111001101110100101101
00000101100000000100110010100011
11110011111110011111101001001000
01001100010010011000011000101101
=
BIN
00111010110000100000111011110100
10110110000110000000111001011000
10110000111001111110100111011001
00011101100011111111101010111001

State Matrix

HEX
3ac20ef4
b6180e58
b0e7e9d9
1d8ffab9
BIN
00111010110000100000111011110100
10110110000110000000111001011000
10110000111001111110100111011001
00011101100011111111101010111001
DEC
058194014244
182024014088
176231233217
029143250185
Mix Columns
HEX
15ac34f5
12c2ad1e
ddf6f55b
fb2a7f7c
BIN
00010101101011000011010011110101
00010010110000101010110100011110
11011101111101101111010101011011
11111011001010100111111101111100
DEC
021172052245
018194173030
221246245091
251042127124
▼ Round 5
Shift Rows
HEX
15ac34f5
1e12c2ad
f55bddf6
2a7f7cfb
BIN
00010101101011000011010011110101
00011110000100101100001010101101
11110101010110111101110111110110
00101010011111110111110011111011
DEC
021172052245
030018194173
245091221246
042127124251
Substitute Bytes
HEX
2faa2877
e939a818
7757c9d6
956b0163
BIN
00101111101010100010100001110111
11101001001110011010100000011000
01110111010101111100100111010110
10010101011010110000000101100011
DEC
047170040119
233057168024
119087201214
149107001099
Add Round Key
BIN
00101111101010100010100001110111
11101001001110011010100000011000
01110111010101111100100111010110
10010101011010110000000101100011
⊕
BIN
00001100000111110000000111110000
00110010100001011100110011101111
10010001000010100000001110110010
11000000000001011100111110101011
=
BIN
00100011101101010010100110000111
11011011101111000110010011110111
11100110010111011100101001100100
01010101011011101100111011001000

State Matrix

HEX
23b52987
dbbc64f7
e65dca64
556ecec8
BIN
00100011101101010010100110000111
11011011101111000110010011110111
11100110010111011100101001100100
01010101011011101100111011001000
DEC
035181041135
219188100247
230093202100
085110206200
Mix Columns
HEX
d4db25a0
8af18a50
874754e0
9257b2cc
BIN
11010100110110110010010110100000
10001010111100011000101001010000
10000111010001110101010011100000
10010010010101111011001011001100
DEC
212219037160
138241138080
135071084224
146087178204
▼ Round 6
Shift Rows
HEX
d4db25a0
508af18a
54e08747
57b2cc92
BIN
11010100110110110010010110100000
01010000100010101111000110001010
01010100111000001000011101000111
01010111101100101100110010010010
DEC
212219037160
080138241138
084224135071
087178204146
Substitute Bytes
HEX
199fc247
6ccf2bcf
fda0ea16
da3e2774
BIN
00011001100111111100001001000111
01101100110011110010101111001111
11111101101000001110101000010110
11011010001111100010011101110100
DEC
025159194071
108207043207
253160234022
218062039116
Add Round Key
BIN
00011001100111111100001001000111
01101100110011110010101111001111
11111101101000001110101000010110
11011010001111100010011101110100
⊕
BIN
00100010000100110001111011110001
11111010101101110100100100100011
11010010100110110000100110110001
01100001110001011100101001100100
=
BIN
00111011100011001101110010110110
10010110011110000110001011101100
00101111001110111110001110100111
10111011111110111110110100010000

State Matrix

HEX
3b8cdcb6
967862ec
2f3be3a7
bbfbed10
BIN
00111011100011001101110010110110
10010110011110000110001011101100
00101111001110111110001110100111
10111011111110111110110100010000
DEC
059140220182
150120098236
047059227167
187251237016
Mix Columns
HEX
c01a0082
a14b3663
a6c54452
fea0c25e
BIN
11000000000110100000000010000010
10100001010010110011011001100011
10100110110001010100010001010010
11111110101000001100001001011110
DEC
192026000130
161075054099
166197068082
254160194094
▼ Round 7
Shift Rows
HEX
c01a0082
63a14b36
4452a6c5
a0c25efe
BIN
11000000000110100000000010000010
01100011101000010100101100110110
01000100010100101010011011000101
10100000110000100101111011111110
DEC
192026000130
099161075054
068082166197
160194094254
Substitute Bytes
HEX
1f435211
00f1cc24
8648c507
47a89d0c
BIN
00011111010000110101001000010001
00000000111100011100110000100100
10000110010010001100010100000111
01000111101010001001110100001100
DEC
031067082017
000241204036
134072197007
071168157012
Add Round Key
BIN
00011111010000110101001000010001
00000000111100011100110000100100
10000110010010001100010100000111
01000111101010001001110100001100
⊕
BIN
00100100001100010000110111101111
10010110010011011111111001101010
00110110010010011001001010111000
10111110101001000000111110101110
=
BIN
00111011011100100101111111111110
10010110101111000011001001001110
10110000000000010101011110111111
11111001000011001001001010100010

State Matrix

HEX
3b725ffe
96bc324e
b00157bf
f90c92a2
BIN
00111011011100100101111111111110
10010110101111000011001001001110
10110000000000010101011110111111
11111001000011001001001010100010
DEC
059114095254
150188050078
176001087191
249012146162
Mix Columns
HEX
e5a33a28
f8aad198
bd4d7928
44873a35
BIN
11100101101000110011101000101000
11111000101010101101000110011000
10111101010011010111100100101000
01000100100001110011101000110101
DEC
229163058040
248170209152
189077121040
068135058053
▼ Round 8
Shift Rows
HEX
e5a33a28
98f8aad1
7928bd4d
873a3544
BIN
11100101101000110011101000101000
10011000111110001010101011010001
01111001001010001011110101001101
10000111001110100011010101000100
DEC
229163058040
152248170209
121040189077
135058053068
Substitute Bytes
HEX
2a71a2ee
e2e16251
afeecd65
eaa2d986
BIN
00101010011100011010001011101110
11100010111000010110001001010001
10101111111011101100110101100101
11101010101000101101100110000110
DEC
042113162238
226225098081
175238205101
234162217134
Add Round Key
BIN
00101010011100011010001011101110
11100010111000010110001001010001
10101111111011101100110101100101
11101010101000101101100110000110
⊕
BIN
00000100000101010011110011100010
01110011110110111011001110010100
00000100011111111101101100101010
00100110000110101010101110100001
=
BIN
00101110011001001001111000001100
10010001001110101101000111000101
10101011100100010001011001001111
11001100101110000111001000100111

State Matrix

HEX
2e649e0c
913ad1c5
ab91164f
ccb87227
BIN
00101110011001001001111000001100
10010001001110101101000111000101
10101011100100010001011001001111
11001100101110000111001000100111
DEC
046100158012
145058209197
171145022079
204184114039
Mix Columns
HEX
2bc37e4c
c8ab96b1
05d8a056
3ec7630a
BIN
00101011110000110111111001001100
11001000101010111001011010110001
00000101110110001010000001010110
00111110110001110110001100001010
DEC
043195126076
200171150177
005216160086
062199099010
▼ Round 9
Shift Rows
HEX
2bc37e4c
b1c8ab96
a05605d8
c7630a3e
BIN
00101011110000110111111001001100
10110001110010001010101110010110
10100000010101100000010111011000
11000111011000110000101000111110
DEC
043195126076
177200171150
160086005216
199099010062
Substitute Bytes
HEX
0b338a5d
56b10e35
47b9362d
3100a3d1
BIN
00001011001100111000101001011101
01010110101100010000111000110101
01000111101110010011011000101101
00110001000000001010001111010001
DEC
011051138093
086177014053
071185054045
049000163209
Add Round Key
BIN
00001011001100111000101001011101
01010110101100010000111000110101
01000111101110010011011000101101
00110001000000001010001111010001
⊕
BIN
11001001000100010010100111011110
11010010101010000110100000100111
01100011011110111010010011110001
00111011001111001011000100001010
=
BIN
11000010001000101010001110000011
10000100000110010110011000010010
00100100110000101001001011011100
00001010001111000001001011011011

State Matrix

HEX
c222a383
84196612
24c292dc
0a3c12db
BIN
11000010001000101010001110000011
10000100000110010110011000010010
00100100110000101001001011011100
00001010001111000001001011011011
DEC
194034163131
132025102018
036194146220
010060018219
Mix Columns
HEX
fe4ead97
d49705d6
c83f16ff
8a23fb28
BIN
11111110010011101010110110010111
11010100100101110000010111010110
11001000001111110001011011111111
10001010001000111111101100101000
DEC
254078173151
212151005214
200063022255
138035251040
▼ Round 10
Shift Rows
HEX
fe4ead97
d6d49705
16ffc83f
23fb288a
BIN
11111110010011101010110110010111
11010110110101001001011100000101
00010110111111111100100000111111
00100011111110110010100010001010
DEC
254078173151
214212151005
022255200063
035251040138
Substitute Bytes
HEX
0cb61885
4a198536
ff7db125
3263eecf
BIN
00001100101101100001100010000101
01001010000110011000010100110110
11111111011111011011000100100101
00110010011000111110111011001111
DEC
012182024133
074025133054
255125177037
050099238207
Add Round Key
BIN
00001100101101100001100010000101
01001010000110011000010100110110
11111111011111011011000100100101
00110010011000111110111011001111
⊕
BIN
01001101110110000011100011110111
00101110011110101100000001001111
10001001000110001101111101010101
01010011000001111000110110111011
=
BIN
01000001011011100010000001110010
01100100011000110100010101111001
01110110011001010110111001110000
01100001011001000110001101110100

State Matrix

HEX
416e2072
64634579
76656e70
61646374
BIN
01000001011011100010000001110010
01100100011000110100010101111001
01110110011001010110111001110000
01100001011001000110001101110100
DEC
065110032114
100099069121
118101110112
097100099116
▼ Block 2 | Ciphertext: b'n\x88\xe4\xb1\xd4\x88\xa9s\xa9\xabg\xd2\x88\x83a\xb7'

State Matrix

HEX
6ed4a988
8888ab83
e4a96761
b173d2b7
BIN
01101110110101001010100110001000
10001000100010001010101110000011
11100100101010010110011101100001
10110001011100111101001010110111
DEC
110212169136
136136171131
228169103097
177115210183
Add Round Key
BIN
01101110110101001010100110001000
10001000100010001010101110000011
11100100101010010110011101100001
10110001011100111101001010110111
⊕
BIN
01101010110100100001100101100100
10101000110110000110001100101011
11101111000110000000011010010001
10000011000100000011011111010010
=
BIN
00000100000001101011000011101100
00100000010100001100100010101000
00001011101100010110000111110000
00110010011000111110010101100101

State Matrix

HEX
0406b0ec
2050c8a8
0bb161f0
3263e565
BIN
00000100000001101011000011101100
00100000010100001100100010101000
00001011101100010110000111110000
00110010011000111110010101100101
DEC
004006176236
032080200168
011177097240
050099229101
▼ Round 1
Shift Rows
HEX
0406b0ec
a82050c8
61f00bb1
63e56532
BIN
00000100000001101011000011101100
10101000001000000101000011001000
01100001111100000000101110110001
01100011111001010110010100110010
DEC
004006176236
168032080200
097240011177
099229101050
Substitute Bytes
HEX
30a5fc83
6f546cb1
d8179e56
002abca1
BIN
00110000101001011111110010000011
01101111010101000110110010110001
11011000000101111001111001010110
00000000001010101011110010100001
DEC
048165252131
111084108177
216023158086
000042188161
Add Round Key
BIN
00110000101001011111110010000011
01101111010101000110110010110001
11011000000101111001111001010110
00000000001010101011110010100001
⊕
BIN
00100011101110001100101101111101
00100000011100001011101101001000
00110110111101110001111010010111
01111100100100110010011111100101
=
BIN
00010011000111010011011111111110
01001111001001001101011111111001
11101110111000001000000011000001
01111100101110011001101101000100

State Matrix

HEX
131d37fe
4f24d7f9
eee080c1
7cb99b44
BIN
00010011000111010011011111111110
01001111001001001101011111111001
11101110111000001000000011000001
01111100101110011001101101000100
DEC
019029055254
079036215249
238224128193
124185155068
Mix Columns
HEX
96fb64f2
3eb830b5
ecc63ed2
8ae59117
BIN
10010110111110110110010011110010
00111110101110000011000010110101
11101100110001100011111011010010
10001010111001011001000100010111
DEC
150251100242
062184048181
236198062210
138229145023
▼ Round 2
Shift Rows
HEX
96fb64f2
b53eb830
3ed2ecc6
e591178a
BIN
10010110111110110110010011110010
10110101001111101011100000110000
00111110110100101110110011000110
11100101100100010001011110001010
DEC
150251100242
181062184048
062210236198
229145023138
Substitute Bytes
HEX
35638c04
d2d19a08
d17f83c7
2aac87cf
BIN
00110101011000111000110000000100
11010010110100011001101000001000
11010001011111111000001111000111
00101010101011001000011111001111
DEC
053099140004
210209154008
209127131199
042172135207
Add Round Key
BIN
00110101011000111000110000000100
11010010110100011001101000001000
11010001011111111000001111000111
00101010101011001000011111001111
⊕
BIN
10101110100110110111001110110110
10000111010100001100101111110011
00010011110000011110100110001001
00110010111011111011010011000010
=
BIN
10011011111110001111111110110010
01010101100000010101000111111011
11000010101111100110101001001110
00011000010000110011001100001101

State Matrix

HEX
9bf8ffb2
558151fb
c2be6a4e
1843330d
BIN
10011011111110001111111110110010
01010101100000010101000111111011
11000010101111100110101001001110
00011000010000110011001100001101
DEC
155248255178
085129081251
194190106078
024067051013
Mix Columns
HEX
d7c1d4a7
fb12ba25
a694b44f
9ec32dc7
BIN
11010111110000011101010010100111
11111011000100101011101000100101
10100110100101001011010001001111
10011110110000110010110111000111
DEC
215193212167
251018186037
166148180079
158195045199
▼ Round 3
Shift Rows
HEX
d7c1d4a7
25fb12ba
b44fa694
c32dc79e
BIN
11010111110000011101010010100111
00100101111110110001001010111010
10110100010011111010011010010100
11000011001011011100011110011110
DEC
215193212167
037251018186
180079166148
195045199158
Substitute Bytes
HEX
0ddd1989
c26339c0
c692c5e7
33fa31df
BIN
00001101110111010001100110001001
11000010011000110011100111000000
11000110100100101100010111100111
00110011111110100011000111011111
DEC
013221025137
194099057192
198146197231
051250049223
Add Round Key
BIN
00001101110111010001100110001001
11000010011000110011100111000000
11000110100100101100010111100111
00110011111110100011000111011111
⊕
BIN
11101001001101011110100011000101
01010111110101111001101100111000
00101011110100100010100001100000
10010100110111010101101101110110
=
BIN
11100100111010001111000101001100
10010101101101001010001011111000
11101101010000001110110110000111
10100111001001110110101010101001

State Matrix

HEX
e4e8f14c
95b4a2f8
ed40ed87
a7276aa9
BIN
11100100111010001111000101001100
10010101101101001010001011111000
11101101010000001110110110000111
10100111001001110110101010101001
DEC
228232241076
149180162248
237064237135
167039106169
Mix Columns
HEX
da3e0918
55c51f7f
a5e0a6fc
11206401
BIN
11011010001111100000100100011000
01010101110001010001111101111111
10100101111000001010011011111100
00010001001000000110010000000001
DEC
218062009024
085197031127
165224166252
017032100001
▼ Round 4
Shift Rows
HEX
da3e0918
7f55c51f
a6fca5e0
20640111
BIN
11011010001111100000100100011000
01111111010101011100010100011111
10100110111111001010010111100000
00100000011001000000000100010001
DEC
218062009024
127085197031
166252165224
032100001017
Substitute Bytes
HEX
7ad14034
6bed07cb
c55529a0
548c09e3
BIN
01111010110100010100000000110100
01101011111011010000011111001011
11000101010101010010100110100000
01010100100011000000100111100011
DEC
122209064052
107237007203
197085041160
084140009227
Add Round Key
BIN
01111010110100010100000000110100
01101011111011010000011111001011
11000101010101010010100110100000
01010100100011000000100111100011
⊕
BIN
11000011110111001101110100101101
00000101100000000100110010100011
11110011111110011111101001001000
01001100010010011000011000101101
=
BIN
10111001000011011001110100011001
01101110011011010100101101101000
00110110101011001101001111101000
00011000110001011000111111001110

State Matrix

HEX
b90d9d19
6e6d4b68
36acd3e8
18c58fce
BIN
10111001000011011001110100011001
01101110011011010100101101101000
00110110101011001101001111101000
00011000110001011000111111001110
DEC
185013157025
110109075104
054172211232
024197143206
Mix Columns
HEX
763ebfcb
6d23eb04
108dfe94
f299200c
BIN
01110110001111101011111111001011
01101101001000111110101100000100
00010000100011011111111010010100
11110010100110010010000000001100
DEC
118062191203
109035235004
016141254148
242153032012
▼ Round 5
Shift Rows
HEX
763ebfcb
046d23eb
fe94108d
99200cf2
BIN
01110110001111101011111111001011
00000100011011010010001111101011
11111110100101000001000010001101
10011001001000000000110011110010
DEC
118062191203
004109035235
254148016141
153032012242
Substitute Bytes
HEX
0fd1f459
30b3323c
0ce77cb4
f9548104
BIN
00001111110100011111010001011001
00110000101100110011001000111100
00001100111001110111110010110100
11111001010101001000000100000100
DEC
015209244089
048179050060
012231124180
249084129004
Add Round Key
BIN
00001111110100011111010001011001
00110000101100110011001000111100
00001100111001110111110010110100
11111001010101001000000100000100
⊕
BIN
00001100000111110000000111110000
00110010100001011100110011101111
10010001000010100000001110110010
11000000000001011100111110101011
=
BIN
00000011110011101111010110101001
00000010001101101111111011010011
10011101111011010111111100000110
00111001010100010100111010101111

State Matrix

HEX
03cef5a9
0236fed3
9ded7f06
39514eaf
BIN
00000011110011101111010110101001
00000010001101101111111011010011
10011101111011010111111100000110
00111001010100010100111010101111
DEC
003206245169
002054254211
157237127006
057081078175
Mix Columns
HEX
b5fb0cc6
314ee098
7a50f2d4
5ba12459
BIN
10110101111110110000110011000110
00110001010011101110000010011000
01111010010100001111001011010100
01011011101000010010010001011001
DEC
181251012198
049078224152
122080242212
091161036089
▼ Round 6
Shift Rows
HEX
b5fb0cc6
98314ee0
f2d47a50
a124595b
BIN
10110101111110110000110011000110
10011000001100010100111011100000
11110010110101000111101001010000
10100001001001000101100101011011
DEC
181251012198
152049078224
242212122080
161036089091
Substitute Bytes
HEX
d26381c7
e22eb6a0
0419bd6c
f1a61557
BIN
11010010011000111000000111000111
11100010001011101011011010100000
00000100000110011011110101101100
11110001101001100001010101010111
DEC
210099129199
226046182160
004025189108
241166021087
Add Round Key
BIN
11010010011000111000000111000111
11100010001011101011011010100000
00000100000110011011110101101100
11110001101001100001010101010111
⊕
BIN
00100010000100110001111011110001
11111010101101110100100100100011
11010010100110110000100110110001
01100001110001011100101001100100
=
BIN
11110000011100001001111100110110
00011000100110011111111110000011
11010110100000101011010011011101
10010000011000111101111100110011

State Matrix

HEX
f0709f36
1899ff83
d682b4dd
9063df33
BIN
11110000011100001001111100110110
00011000100110011111111110000011
11010110100000101011010011011101
10010000011000111101111100110011
DEC
240112159054
024153255131
214130180221
144099223051
Mix Columns
HEX
0a14a073
2022ba7c
6bf69d2e
efc88c7a
BIN
00001010000101001010000001110011
00100000001000101011101001111100
01101011111101101001110100101110
11101111110010001000110001111010
DEC
010020160115
032034186124
107246157046
239200140122
▼ Round 7
Shift Rows
HEX
0a14a073
7c2022ba
9d2e6bf6
c88c7aef
BIN
00001010000101001010000001110011
01111100001000000010001010111010
10011101001011100110101111110110
11001000100011000111101011101111
DEC
010020160115
124032034186
157046107246
200140122239
Substitute Bytes
HEX
a39b478f
015494c0
75c305d6
b1f0bd61
BIN
10100011100110110100011110001111
00000001010101001001010011000000
01110101110000110000010111010110
10110001111100001011110101100001
DEC
163155071143
001084148192
117195005214
177240189097
Add Round Key
BIN
10100011100110110100011110001111
00000001010101001001010011000000
01110101110000110000010111010110
10110001111100001011110101100001
⊕
BIN
00100100001100010000110111101111
10010110010011011111111001101010
00110110010010011001001010111000
10111110101001000000111110101110
=
BIN
10000111101010100100101001100000
10010111000110010110101010101010
01000011100010101001011101101110
00001111010101001011001011001111

State Matrix

HEX
87aa4a60
97196aaa
438a976e
0f54b2cf
BIN
10000111101010100100101001100000
10010111000110010110101010101010
01000011100010101001011101101110
00001111010101001011001011001111
DEC
135170074096
151025106170
067138151110
015084178207
Mix Columns
HEX
107f7ec9
f823eba8
6c85a911
d8b4391b
BIN
00010000011111110111111011001001
11111000001000111110101110101000
01101100100001011010100100010001
11011000101101000011100100011011
DEC
016127126201
248035235168
108133169017
216180057027
▼ Round 8
Shift Rows
HEX
107f7ec9
a8f823eb
a9116c85
b4391bd8
BIN
00010000011111110111111011001001
10101000111110000010001111101011
10101001000100010110110010000101
10110100001110010001101111011000
DEC
016127126201
168248035235
169017108133
180057027216
Substitute Bytes
HEX
7c6b8a12
6fe1323c
b7e3b867
c65b442d
BIN
01111100011010111000101000010010
01101111111000010011001000111100
10110111111000111011100001100111
11000110010110110100010000101101
DEC
124107138018
111225050060
183227184103
198091068045
Add Round Key
BIN
01111100011010111000101000010010
01101111111000010011001000111100
10110111111000111011100001100111
11000110010110110100010000101101
⊕
BIN
00000100000101010011110011100010
01110011110110111011001110010100
00000100011111111101101100101010
00100110000110101010101110100001
=
BIN
01111000011111101011011011110000
00011100001110101000000110101000
10110011100111000110001101001101
11100000010000011110111110001100

State Matrix

HEX
787eb6f0
1c3a81a8
b39c634d
e041ef8c
BIN
01111000011111101011011011110000
00011100001110101000000110101000
10110011100111000110001101001101
11100000010000011110111110001100
DEC
120126182240
028058129168
179156099077
224065239140
Mix Columns
HEX
256eb5bf
10a7e9d4
80a50d2b
82f5ead9
BIN
00100101011011101011010110111111
00010000101001111110100111010100
10000000101001010000110100101011
10000010111101011110101011011001
DEC
037110181191
016167233212
128165013043
130245234217
▼ Round 9
Shift Rows
HEX
256eb5bf
d410a7e9
0d2b80a5
f5ead982
BIN
00100101011011101011010110111111
11010100000100001010011111101001
00001101001010111000000010100101
11110101111010101101100110000010
DEC
037110181191
212016167233
013043128165
245234217130
Substitute Bytes
HEX
c245d2f4
197c89eb
f30b3a29
77bbe511
BIN
11000010010001011101001011110100
00011001011111001000100111101011
11110011000010110011101000101001
01110111101110111110010100010001
DEC
194069210244
025124137235
243011058041
119187229017
Add Round Key
BIN
11000010010001011101001011110100
00011001011111001000100111101011
11110011000010110011101000101001
01110111101110111110010100010001
⊕
BIN
11001001000100010010100111011110
11010010101010000110100000100111
01100011011110111010010011110001
00111011001111001011000100001010
=
BIN
00001011010101001111101100101010
11001011110101001110000111001100
10010000011100001001111011011000
01001100100001110101010000011011

State Matrix

HEX
0b54fb2a
cbd4e1cc
90709ed8
4c87541b
BIN
00001011010101001111101100101010
11001011110101001110000111001100
10010000011100001001111011011000
01001100100001110101010000011011
DEC
011084251042
203212225204
144112158216
076135084027
Mix Columns
HEX
363d4a0e
ab32f783
95f794b6
148ff91e
BIN
00110110001111010100101000001110
10101011001100101111011110000011
10010101111101111001010010110110
00010100100011111111100100011110
DEC
054061074014
171050247131
149247148182
020143249030
▼ Round 10
Shift Rows
HEX
363d4a0e
83ab32f7
94b695f7
8ff91e14
BIN
00110110001111010100101000001110
10000011101010110011001011110111
10010100101101101001010111110111
10001111111110010001111000010100
DEC
054061074014
131171050247
148182149247
143249030020
Substitute Bytes
HEX
248b5cd7
410ea126
e779ad26
7369e99b
BIN
00100100100010110101110011010111
01000001000011101010000100100110
11100111011110011010110100100110
01110011011010011110100110011011
DEC
036139092215
065014161038
231121173038
115105233155
Add Round Key
BIN
00100100100010110101110011010111
01000001000011101010000100100110
11100111011110011010110100100110
01110011011010011110100110011011
⊕
BIN
01001101110110000011100011110111
00101110011110101100000001001111
10001001000110001101111101010101
01010011000001111000110110111011
=
BIN
01101001010100110110010000100000
01101111011101000110000101101001
01101110011000010111001001110011
00100000011011100110010000100000

State Matrix

HEX
69536420
6f746169
6e617273
206e6420
BIN
01101001010100110110010000100000
01101111011101000110000101101001
01101110011000010111001001110011
00100000011011100110010000100000
DEC
105083100032
111116097105
110097114115
032110100032
▼ Block 3 | Ciphertext: b'\xd2\x8d\x80\xd5\x8c\xc0ou\x91\xe2Rw\xfe\xaf=m'

State Matrix

HEX
d28c91fe
8dc0e2af
806f523d
d575776d
BIN
11010010100011001001000111111110
10001101110000001110001010101111
10000000011011110101001000111101
11010101011101010111011101101101
DEC
210140145254
141192226175
128111082061
213117119109
Add Round Key
BIN
11010010100011001001000111111110
10001101110000001110001010101111
10000000011011110101001000111101
11010101011101010111011101101101
⊕
BIN
01101010110100100001100101100100
10101000110110000110001100101011
11101111000110000000011010010001
10000011000100000011011111010010
=
BIN
10111000010111101000100010011010
00100101000110001000000110000100
01101111011101110101010010101100
01010110011001010100000010111111

State Matrix

HEX
b85e889a
25188184
6f7754ac
566540bf
BIN
10111000010111101000100010011010
00100101000110001000000110000100
01101111011101110101010010101100
01010110011001010100000010111111
DEC
184094136154
037024129132
111119084172
086101064191
▼ Round 1
Shift Rows
HEX
b85e889a
84251881
54ac6f77
6540bf56
BIN
10111000010111101000100010011010
10000100001001010001100010000001
01010100101011000110111101110111
01100101010000001011111101010110
DEC
184094136154
132037024129
084172111119
101064191086
Substitute Bytes
HEX
9a9d9737
4fc23491
fdaa0602
bc72f4b9
BIN
10011010100111011001011100110111
01001111110000100011010010010001
11111101101010100000011000000010
10111100011100101111010010111001
DEC
154157151055
079194052145
253170006002
188114244185
Add Round Key
BIN
10011010100111011001011100110111
01001111110000100011010010010001
11111101101010100000011000000010
10111100011100101111010010111001
⊕
BIN
00100011101110001100101101111101
00100000011100001011101101001000
00110110111101110001111010010111
01111100100100110010011111100101
=
BIN
10111001001001010101110001001010
01101111101100101000111111011001
11001011010111010001100010010101
11000000111000011101001101011100

State Matrix

HEX
b9255c4a
6fb28fd9
cb5d1895
c0e1d35c
BIN
10111001001001010101110001001010
01101111101100101000111111011001
11001011010111010001100010010101
11000000111000011101001101011100
DEC
185037092074
111178143217
203093024149
192225211092
Mix Columns
HEX
b283329a
d94809df
61ad46f1
d74d65ee
BIN
10110010100000110011001010011010
11011001010010000000100111011111
01100001101011010100011011110001
11010111010011010110010111101110
DEC
178131050154
217072009223
097173070241
215077101238
▼ Round 2
Shift Rows
HEX
b283329a
dfd94809
46f161ad
4d65eed7
BIN
10110010100000110011001010011010
11011111110110010100100000001001
01000110111100010110000110101101
01001101011001011110111011010111
DEC
178131050154
223217072009
070241097173
077101238215
Substitute Bytes
HEX
3e41a137
efe5d440
982bd818
65bc990d
BIN
00111110010000011010000100110111
11101111111001011101010001000000
10011000001010111101100000011000
01100101101111001001100100001101
DEC
062065161055
239229212064
152043216024
101188153013
Add Round Key
BIN
00111110010000011010000100110111
11101111111001011101010001000000
10011000001010111101100000011000
01100101101111001001100100001101
⊕
BIN
10101110100110110111001110110110
10000111010100001100101111110011
00010011110000011110100110001001
00110010111011111011010011000010
=
BIN
10010000110110101101001010000001
01101000101101010001111110110011
10001011111010100011000110010001
01010111010100110010110111001111

State Matrix

HEX
90dad281
68b51fb3
8bea3191
57532dcf
BIN
10010000110110101101001010000001
01101000101101010001111110110011
10001011111010100011000110010001
01010111010100110010110111001111
DEC
144218210129
104181031179
139234049145
087083045207
Mix Columns
HEX
08f8f184
5682883d
5b7fab4c
21d30399
BIN
00001000111110001111000110000100
01010110100000101000100000111101
01011011011111111010101101001100
00100001110100110000001110011001
DEC
008248241132
086130136061
091127171076
033211003153
▼ Round 3
Shift Rows
HEX
08f8f184
3d568288
ab4c5b7f
d3039921
BIN
00001000111110001111000110000100
00111101010101101000001010001000
10101011010011000101101101111111
11010011000000111001100100100001
DEC
008248241132
061086130136
171076091127
211003153033
Substitute Bytes
HEX
bfe12b4f
8bb91197
0e5d576b
a9d5f97b
BIN
10111111111000010010101101001111
10001011101110010001000110010111
00001110010111010101011101101011
10101001110101011111100101111011
DEC
191225043079
139185017151
014093087107
169213249123
Add Round Key
BIN
10111111111000010010101101001111
10001011101110010001000110010111
00001110010111010101011101101011
10101001110101011111100101111011
⊕
BIN
11101001001101011110100011000101
01010111110101111001101100111000
00101011110100100010100001100000
10010100110111010101101101110110
=
BIN
01010110110101001100001110001010
11011100011011101000101010101111
00100101100011110111111100001011
00111101000010001010001000001101

State Matrix

HEX
56d4c38a
dc6e8aaf
258f7f0b
3d08a20d
BIN
01010110110101001100001110001010
11011100011011101000101010101111
00100101100011110111111100001011
00111101000010001010001000001101
DEC
086212195138
220110138175
037143127011
061008162013
Mix Columns
HEX
e002cfd2
f2fa8362
ac234015
2ce69886
BIN
11100000000000101100111111010010
11110010111110101000001101100010
10101100001000110100000000010101
00101100111001101001100010000110
DEC
224002207210
242250131098
172035064021
044230152134
▼ Round 4
Shift Rows
HEX
e002cfd2
62f2fa83
4015ac23
e698862c
BIN
11100000000000101100111111010010
01100010111100101111101010000011
01000000000101011010110000100011
11100110100110001000011000101100
DEC
224002207210
098242250131
064021172035
230152134044
Substitute Bytes
HEX
a06a5f7f
ab041441
722faa32
f5e2dc42
BIN
10100000011010100101111101111111
10101011000001000001010001000001
01110010001011111010101000110010
11110101111000101101110001000010
DEC
160106095127
171004020065
114047170050
245226220066
Add Round Key
BIN
10100000011010100101111101111111
10101011000001000001010001000001
01110010001011111010101000110010
11110101111000101101110001000010
⊕
BIN
11000011110111001101110100101101
00000101100000000100110010100011
11110011111110011111101001001000
01001100010010011000011000101101
=
BIN
01100011101101101000001001010010
10101110100001000101100011100010
10000001110101100101000001111010
10111001101010110101101001101111

State Matrix

HEX
63b68252
ae8458e2
81d6507a
b9ab5a6f
BIN
01100011101101101000001001010010
10101110100001000101100011100010
10000001110101100101000001111010
10111001101010110101101001101111
DEC
099182130082
174132088226
129214080122
185171090111
Mix Columns
HEX
5b484273
b09d4a31
48b62b0a
562cf3ed
BIN
01011011010010000100001001110011
10110000100111010100101000110001
01001000101101100010101100001010
01010110001011001111001111101101
DEC
091072066115
176157074049
072182043010
086044243237
▼ Round 5
Shift Rows
HEX
5b484273
31b09d4a
2b0a48b6
2cf3ed56
BIN
01011011010010000100001001110011
00110001101100001001110101001010
00101011000010100100100010110110
00101100111100111110110101010110
DEC
091072066115
049176157074
043010072182
044243237086
Substitute Bytes
HEX
57d4f68f
2efc755c
0ba3d479
427e53b9
BIN
01010111110101001111011010001111
00101110111111000111010101011100
00001011101000111101010001111001
01000010011111100101001110111001
DEC
087212246143
046252117092
011163212121
066126083185
Add Round Key
BIN
01010111110101001111011010001111
00101110111111000111010101011100
00001011101000111101010001111001
01000010011111100101001110111001
⊕
BIN
00001100000111110000000111110000
00110010100001011100110011101111
10010001000010100000001110110010
11000000000001011100111110101011
=
BIN
01011011110010111111011101111111
00011100011110011011100110110011
10011010101010011101011111001011
10000010011110111001110000010010

State Matrix

HEX
5bcbf77f
1c79b9b3
9aa9d7cb
827b9c12
BIN
01011011110010111111011101111111
00011100011110011011100110110011
10011010101010011101011111001011
10000010011110111001110000010010
DEC
091203247127
028121185179
154169215203
130123156018
Mix Columns
HEX
6d6ac6a7
d487dc4c
12c8ec39
f445f3c7
BIN
01101101011010101100011010100111
11010100100001111101110001001100
00010010110010001110110000111001
11110100010001011111001111000111
DEC
109106198167
212135220076
018200236057
244069243199
▼ Round 6
Shift Rows
HEX
6d6ac6a7
4cd487dc
ec3912c8
45f3c7f4
BIN
01101101011010101100011010100111
01001100110101001000011111011100
11101100001110010001001011001000
01000101111100111100011111110100
DEC
109106198167
076212135220
236057018200
069243199244
Substitute Bytes
HEX
b358c789
5d19ea93
835b39b1
687e31ba
BIN
10110011010110001100011110001001
01011101000110011110101010010011
10000011010110110011100110110001
01101000011111100011000110111010
DEC
179088199137
093025234147
131091057177
104126049186
Add Round Key
BIN
10110011010110001100011110001001
01011101000110011110101010010011
10000011010110110011100110110001
01101000011111100011000110111010
⊕
BIN
00100010000100110001111011110001
11111010101101110100100100100011
11010010100110110000100110110001
01100001110001011100101001100100
=
BIN
10010001010010111101100101111000
10100111101011101010001110110000
01010001110000000011000000000000
00001001101110111111101111011110

State Matrix

HEX
914bd978
a7aea3b0
51c03000
09bbfbde
BIN
10010001010010111101100101111000
10100111101011101010001110110000
01010001110000000011000000000000
00001001101110111111101111011110
DEC
145075217120
167174163176
081192048000
009187251222
Mix Columns
HEX
e382eaae
ed24abce
ff2e7afa
9f168a8c
BIN
11100011100000101110101010101110
11101101001001001010101111001110
11111111001011100111101011111010
10011111000101101000101010001100
DEC
227130234174
237036171206
255046122250
159022138140
▼ Round 7
Shift Rows
HEX
e382eaae
ceed24ab
7afaff2e
168a8c9f
BIN
11100011100000101110101010101110
11001110111011010010010010101011
01111010111110101111111100101110
00010110100010101000110010011111
DEC
227130234174
206237036171
122250255046
022138140159
Substitute Bytes
HEX
4d11bbbe
ec53a60e
bd147dc3
ffcff06e
BIN
01001101000100011011101110111110
11101100010100111010011000001110
10111101000101000111110111000011
11111111110011111111000001101110
DEC
077017187190
236083166014
189020125195
255207240110
Add Round Key
BIN
01001101000100011011101110111110
11101100010100111010011000001110
10111101000101000111110111000011
11111111110011111111000001101110
⊕
BIN
00100100001100010000110111101111
10010110010011011111111001101010
00110110010010011001001010111000
10111110101001000000111110101110
=
BIN
01101001001000001011011001010001
01111010000111100101100001100100
10001011010111011110111101111011
01000001011010111111111111000000

State Matrix

HEX
6920b651
7a1e5864
8b5def7b
416bffc0
BIN
01101001001000001011011001010001
01111010000111100101100001100100
10001011010111011110111101111011
01000001011010111111111111000000
DEC
105032182081
122030088100
139093239123
065107255192
Mix Columns
HEX
a1fb4101
241fc86e
ea96ff2c
b67a88cd
BIN
10100001111110110100000100000001
00100100000111111100100001101110
11101010100101101111111100101100
10110110011110101000100011001101
DEC
161251065001
036031200110
234150255044
182122136205
▼ Round 8
Shift Rows
HEX
a1fb4101
6e241fc8
ff2cea96
7a88cdb6
BIN
10100001111110110100000100000001
01101110001001000001111111001000
11111111001011001110101010010110
01111010100010001100110110110110
DEC
161251065001
110036031200
255044234150
122136205182
Substitute Bytes
HEX
f163f809
45a6cbb1
7d42bb35
bd978079
BIN
11110001011000111111100000001001
01000101101001101100101110110001
01111101010000101011101100110101
10111101100101111000000001111001
DEC
241099248009
069166203177
125066187053
189151128121
Add Round Key
BIN
11110001011000111111100000001001
01000101101001101100101110110001
01111101010000101011101100110101
10111101100101111000000001111001
⊕
BIN
00000100000101010011110011100010
01110011110110111011001110010100
00000100011111111101101100101010
00100110000110101010101110100001
=
BIN
11110101011101101100010011101011
00110110011111010111100000100101
01111001001111010110000000011111
10011011100011010010101111011000

State Matrix

HEX
f576c4eb
367d7825
793d601f
9b8d2bd8
BIN
11110101011101101100010011101011
00110110011111010111100000100101
01111001001111010110000000011111
10011011100011010010101111011000
DEC
245118196235
054125120037
121061096031
155141043216
Mix Columns
HEX
5c430fd0
180411c9
92655e36
f799b726
BIN
01011100010000110000111111010000
00011000000001000001000111001001
10010010011001010101111000110110
11110111100110011011011100100110
DEC
092067015208
024004017201
146101094054
247153183038
▼ Round 9
Shift Rows
HEX
5c430fd0
c9180411
5e369265
99b726f7
BIN
01011100010000110000111111010000
11001001000110000000010000010001
01011110001101101001001001100101
10011001101101110010011011110111
DEC
092067015208
201024004017
094054146101
153183038247
Substitute Bytes
HEX
a764fb60
123430e3
9d2474bc
f9202326
BIN
10100111011001001111101101100000
00010010001101000011000011100011
10011101001001000111010010111100
11111001001000000010001100100110
DEC
167100251096
018052048227
157036116188
249032035038
Add Round Key
BIN
10100111011001001111101101100000
00010010001101000011000011100011
10011101001001000111010010111100
11111001001000000010001100100110
⊕
BIN
11001001000100010010100111011110
11010010101010000110100000100111
01100011011110111010010011110001
00111011001111001011000100001010
=
BIN
01101110011101011101001010111110
11000000100111000101100011000100
11111110010111111101000001001101
11000010000111001001001000101100

State Matrix

HEX
6e75d2be
c09c58c4
fe5fd04d
c21c922c
BIN
01101110011101011101001010111110
11000000100111000101100011000100
11111110010111111101000001001101
11000010000111001001001000101100
DEC
110117210190
192156088196
254095208077
194028146044
Mix Columns
HEX
31990768
daba8483
9efc8ead
e775c55d
BIN
00110001100110010000011101101000
11011010101110101000010010000011
10011110111111001000111010101101
11100111011101011100010101011101
DEC
049153007104
218186132131
158252142173
231117197093
▼ Round 10
Shift Rows
HEX
31990768
83daba84
8ead9efc
75c55de7
BIN
00110001100110010000011101101000
10000011110110101011101010000100
10001110101011011001111011111100
01110101110001010101110111100111
DEC
049153007104
131218186132
142173158252
117197093231
Substitute Bytes
HEX
2ef938f7
417ac04f
e618df55
3f078db0
BIN
00101110111110010011100011110111
01000001011110101100000001001111
11100110000110001101111101010101
00111111000001111000110110110000
DEC
046249056247
065122192079
230024223085
063007141176
Add Round Key
BIN
00101110111110010011100011110111
01000001011110101100000001001111
11100110000110001101111101010101
00111111000001111000110110110000
⊕
BIN
01001101110110000011100011110111
00101110011110101100000001001111
10001001000110001101111101010101
01010011000001111000110110111011
=
BIN
01100011001000010000000000000000
01101111000000000000000000000000
01101111000000000000000000000000
01101100000000000000000000001011

State Matrix

HEX
63210000
6f000000
6f000000
6c00000b
BIN
01100011001000010000000000000000
01101111000000000000000000000000
01101111000000000000000000000000
01101100000000000000000000001011
DEC
099033000000
111000000000
111000000000
108000000011

Deciphered Text: b'Advanced Encryption Standard is cool!'

In [5]:
image = Image.open('shapes.jpeg')
print('Original Image:')
display(image)
img_arr = array(image)
img_shape = img_arr.shape

def to_image(data, shape):
    return Image.fromarray(array(bytearray(data)).reshape(shape))
Original Image:
In [6]:
key = 'This is the key!'.encode('ascii')
message = img_arr.flatten()

aes = AdvancedEncryptionStandard()

print('AES Encryption:')
cipher, html = aes.encrypt(message, key)
display(to_image(cipher, img_shape))

print('\n\nAES Decryption:')
decipher, html = aes.decrypt(cipher, key)
display(to_image(decipher, img_shape))
AES Encryption:

AES Decryption:
In [7]:
# 24-bit key
key = 'abcdefghijklmnopqrstuvwx'.encode('ascii')
message = 'Hi! I am Samuel.'

aes = AdvancedEncryptionStandard()

print('AES Encryption:')
cipher, html = aes.encrypt(message.encode('ascii'), key, key_info_expanded = True)
display(html)

print('\n\nAES Decryption:')
decipher, html = aes.decrypt(cipher, key)
display(html)
AES Encryption:

Given Plain Text: b'Hi! I am Samuel.'

▼ Key Information
Given Key
ASCII abcdefghijklmnopqrstuvwx
HEX 6162636465666768696a6b6c6d6e6f707172737475767778
BIN 011000010110001001100011011001000110010101100110011001110110100001101001011010100110101101101100011011010110111001101111011100000111000101110010011100110111010001110101011101100111011101111000
DEC 097098099100101102103104105106107108109110111112113114115116117118119120
Key Expansion
w0w1w2w3w4w5w6w7w8w9w10w11w12w13w14w15w16w17w18w19w20w21w22w23w24w25w26w27w28w29w30w31w32w33w34w35w36w37w38w39w40w41w42w43w44w45w46w47w48w49w50w51
B06165696dfe9bf29f3da654cb0aacf83339956d5e0c99f4aa1c8571db1f9aeb3066fc1727a05c4b6cd68ac1ad4dc706ab08cfc962
B162666a6ecaacc6a81bb771d9ad1a6bb24852398bb2e0d95259b96032b009695ba3aac39842e82bb36880ab187fff544c17e8bcf0
B263676b6f32553e51431628796d7b532a166d3e147b16283ce9ffd7eb41be6982b50b62e01c17759570671287056270f7107202f5
B364686c7058305c2c83b3efc39c2fc0035f70b0b30777c774abdc1b6f12ced5ba16d80db7da020fb88a88873f1f97102f7deafad5
▼ AES Encryption

State Matrix

HEX
48492075
69205365
2161616c
206d6d2e
BIN
01001000010010010010000001110101
01101001001000000101001101100101
00100001011000010110000101101100
00100000011011010110110100101110
DEC
072073032117
105032083101
033097097108
032109109046
Add Round Key
BIN
01001000010010010010000001110101
01101001001000000101001101100101
00100001011000010110000101101100
00100000011011010110110100101110
⊕
BIN
01100001011001010110100101101101
01100010011001100110101001101110
01100011011001110110101101101111
01100100011010000110110001110000
=
BIN
00101001001011000100100100011000
00001011010001100011100100001011
01000010000001100000101000000011
01000100000001010000000101011110

State Matrix

HEX
292c4918
0b46390b
42060a03
4405015e
BIN
00101001001011000100100100011000
00001011010001100011100100001011
01000010000001100000101000000011
01000100000001010000000101011110
DEC
041044073024
011070057011
066006010003
068005001094
▼ Round 1
Substitute Bytes
HEX
a5713bad
2b5a122b
2c6f677b
1b6b7c58
BIN
10100101011100010011101110101101
00101011010110100001001000101011
00101100011011110110011101111011
00011011011010110111110001011000
DEC
165113059173
043090018043
044111103123
027107124088
Shift Rows
HEX
a5713bad
5a122b2b
677b2c6f
581b6b7c
BIN
10100101011100010011101110101101
01011010000100100010101100101011
01100111011110110010110001101111
01011000000110110110101101111100
DEC
165113059173
090018043043
103123044111
088027107124
Mix Columns
HEX
80b44c2f
e0c37236
d9b8f5dc
79cc9c50
BIN
10000000101101000100110000101111
11100000110000110111001000110110
11011001101110001111010111011100
01111001110011001001110001010000
DEC
128180076047
224195114054
217184245220
121204156080
Add Round Key
BIN
10000000101101000100110000101111
11100000110000110111001000110110
11011001101110001111010111011100
01111001110011001001110001010000
⊕
BIN
11111110100110111111001010011111
11001010101011001100011010101000
00110010010101010011111001010001
01011000001100000101110000101100
=
BIN
01111110001011111011111010110000
00101010011011111011010010011110
11101011111011011100101110001101
00100001111111001100000001111100

State Matrix

HEX
7e2fbeb0
2a6fb49e
ebedcb8d
21fcc07c
BIN
01111110001011111011111010110000
00101010011011111011010010011110
11101011111011011100101110001101
00100001111111001100000001111100
DEC
126047190176
042111180158
235237203141
033252192124
▼ Round 2
Substitute Bytes
HEX
f315aee7
e5a88d0b
e9551f5d
fdb0ba10
BIN
11110011000101011010111011100111
11100101101010001000110100001011
11101001010101010001111101011101
11111101101100001011101000010000
DEC
243021174231
229168141011
233085031093
253176186016
Shift Rows
HEX
f315aee7
a88d0be5
1f5de955
10fdb0ba
BIN
11110011000101011010111011100111
10101000100011010000101111100101
00011111010111011110100101010101
00010000111111011011000010111010
DEC
243021174231
168141011229
031093233085
016253176186
Mix Columns
HEX
1106030e
890e2873
553ea77d
990e70ed
BIN
00010001000001100000001100001110
10001001000011100010100001110011
01010101001111101010011101111101
10011001000011100111000011101101
DEC
017006003014
137014040115
085062167125
153014112237
Add Round Key
BIN
00010001000001100000001100001110
10001001000011100010100001110011
01010101001111101010011101111101
10011001000011100111000011101101
⊕
BIN
00111101101001100101010011001011
00011011101101110111000111011001
01000011000101100010100001111001
10000011101100111110111111000011
=
BIN
00101100101000000101011111000101
10010010101110010101100110101010
00010110001010001000111100000100
00011010101111011001111100101110

State Matrix

HEX
2ca057c5
92b959aa
16288f04
1abd9f2e
BIN
00101100101000000101011111000101
10010010101110010101100110101010
00010110001010001000111100000100
00011010101111011001111100101110
DEC
044160087197
146185089170
022040143004
026189159046
▼ Round 3
Substitute Bytes
HEX
71e05ba6
4f56cbac
473473f2
a27adb31
BIN
01110001111000000101101110100110
01001111010101101100101110101100
01000111001101000111001111110010
10100010011110101101101100110001
DEC
113224091166
079086203172
071052115242
162122219049
Shift Rows
HEX
71e05ba6
56cbac4f
73f24734
31a27adb
BIN
01110001111000000101101110100110
01010110110010111010110001001111
01110011111100100100011100110100
00110001101000100111101011011011
DEC
113224091166
086203172079
115242071052
049162122219
Mix Columns
HEX
5acd6469
79c2abbf
9229f7f7
d45df227
BIN
01011010110011010110010001101001
01111001110000101010101110111111
10010010001010011111011111110111
11010100010111011111001000100111
DEC
090205100105
121194171191
146041247247
212093242039
Add Round Key
BIN
01011010110011010110010001101001
01111001110000101010101110111111
10010010001010011111011111110111
11010100010111011111001000100111
⊕
BIN
00001010101011001111100000110011
10101101000110100110101110110010
01101101011110110101001100101010
10011100001011111100000000000011
=
BIN
01010000011000011001110001011010
11010100110110001100000000001101
11111111010100101010010011011101
01001000011100100011001000100100

State Matrix

HEX
50619c5a
d4d8c00d
ff52a4dd
48723224
BIN
01010000011000011001110001011010
11010100110110001100000000001101
11111111010100101010010011011101
01001000011100100011001000100100
DEC
080097156090
212216192013
255082164221
072114050036
▼ Round 4
Substitute Bytes
HEX
53efdebe
4861bad7
160049c1
52402336
BIN
01010011111011111101111010111110
01001000011000011011101011010111
00010110000000000100100111000001
01010010010000000010001100110110
DEC
083239222190
072097186215
022000073193
082064035054
Shift Rows
HEX
53efdebe
61bad748
49c11600
36524023
BIN
01010011111011111101111010111110
01100001101110101101011101001000
01001001110000010001011000000000
00110110010100100100000000100011
DEC
083239222190
097186215072
073193022000
054082064035
Mix Columns
HEX
7a83939c
7c8a110d
fa3ae593
b1f538d7
BIN
01111010100000111001001110011100
01111100100010100001000100001101
11111010001110101110010110010011
10110001111101010011100011010111
DEC
122131147156
124138017013
250058229147
177245056215
Add Round Key
BIN
01111010100000111001001110011100
01111100100010100001000100001101
11111010001110101110010110010011
10110001111101010011100011010111
⊕
BIN
00111001100101010110110101011110
01001000010100100011100110001011
00010110011011010011111000010100
01011111011100001011000010110011
=
BIN
01000011000101101111111011000010
00110100110110000010100010000110
11101100010101111101101110000111
11101110100001011000100001100100

State Matrix

HEX
4316fec2
34d82886
ec57db87
ee858864
BIN
01000011000101101111111011000010
00110100110110000010100010000110
11101100010101111101101110000111
11101110100001011000100001100100
DEC
067022254194
052216040134
236087219135
238133136100
▼ Round 5
Substitute Bytes
HEX
1a47bb25
18613444
ce5bb917
2897c443
BIN
00011010010001111011101100100101
00011000011000010011010001000100
11001110010110111011100100010111
00101000100101111100010001000011
DEC
026071187037
024097052068
206091185023
040151196067
Shift Rows
HEX
1a47bb25
61344418
b917ce5b
432897c4
BIN
00011010010001111011101100100101
01100001001101000100010000011000
10111001000101111100111001011011
01000011001010001001011111000100
DEC
026071187037
097052068024
185023206091
067040151196
Mix Columns
HEX
6dedf8fd
4b3eed3c
d725dadc
70ba69bf
BIN
01101101111011011111100011111101
01001011001111101110110100111100
11010111001001011101101011011100
01110000101110100110100110111111
DEC
109237248253
075062237060
215037218220
112186105191
Add Round Key
BIN
01101101111011011111100011111101
01001011001111101110110100111100
11010111001001011101101011011100
01110000101110100110100110111111
⊕
BIN
00001100100110011111010010101010
10110010111000001101100101010010
01111011000101100010100000111100
00000111011101111100011101110100
=
BIN
01100001011101000000110001010111
11111001110111100011010001101110
10101100001100111111001011100000
01110111110011011010111011001011

State Matrix

HEX
61740c57
f9de346e
ac33f2e0
77cdaecb
BIN
01100001011101000000110001010111
11111001110111100011010001101110
10101100001100111111001011100000
01110111110011011010111011001011
DEC
097116012087
249222052110
172051242224
119205174203
▼ Round 6
Substitute Bytes
HEX
ef92fe5b
991d189f
91c389e1
f5bde41f
BIN
11101111100100101111111001011011
10011001000111010001100010011111
10010001110000111000100111100001
11110101101111011110010000011111
DEC
239146254091
153029024159
145195137225
245189228031
Shift Rows
HEX
ef92fe5b
1d189f99
89e191c3
1ff5bde4
BIN
11101111100100101111111001011011
00011101000110001001111110011001
10001001111000011001000111000011
00011111111101011011110111100100
DEC
239146254091
029024159153
137225145195
031245189228
Mix Columns
HEX
74037121
4a6fcec8
da578468
80a57664
BIN
01110100000000110111000100100001
01001010011011111100111011001000
11011010010101111000010001101000
10000000101001010111011001100100
DEC
116003113033
074111206200
218087132104
128165118100
Add Round Key
BIN
01110100000000110111000100100001
01001010011011111100111011001000
11011010010101111000010001101000
10000000101001010111011001100100
⊕
BIN
00011100100001010111000111011011
01011001101110010110000000110010
11101001111111111101011111101011
10101011110111000001101101101111
=
BIN
01101000100001100000000011111010
00010011110101101010111011111010
00110011101010000101001110000011
00101011011110010110110100001011

State Matrix

HEX
688600fa
13d6aefa
33a85383
2b796d0b
BIN
01101000100001100000000011111010
00010011110101101010111011111010
00110011101010000101001110000011
00101011011110010110110100001011
DEC
104134000250
019214174250
051168083131
043121109011
▼ Round 7
Substitute Bytes
HEX
4544632d
7df6e42d
c3c2edec
f1b63c2b
BIN
01000101010001000110001100101101
01111101111101101110010000101101
11000011110000101110110111101100
11110001101101100011110000101011
DEC
069068099045
125246228045
195194237236
241182060043
Shift Rows
HEX
4544632d
f6e42d7d
edecc3c2
2bf1b63c
BIN
01000101010001000110001100101101
11110110111001000010110101111101
11101101111011001100001111000010
00101011111100011011011000111100
DEC
069068099045
246228045125
237236195194
043241182060
Mix Columns
HEX
4da2c423
b549d1b6
0f6b128b
823d3cb0
BIN
01001101101000101100010000100011
10110101010010011101000110110110
00001111011010110001001010001011
10000010001111010011110010110000
DEC
077162196035
181073209182
015107018139
130061060176
Add Round Key
BIN
01001101101000101100010000100011
10110101010010011101000110110110
00001111011010110001001010001011
10000010001111010011110010110000
⊕
BIN
00011111100110101110101100110000
10110000000010010110100101011011
01000001101111100110100110000010
00010010110011101101010110111010
=
BIN
01010010001110000010111100010011
00000101010000001011100011101101
01001110110101010111101100001001
10010000111100111110100100001010

State Matrix

HEX
52382f13
0540b8ed
4ed57b09
90f3e90a
BIN
01010010001110000010111100010011
00000101010000001011100011101101
01001110110101010111101100001001
10010000111100111110100100001010
DEC
082056047019
005064184237
078213123009
144243233010
▼ Round 8
Substitute Bytes
HEX
0007157d
6b096c55
2f032101
600d1e67
BIN
00000000000001110001010101111101
01101011000010010110110001010101
00101111000000110010000100000001
01100000000011010001111001100111
DEC
000007021125
107009108085
047003033001
096013030103
Shift Rows
HEX
0007157d
096c556b
21012f03
67600d1e
BIN
00000000000001110001010101111101
00001001011011000101010101101011
00100001000000010010111100000011
01100111011000000000110100011110
DEC
000007021125
009108085107
033001047003
103096013030
Mix Columns
HEX
5ddbf75a
16bcc3b0
e2c90932
e6a45fd3
BIN
01011101110110111111011101011010
00010110101111001100001110110000
11100010110010010000100100110010
11100110101001000101111111010011
DEC
093219247090
022188195176
226201009050
230164095211
Add Round Key
BIN
01011101110110111111011101011010
00010110101111001100001110110000
11100010110010010000100100110010
11100110101001000101111111010011
⊕
BIN
01100110111111000001011100100111
10100011101010101100001110011000
10110101000010110110001011100000
00010110110110000000110110110111
=
BIN
00111011001001111110000001111101
10110101000101100000000000101000
01010111110000100110101111010010
11110000011111000101001001100100

State Matrix

HEX
3b27e07d
b5160028
57c26bd2
f07c5264
BIN
00111011001001111110000001111101
10110101000101100000000000101000
01010111110000100110101111010010
11110000011111000101001001100100
DEC
059039224125
181022000040
087194107210
240124082100
▼ Round 9
Substitute Bytes
HEX
e2cce1ff
d5476334
5b257fb5
8c100043
BIN
11100010110011001110000111111111
11010101010001110110001100110100
01011011001001010111111110110101
10001100000100000000000001000011
DEC
226204225255
213071099052
091037127181
140016000067
Shift Rows
HEX
e2cce1ff
476334d5
7fb55b25
438c1000
BIN
11100010110011001110000111111111
01000111011000110011010011010101
01111111101101010101101100100101
01000011100011000001000000000000
DEC
226204225255
071099052213
127181091037
067140016000
Mix Columns
HEX
2a1fcea4
ae427421
9e515360
839a77ea
BIN
00101010000111111100111010100100
10101110010000100111010000100001
10011110010100010101001101100000
10000011100110100111011111101010
DEC
042031206164
174066116033
158081083096
131154119234
Add Round Key
BIN
00101010000111111100111010100100
10101110010000100111010000100001
10011110010100010101001101100000
10000011100110100111011111101010
⊕
BIN
10100000010111000100101101101100
01000010111010000010101110110011
00011100000101110111010110010101
11011010000000100000111110111000
=
BIN
10001010010000111000010111001000
11101100101010100101111110010010
10000010010001100010011011110101
01011001100110000111100001010010

State Matrix

HEX
8a4385c8
ecaa5f92
824626f5
59987852
BIN
10001010010000111000010111001000
11101100101010100101111110010010
10000010010001100010011011110101
01011001100110000111100001010010
DEC
138067133200
236170095146
130070038245
089152120082
▼ Round 10
Substitute Bytes
HEX
7e1a97e8
ceaccf4f
135af7e6
cb46bc00
BIN
01111110000110101001011111101000
11001110101011001100111101001111
00010011010110101111011111100110
11001011010001101011110000000000
DEC
126026151232
206172207079
019090247230
203070188000
Shift Rows
HEX
7e1a97e8
accf4fce
f7e6135a
00cb46bc
BIN
01111110000110101001011111101000
10101100110011110100111111001110
11110111111001100001001101011010
00000000110010110100011010111100
DEC
126026151232
172207079206
247230019090
000203070188
Mix Columns
HEX
e453b164
3f657a3d
2744344d
d98a72d4
BIN
11100100010100111011000101100100
00111111011001010111101000111101
00100111010001000011010001001101
11011001100010100111001011010100
DEC
228083177100
063101122061
039068052077
217138114212
Add Round Key
BIN
11100100010100111011000101100100
00111111011001010111101000111101
00100111010001000011010001001101
11011001100010100111001011010100
⊕
BIN
11010110100010101100000110101101
01101000100000001010101100011000
01110000011001110001001010000111
10001010100010001000011100111111
=
BIN
00110010110110010111000011001001
01010111111001011101000100100101
01010111001000110010011011001010
01010011000000101111010111101011

State Matrix

HEX
32d970c9
57e5d125
572326ca
5302f5eb
BIN
00110010110110010111000011001001
01010111111001011101000100100101
01010111001000110010011011001010
01010011000000101111010111101011
DEC
050217112201
087229209037
087035038202
083002245235
▼ Round 11
Substitute Bytes
HEX
233551dd
5bd93e3f
5b26f774
ed77e6e9
BIN
00100011001101010101000111011101
01011011110110010011111000111111
01011011001001101111011101110100
11101101011101111110011011101001
DEC
035053081221
091217062063
091038247116
237119230233
Shift Rows
HEX
233551dd
d93e3f5b
f7745b26
e9ed77e6
BIN
00100011001101010101000111011101
11011001001111100011111101011011
11110111011101000101101100100110
11101001111011010111011111100110
DEC
035053081221
217062063091
247116091038
233237119230
Mix Columns
HEX
28b1cf8c
6138b5e7
2fcf41fb
82d479d6
BIN
00101000101100011100111110001100
01100001001110001011010111100111
00101111110011110100000111111011
10000010110101000111100111010110
DEC
040177207140
097056181231
047207065251
130212121214
Add Round Key
BIN
00101000101100011100111110001100
01100001001110001011010111100111
00101111110011110100000111111011
10000010110101000111100111010110
⊕
BIN
01001101110001110000011010101011
01111111111111110101010001001100
00000101011000100111000011110111
00011111100101110001000000101111
=
BIN
01100101011101101100100100100111
00011110110001111110000110101011
00101010101011010011000100001100
10011101010000110110100111111001

State Matrix

HEX
6576c927
1ec7e1ab
2aad310c
9d4369f9
BIN
01100101011101101100100100100111
00011110110001111110000110101011
00101010101011010011000100001100
10011101010000110110100111111001
DEC
101118201039
030199225171
042173049012
157067105249
▼ Round 12
Substitute Bytes
HEX
4d38ddcc
72c6f862
e595c7fe
5e1af999
BIN
01001101001110001101110111001100
01110010110001101111100001100010
11100101100101011100011111111110
01011110000110101111100110011001
DEC
077056221204
114198248098
229149199254
094026249153
Shift Rows
HEX
4d38ddcc
c6f86272
c7fee595
995e1af9
BIN
01001101001110001101110111001100
11000110111110000110001001110010
11000111111111101110010110010101
10011001010111100001101011111001
DEC
077056221204
198248098114
199254229149
153094026249
Add Round Key
BIN
01001101001110001101110111001100
11000110111110000110001001110010
11000111111111101110010110010101
10011001010111100001101011111001
⊕
BIN
00001000110011111100100101100010
00010111111010001011110011110000
00010000011100100000001011110101
01111101111010101111101011010101
=
BIN
01000101111101110001010010101110
11010001000100001101111010000010
11010111100011001110011101100000
11100100101101001110000000101100

State Matrix

HEX
45f714ae
d110de82
d78ce760
e4b4e02c
BIN
01000101111101110001010010101110
11010001000100001101111010000010
11010111100011001110011101100000
11100100101101001110000000101100
DEC
069247020174
209016222130
215140231096
228180224044

Cipher Text: b'E\xd1\xd7\xe4\xf7\x10\x8c\xb4\x14\xde\xe7\xe0\xae\x82`,'


AES Decryption:

Given Cipher Text: b'E\xd1\xd7\xe4\xf7\x10\x8c\xb4\x14\xde\xe7\xe0\xae\x82`,'

▼ Key Information
Given Key
ASCII abcdefghijklmnopqrstuvwx
HEX 6162636465666768696a6b6c6d6e6f707172737475767778
BIN 011000010110001001100011011001000110010101100110011001110110100001101001011010100110101101101100011011010110111001101111011100000111000101110010011100110111010001110101011101100111011101111000
DEC 097098099100101102103104105106107108109110111112113114115116117118119120
Key Expansion
w0w1w2w3w4w5w6w7w8w9w10w11w12w13w14w15w16w17w18w19w20w21w22w23w24w25w26w27w28w29w30w31w32w33w34w35w36w37w38w39w40w41w42w43w44w45w46w47w48w49w50w51
B06165696dfe9bf29f3da654cb0aacf83339956d5e0c99f4aa1c8571db1f9aeb3066fc1727a05c4b6cd68ac1ad4dc706ab08cfc962
B162666a6ecaacc6a81bb771d9ad1a6bb24852398bb2e0d95259b96032b009695ba3aac39842e82bb36880ab187fff544c17e8bcf0
B263676b6f32553e51431628796d7b532a166d3e147b16283ce9ffd7eb41be6982b50b62e01c17759570671287056270f7107202f5
B364686c7058305c2c83b3efc39c2fc0035f70b0b30777c774abdc1b6f12ced5ba16d80db7da020fb88a88873f1f97102f7deafad5
▼ AES Decryption

State Matrix

HEX
45f714ae
d110de82
d78ce760
e4b4e02c
BIN
01000101111101110001010010101110
11010001000100001101111010000010
11010111100011001110011101100000
11100100101101001110000000101100
DEC
069247020174
209016222130
215140231096
228180224044
Add Round Key
BIN
01000101111101110001010010101110
11010001000100001101111010000010
11010111100011001110011101100000
11100100101101001110000000101100
⊕
BIN
00001000110011111100100101100010
00010111111010001011110011110000
00010000011100100000001011110101
01111101111010101111101011010101
=
BIN
01001101001110001101110111001100
11000110111110000110001001110010
11000111111111101110010110010101
10011001010111100001101011111001

State Matrix

HEX
4d38ddcc
c6f86272
c7fee595
995e1af9
BIN
01001101001110001101110111001100
11000110111110000110001001110010
11000111111111101110010110010101
10011001010111100001101011111001
DEC
077056221204
198248098114
199254229149
153094026249
▼ Round 1
Shift Rows
HEX
4d38ddcc
72c6f862
e595c7fe
5e1af999
BIN
01001101001110001101110111001100
01110010110001101111100001100010
11100101100101011100011111111110
01011110000110101111100110011001
DEC
077056221204
114198248098
229149199254
094026249153
Substitute Bytes
HEX
6576c927
1ec7e1ab
2aad310c
9d4369f9
BIN
01100101011101101100100100100111
00011110110001111110000110101011
00101010101011010011000100001100
10011101010000110110100111111001
DEC
101118201039
030199225171
042173049012
157067105249
Add Round Key
BIN
01100101011101101100100100100111
00011110110001111110000110101011
00101010101011010011000100001100
10011101010000110110100111111001
⊕
BIN
01001101110001110000011010101011
01111111111111110101010001001100
00000101011000100111000011110111
00011111100101110001000000101111
=
BIN
00101000101100011100111110001100
01100001001110001011010111100111
00101111110011110100000111111011
10000010110101000111100111010110

State Matrix

HEX
28b1cf8c
6138b5e7
2fcf41fb
82d479d6
BIN
00101000101100011100111110001100
01100001001110001011010111100111
00101111110011110100000111111011
10000010110101000111100111010110
DEC
040177207140
097056181231
047207065251
130212121214
Mix Columns
HEX
233551dd
d93e3f5b
f7745b26
e9ed77e6
BIN
00100011001101010101000111011101
11011001001111100011111101011011
11110111011101000101101100100110
11101001111011010111011111100110
DEC
035053081221
217062063091
247116091038
233237119230
▼ Round 2
Shift Rows
HEX
233551dd
5bd93e3f
5b26f774
ed77e6e9
BIN
00100011001101010101000111011101
01011011110110010011111000111111
01011011001001101111011101110100
11101101011101111110011011101001
DEC
035053081221
091217062063
091038247116
237119230233
Substitute Bytes
HEX
32d970c9
57e5d125
572326ca
5302f5eb
BIN
00110010110110010111000011001001
01010111111001011101000100100101
01010111001000110010011011001010
01010011000000101111010111101011
DEC
050217112201
087229209037
087035038202
083002245235
Add Round Key
BIN
00110010110110010111000011001001
01010111111001011101000100100101
01010111001000110010011011001010
01010011000000101111010111101011
⊕
BIN
11010110100010101100000110101101
01101000100000001010101100011000
01110000011001110001001010000111
10001010100010001000011100111111
=
BIN
11100100010100111011000101100100
00111111011001010111101000111101
00100111010001000011010001001101
11011001100010100111001011010100

State Matrix

HEX
e453b164
3f657a3d
2744344d
d98a72d4
BIN
11100100010100111011000101100100
00111111011001010111101000111101
00100111010001000011010001001101
11011001100010100111001011010100
DEC
228083177100
063101122061
039068052077
217138114212
Mix Columns
HEX
7e1a97e8
accf4fce
f7e6135a
00cb46bc
BIN
01111110000110101001011111101000
10101100110011110100111111001110
11110111111001100001001101011010
00000000110010110100011010111100
DEC
126026151232
172207079206
247230019090
000203070188
▼ Round 3
Shift Rows
HEX
7e1a97e8
ceaccf4f
135af7e6
cb46bc00
BIN
01111110000110101001011111101000
11001110101011001100111101001111
00010011010110101111011111100110
11001011010001101011110000000000
DEC
126026151232
206172207079
019090247230
203070188000
Substitute Bytes
HEX
8a4385c8
ecaa5f92
824626f5
59987852
BIN
10001010010000111000010111001000
11101100101010100101111110010010
10000010010001100010011011110101
01011001100110000111100001010010
DEC
138067133200
236170095146
130070038245
089152120082
Add Round Key
BIN
10001010010000111000010111001000
11101100101010100101111110010010
10000010010001100010011011110101
01011001100110000111100001010010
⊕
BIN
10100000010111000100101101101100
01000010111010000010101110110011
00011100000101110111010110010101
11011010000000100000111110111000
=
BIN
00101010000111111100111010100100
10101110010000100111010000100001
10011110010100010101001101100000
10000011100110100111011111101010

State Matrix

HEX
2a1fcea4
ae427421
9e515360
839a77ea
BIN
00101010000111111100111010100100
10101110010000100111010000100001
10011110010100010101001101100000
10000011100110100111011111101010
DEC
042031206164
174066116033
158081083096
131154119234
Mix Columns
HEX
e2cce1ff
476334d5
7fb55b25
438c1000
BIN
11100010110011001110000111111111
01000111011000110011010011010101
01111111101101010101101100100101
01000011100011000001000000000000
DEC
226204225255
071099052213
127181091037
067140016000
▼ Round 4
Shift Rows
HEX
e2cce1ff
d5476334
5b257fb5
8c100043
BIN
11100010110011001110000111111111
11010101010001110110001100110100
01011011001001010111111110110101
10001100000100000000000001000011
DEC
226204225255
213071099052
091037127181
140016000067
Substitute Bytes
HEX
3b27e07d
b5160028
57c26bd2
f07c5264
BIN
00111011001001111110000001111101
10110101000101100000000000101000
01010111110000100110101111010010
11110000011111000101001001100100
DEC
059039224125
181022000040
087194107210
240124082100
Add Round Key
BIN
00111011001001111110000001111101
10110101000101100000000000101000
01010111110000100110101111010010
11110000011111000101001001100100
⊕
BIN
01100110111111000001011100100111
10100011101010101100001110011000
10110101000010110110001011100000
00010110110110000000110110110111
=
BIN
01011101110110111111011101011010
00010110101111001100001110110000
11100010110010010000100100110010
11100110101001000101111111010011

State Matrix

HEX
5ddbf75a
16bcc3b0
e2c90932
e6a45fd3
BIN
01011101110110111111011101011010
00010110101111001100001110110000
11100010110010010000100100110010
11100110101001000101111111010011
DEC
093219247090
022188195176
226201009050
230164095211
Mix Columns
HEX
0007157d
096c556b
21012f03
67600d1e
BIN
00000000000001110001010101111101
00001001011011000101010101101011
00100001000000010010111100000011
01100111011000000000110100011110
DEC
000007021125
009108085107
033001047003
103096013030
▼ Round 5
Shift Rows
HEX
0007157d
6b096c55
2f032101
600d1e67
BIN
00000000000001110001010101111101
01101011000010010110110001010101
00101111000000110010000100000001
01100000000011010001111001100111
DEC
000007021125
107009108085
047003033001
096013030103
Substitute Bytes
HEX
52382f13
0540b8ed
4ed57b09
90f3e90a
BIN
01010010001110000010111100010011
00000101010000001011100011101101
01001110110101010111101100001001
10010000111100111110100100001010
DEC
082056047019
005064184237
078213123009
144243233010
Add Round Key
BIN
01010010001110000010111100010011
00000101010000001011100011101101
01001110110101010111101100001001
10010000111100111110100100001010
⊕
BIN
00011111100110101110101100110000
10110000000010010110100101011011
01000001101111100110100110000010
00010010110011101101010110111010
=
BIN
01001101101000101100010000100011
10110101010010011101000110110110
00001111011010110001001010001011
10000010001111010011110010110000

State Matrix

HEX
4da2c423
b549d1b6
0f6b128b
823d3cb0
BIN
01001101101000101100010000100011
10110101010010011101000110110110
00001111011010110001001010001011
10000010001111010011110010110000
DEC
077162196035
181073209182
015107018139
130061060176
Mix Columns
HEX
4544632d
f6e42d7d
edecc3c2
2bf1b63c
BIN
01000101010001000110001100101101
11110110111001000010110101111101
11101101111011001100001111000010
00101011111100011011011000111100
DEC
069068099045
246228045125
237236195194
043241182060
▼ Round 6
Shift Rows
HEX
4544632d
7df6e42d
c3c2edec
f1b63c2b
BIN
01000101010001000110001100101101
01111101111101101110010000101101
11000011110000101110110111101100
11110001101101100011110000101011
DEC
069068099045
125246228045
195194237236
241182060043
Substitute Bytes
HEX
688600fa
13d6aefa
33a85383
2b796d0b
BIN
01101000100001100000000011111010
00010011110101101010111011111010
00110011101010000101001110000011
00101011011110010110110100001011
DEC
104134000250
019214174250
051168083131
043121109011
Add Round Key
BIN
01101000100001100000000011111010
00010011110101101010111011111010
00110011101010000101001110000011
00101011011110010110110100001011
⊕
BIN
00011100100001010111000111011011
01011001101110010110000000110010
11101001111111111101011111101011
10101011110111000001101101101111
=
BIN
01110100000000110111000100100001
01001010011011111100111011001000
11011010010101111000010001101000
10000000101001010111011001100100

State Matrix

HEX
74037121
4a6fcec8
da578468
80a57664
BIN
01110100000000110111000100100001
01001010011011111100111011001000
11011010010101111000010001101000
10000000101001010111011001100100
DEC
116003113033
074111206200
218087132104
128165118100
Mix Columns
HEX
ef92fe5b
1d189f99
89e191c3
1ff5bde4
BIN
11101111100100101111111001011011
00011101000110001001111110011001
10001001111000011001000111000011
00011111111101011011110111100100
DEC
239146254091
029024159153
137225145195
031245189228
▼ Round 7
Shift Rows
HEX
ef92fe5b
991d189f
91c389e1
f5bde41f
BIN
11101111100100101111111001011011
10011001000111010001100010011111
10010001110000111000100111100001
11110101101111011110010000011111
DEC
239146254091
153029024159
145195137225
245189228031
Substitute Bytes
HEX
61740c57
f9de346e
ac33f2e0
77cdaecb
BIN
01100001011101000000110001010111
11111001110111100011010001101110
10101100001100111111001011100000
01110111110011011010111011001011
DEC
097116012087
249222052110
172051242224
119205174203
Add Round Key
BIN
01100001011101000000110001010111
11111001110111100011010001101110
10101100001100111111001011100000
01110111110011011010111011001011
⊕
BIN
00001100100110011111010010101010
10110010111000001101100101010010
01111011000101100010100000111100
00000111011101111100011101110100
=
BIN
01101101111011011111100011111101
01001011001111101110110100111100
11010111001001011101101011011100
01110000101110100110100110111111

State Matrix

HEX
6dedf8fd
4b3eed3c
d725dadc
70ba69bf
BIN
01101101111011011111100011111101
01001011001111101110110100111100
11010111001001011101101011011100
01110000101110100110100110111111
DEC
109237248253
075062237060
215037218220
112186105191
Mix Columns
HEX
1a47bb25
61344418
b917ce5b
432897c4
BIN
00011010010001111011101100100101
01100001001101000100010000011000
10111001000101111100111001011011
01000011001010001001011111000100
DEC
026071187037
097052068024
185023206091
067040151196
▼ Round 8
Shift Rows
HEX
1a47bb25
18613444
ce5bb917
2897c443
BIN
00011010010001111011101100100101
00011000011000010011010001000100
11001110010110111011100100010111
00101000100101111100010001000011
DEC
026071187037
024097052068
206091185023
040151196067
Substitute Bytes
HEX
4316fec2
34d82886
ec57db87
ee858864
BIN
01000011000101101111111011000010
00110100110110000010100010000110
11101100010101111101101110000111
11101110100001011000100001100100
DEC
067022254194
052216040134
236087219135
238133136100
Add Round Key
BIN
01000011000101101111111011000010
00110100110110000010100010000110
11101100010101111101101110000111
11101110100001011000100001100100
⊕
BIN
00111001100101010110110101011110
01001000010100100011100110001011
00010110011011010011111000010100
01011111011100001011000010110011
=
BIN
01111010100000111001001110011100
01111100100010100001000100001101
11111010001110101110010110010011
10110001111101010011100011010111

State Matrix

HEX
7a83939c
7c8a110d
fa3ae593
b1f538d7
BIN
01111010100000111001001110011100
01111100100010100001000100001101
11111010001110101110010110010011
10110001111101010011100011010111
DEC
122131147156
124138017013
250058229147
177245056215
Mix Columns
HEX
53efdebe
61bad748
49c11600
36524023
BIN
01010011111011111101111010111110
01100001101110101101011101001000
01001001110000010001011000000000
00110110010100100100000000100011
DEC
083239222190
097186215072
073193022000
054082064035
▼ Round 9
Shift Rows
HEX
53efdebe
4861bad7
160049c1
52402336
BIN
01010011111011111101111010111110
01001000011000011011101011010111
00010110000000000100100111000001
01010010010000000010001100110110
DEC
083239222190
072097186215
022000073193
082064035054
Substitute Bytes
HEX
50619c5a
d4d8c00d
ff52a4dd
48723224
BIN
01010000011000011001110001011010
11010100110110001100000000001101
11111111010100101010010011011101
01001000011100100011001000100100
DEC
080097156090
212216192013
255082164221
072114050036
Add Round Key
BIN
01010000011000011001110001011010
11010100110110001100000000001101
11111111010100101010010011011101
01001000011100100011001000100100
⊕
BIN
00001010101011001111100000110011
10101101000110100110101110110010
01101101011110110101001100101010
10011100001011111100000000000011
=
BIN
01011010110011010110010001101001
01111001110000101010101110111111
10010010001010011111011111110111
11010100010111011111001000100111

State Matrix

HEX
5acd6469
79c2abbf
9229f7f7
d45df227
BIN
01011010110011010110010001101001
01111001110000101010101110111111
10010010001010011111011111110111
11010100010111011111001000100111
DEC
090205100105
121194171191
146041247247
212093242039
Mix Columns
HEX
71e05ba6
56cbac4f
73f24734
31a27adb
BIN
01110001111000000101101110100110
01010110110010111010110001001111
01110011111100100100011100110100
00110001101000100111101011011011
DEC
113224091166
086203172079
115242071052
049162122219
▼ Round 10
Shift Rows
HEX
71e05ba6
4f56cbac
473473f2
a27adb31
BIN
01110001111000000101101110100110
01001111010101101100101110101100
01000111001101000111001111110010
10100010011110101101101100110001
DEC
113224091166
079086203172
071052115242
162122219049
Substitute Bytes
HEX
2ca057c5
92b959aa
16288f04
1abd9f2e
BIN
00101100101000000101011111000101
10010010101110010101100110101010
00010110001010001000111100000100
00011010101111011001111100101110
DEC
044160087197
146185089170
022040143004
026189159046
Add Round Key
BIN
00101100101000000101011111000101
10010010101110010101100110101010
00010110001010001000111100000100
00011010101111011001111100101110
⊕
BIN
00111101101001100101010011001011
00011011101101110111000111011001
01000011000101100010100001111001
10000011101100111110111111000011
=
BIN
00010001000001100000001100001110
10001001000011100010100001110011
01010101001111101010011101111101
10011001000011100111000011101101

State Matrix

HEX
1106030e
890e2873
553ea77d
990e70ed
BIN
00010001000001100000001100001110
10001001000011100010100001110011
01010101001111101010011101111101
10011001000011100111000011101101
DEC
017006003014
137014040115
085062167125
153014112237
Mix Columns
HEX
f315aee7
a88d0be5
1f5de955
10fdb0ba
BIN
11110011000101011010111011100111
10101000100011010000101111100101
00011111010111011110100101010101
00010000111111011011000010111010
DEC
243021174231
168141011229
031093233085
016253176186
▼ Round 11
Shift Rows
HEX
f315aee7
e5a88d0b
e9551f5d
fdb0ba10
BIN
11110011000101011010111011100111
11100101101010001000110100001011
11101001010101010001111101011101
11111101101100001011101000010000
DEC
243021174231
229168141011
233085031093
253176186016
Substitute Bytes
HEX
7e2fbeb0
2a6fb49e
ebedcb8d
21fcc07c
BIN
01111110001011111011111010110000
00101010011011111011010010011110
11101011111011011100101110001101
00100001111111001100000001111100
DEC
126047190176
042111180158
235237203141
033252192124
Add Round Key
BIN
01111110001011111011111010110000
00101010011011111011010010011110
11101011111011011100101110001101
00100001111111001100000001111100
⊕
BIN
11111110100110111111001010011111
11001010101011001100011010101000
00110010010101010011111001010001
01011000001100000101110000101100
=
BIN
10000000101101000100110000101111
11100000110000110111001000110110
11011001101110001111010111011100
01111001110011001001110001010000

State Matrix

HEX
80b44c2f
e0c37236
d9b8f5dc
79cc9c50
BIN
10000000101101000100110000101111
11100000110000110111001000110110
11011001101110001111010111011100
01111001110011001001110001010000
DEC
128180076047
224195114054
217184245220
121204156080
Mix Columns
HEX
a5713bad
5a122b2b
677b2c6f
581b6b7c
BIN
10100101011100010011101110101101
01011010000100100010101100101011
01100111011110110010110001101111
01011000000110110110101101111100
DEC
165113059173
090018043043
103123044111
088027107124
▼ Round 12
Shift Rows
HEX
a5713bad
2b5a122b
2c6f677b
1b6b7c58
BIN
10100101011100010011101110101101
00101011010110100001001000101011
00101100011011110110011101111011
00011011011010110111110001011000
DEC
165113059173
043090018043
044111103123
027107124088
Substitute Bytes
HEX
292c4918
0b46390b
42060a03
4405015e
BIN
00101001001011000100100100011000
00001011010001100011100100001011
01000010000001100000101000000011
01000100000001010000000101011110
DEC
041044073024
011070057011
066006010003
068005001094
Add Round Key
BIN
00101001001011000100100100011000
00001011010001100011100100001011
01000010000001100000101000000011
01000100000001010000000101011110
⊕
BIN
01100001011001010110100101101101
01100010011001100110101001101110
01100011011001110110101101101111
01100100011010000110110001110000
=
BIN
01001000010010010010000001110101
01101001001000000101001101100101
00100001011000010110000101101100
00100000011011010110110100101110

State Matrix

HEX
48492075
69205365
2161616c
206d6d2e
BIN
01001000010010010010000001110101
01101001001000000101001101100101
00100001011000010110000101101100
00100000011011010110110100101110
DEC
072073032117
105032083101
033097097108
032109109046

Deciphered Text: b'Hi! I am Samuel.'