/mini_aes

Mini-AES implementation of https://piazza.com/class_profile/get_resource/ixlc30gojpe5fs/iyv0273azwtz4

Primary LanguageC

EXAMPLE

KEY:

(0) 1100 0011 1111 0000

(1) 0011 0000 1111 1111

(2) 0110 0110 1001 0110

ENCRYPTING:

0110 0001 0000 1010

KEY ADDITION:

0110 0001 0000 1010
-xor-
1100 0011 1111 0000
+++++++++++++++++++
1010 0010 1111 1010

NIBBLE SUBSTITUTION

0110 1101 0111 0110
+++++++++++++++++++
1010 0010 1111 1010

SHIFT ROW

1010 0010 1111 1010
+++++++++++++++++++
0110 0110 0111 1101

MIX COLUMN

0110 0110 0111 1101
+++++++++++++++++++
0110 0110 0011 1001

KEY ADDITION

0110 0110 0011 1001
-xor-
0011 0000 1111 1111
+++++++++++++++++++
0101 0110 1100 0110

NIBBLE SUBSTITUTION

0101 0110 1100 0110
+++++++++++++++++++
1111 1011 0101 1011

SHIFT ROW

1111 1011 0101 1011
+++++++++++++++++++
1111 1011 0101 1011

KEY ADDITION:

1111 1011 0101 1011
-xor-
0110 0110 1001 0110
+++++++++++++++++++
1001 1101 1100 1101

RESULT

1001 1101 1100 1101

DECRYPTING:

1001 1101 1100 1101

KEY ADDITION:

1001 1101 1100 1101
-xor-
0110 0110 1001 0110
+++++++++++++++++++
1111 1011 0101 1011

NIBBLE SUBSTITUTION

1111 1011 0101 1011
+++++++++++++++++++
0101 0110 1100 0110

SHIFT ROW

0101 0110 1100 0110
+++++++++++++++++++
0101 0110 1100 0110

KEY ADDITION

0101 0110 1100 0110
-xor-
0011 0000 1111 1111
+++++++++++++++++++
0110 0110 0011 1001

MIX COLUMN

0110 0110 0011 1001
+++++++++++++++++++
0110 0110 0111 1101

NIBBLE SUBSTITUTION

0110 0110 0111 1101
+++++++++++++++++++
1010 1010 1111 0010

SHIFT ROW

1010 1010 1111 0010
+++++++++++++++++++
1010 0010 1111 1010

KEY ADDITION

1010 0010 1111 1010
-xor-
1100 0011 1111 0000
+++++++++++++++++++
0110 0001 0000 1010

RESULT

0110 0001 0000 1010