Skip to content

tex2e/AES

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AES

AES implementation in C.

int input_len = 16;
unsigned char input[16] = {
    0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
    0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff
};
unsigned char key[32] = {
    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
};
unsigned char iv[16] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

// encrypt
unsigned char *ciphertext = (unsigned char *)malloc(input_len);
aes_256_encrypt(input, input_len, ciphertext, iv, key);
printf("ENCRYPTED: "); show_hex(ciphertext, input_len);

// decrypt
unsigned char *plaintext = (unsigned char *)malloc(input_len);
aes_256_decrypt(ciphertext, input_len, plaintext, iv, key);
printf("DECRYPTED: "); show_hex(plaintext, input_len);

main.c

Using test vectors from NIST FIPS 197.

Compile:

$ make

Execute:

$ ./main
PLAINTEXT: 00112233445566778899aabbccddeeff
KEY:       000102030405060708090a0b0c0d0e0f
IV:        00000000000000000000000000000000
ENCRYPTED: 69c4e0d86a7b0430d8cdb78070b4c55a
aes128_enc ... OK

PLAINTEXT: 69c4e0d86a7b0430d8cdb78070b4c55a
KEY:       000102030405060708090a0b0c0d0e0f
DECRYPTED: 00112233445566778899aabbccddeeff
aes128_dec ... OK

PLAINTEXT: 00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff
KEY:       000102030405060708090a0b0c0d0e0f
IV:        00001111222233334444555566667777
ENCRYPTED: efaf1ed725db5235ce5404b2b4c20903e468c8ea3979758b0de43283b7b92b1040731c13f21cda839ab26ba9a4041f6c
DECRYPTED: 00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff
aes128_enc_dec ... OK

ENCRYPTED: 00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff
KEY:       000102030405060708090a0b0c0d0e0f
IV:        00001111222233334444555566667777
DECRYPTED: efaf1ed725db5235ce5404b2b4c20903e468c8ea3979758b0de43283b7b92b1040731c13f21cda839ab26ba9a4041f6c
ENCRYPTED: 00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff
aes128_dec_enc ... OK

PLAINTEXT: 00112233445566778899aabbccddeeff
KEY:       000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
ENCRYPTED: 8ea2b7ca516745bfeafc49904b496089
aes256_enc ... OK

PLAINTEXT: 8ea2b7ca516745bfeafc49904b496089
KEY:       000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
DECRYPTED: 00112233445566778899aabbccddeeff
aes256_dec ... OK

PLAINTEXT: 00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff
KEY:       000102030405060708090a0b0c0d0e0f
IV:        00001111222233334444555566667777
ENCRYPTED: 98388094a692812fb6723442def23a744a79a60774c93d6853e8f7bfef40b94bd94da46aeee07d43ca0d3ba3f615ca07
DECRYPTED: 00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff
aes256_enc_dec ... OK

ENCRYPTED: 00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff
KEY:       000102030405060708090a0b0c0d0e0f
IV:        00001111222233334444555566667777
DECRYPTED: 98388094a692812fb6723442def23a744a79a60774c93d6853e8f7bfef40b94bd94da46aeee07d43ca0d3ba3f615ca07
ENCRYPTED: 00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff
aes256_dec_enc ... OK

About

AES implementation in C

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published