For a single block of 16 bytes...
The following is the workflow of AES-128 FIPS-197 which produces the correct output using NIST test vector from page 35:
C.1 AES-128 (Nk=4, Nr=10)
PLAINTEXT: 00112233445566778899aabbccddeeff
KEY: 000102030405060708090a0b0c0d0e0f
CIPHERTEXT: 69c4e0d86a7b0430d8cdb78070b4c55a
- Input PlainText XOR Cipher Key =
- (Start of Round 1, SubBytes, ShiftRows, MixColumns) XOR RoundKey 1 =
- (Start of Round 2, SubBytes, ShiftRows, MixColumns) XOR RoundKey 2 =
- (Start of Round 3, SubBytes, ShiftRows, MixColumns) XOR RoundKey 3 =
- (Start of Round 4, SubBytes, ShiftRows, MixColumns) XOR RoundKey 4 =
- (Start of Round 5, SubBytes, ShiftRows, MixColumns) XOR RoundKey 5 =
- (Start of Round 6, SubBytes, ShiftRows, MixColumns) XOR RoundKey 6 =
- (Start of Round 7, SubBytes, ShiftRows, MixColumns) XOR RoundKey 7 =
- (Start of Round 8, SubBytes, ShiftRows, MixColumns) XOR RoundKey 8 =
- (Start of Round 9, SubBytes, ShiftRows, MixColumns) XOR RoundKey 9 =
- (Start of Round 10, SubBytes, ShiftRows) XOR RoundKey 10 =
- Output CipherText
Screenshot
Next, is the workflow of AES-128 in CBC mode which does not produce the correct output using NIST Test Values from Cryptographic Standards and Guidelines under section Rijndael Information:
FILENAME: "cbc_e_m.txt"
Cipher Block Chaining (CBC) Mode - ENCRYPTION
Monte Carlo Test
Algorithm Name: Rijndael
Principal Submitter: Joan Daemen
==========
KEYSIZE=128
I=0
KEY=00000000000000000000000000000000
IV=00000000000000000000000000000000
PT=00000000000000000000000000000000
CT=8A05FC5E095AF4848A08D328D3688E3D
I=1
KEY=8A05FC5E095AF4848A08D328D3688E3D
IV=8A05FC5E095AF4848A08D328D3688E3D
PT=204F17E2444381F6114FF53934C0BCD3
CT=192D9B3AA10BB2F7846CCBA0085C657A
- (Input PlainText XOR InitializationVector) XOR Cipher Key =
- (Start of Round 1, SubBytes, ShiftRows, MixColumns) XOR RoundKey 1 =
- (Start of Round 2, SubBytes, ShiftRows, MixColumns) XOR RoundKey 2 =
- (Start of Round 3, SubBytes, ShiftRows, MixColumns) XOR RoundKey 3 =
- (Start of Round 4, SubBytes, ShiftRows, MixColumns) XOR RoundKey 4 =
- (Start of Round 5, SubBytes, ShiftRows, MixColumns) XOR RoundKey 5 =
- (Start of Round 6, SubBytes, ShiftRows, MixColumns) XOR RoundKey 6 =
- (Start of Round 7, SubBytes, ShiftRows, MixColumns) XOR RoundKey 7 =
- (Start of Round 8, SubBytes, ShiftRows, MixColumns) XOR RoundKey 8 =
- (Start of Round 9, SubBytes, ShiftRows, MixColumns) XOR RoundKey 9 =
- (Start of Round 10, SubBytes, ShiftRows) XOR RoundKey 10 =
- Output CipherText
Screenshot
My question is regarding CBC. Am I missing something based on the CBC workflow I've listed above? Keep in mind this is just for a single block. The only block.