This week I proceeded with my second and third application. I made use of two new algorithms: CFB (Block Cipher mode of operation) and GCM (Galius/Counter mode of operation). GCM is an asymmetric key encryption algorithm and thus the key for both encryption and decryption is different. CFB is a symmetric key encryption algorithm and thus the key for both encryption and decryption is the same. I tested all of these algorithms and compiled the time to get the set key, the encrypted message, and decrypted message.

Here are the results for the CFB algorithm:

Test Vectors:

AES-128- CFB #1 … Passed

AES-128- CFB #2 … Passed

Performance Tests:

AES-128- CFB Encrypt … 35.31us per byte, 28322.04 bytes per second

AES-128- CFB Decrypt … 35.75us per byte, 27972.27 bytes per second

Here are the results for the GCM algorithm:

State Sizes:

GCM<AES128> … 284

GCM<AES192> … 316

GCM<AES256> … 348

GCM<Speck> … 378

GCM<SpeckTiny> … 138

Test Vectors:

AES-128 GCM #1 … Passed

AES-128 GCM #2 … Passed

AES-128 GCM #3 … Passed

AES-128 GCM #4 … Passed

AES-128 GCM #5 … Passed

AES-192 GCM #10 … Passed

AES-256 GCM #16 … Passed

Performance Tests:

AES-128 GCM #1 SetKey … 1478.80us per operation, 676.23 per second

AES-128 GCM #1 Encrypt … 110.07us per byte, 9084.78 bytes per second

AES-128 GCM #1 Decrypt … 109.64us per byte, 9121.01 bytes per second

AES-128 GCM #1 AddAuthData … 74.75us per byte, 13378.78 bytes per second

AES-128 GCM #1 ComputeTag … 1289.53us per operation, 775.48 per second

AES-192 GCM #10 SetKey … 1734.66us per operation, 576.48 per second

AES-192 GCM #10 Encrypt … 116.83us per byte, 8559.74 bytes per second

AES-192 GCM #10 Decrypt … 116.39us per byte, 8591.90 bytes per second

AES-192 GCM #10 AddAuthData … 74.75us per byte, 13378.78 bytes per second

AES-192 GCM #10 ComputeTag … 1289.53us per operation, 775.48 per second

AES-256 GCM #16 SetKey … 1958.45us per operation, 510.61 per second

AES-256 GCM #16 Encrypt … 123.58us per byte, 8092.07 bytes per second

AES-256 GCM #16 Decrypt … 123.14us per byte, 8120.80 bytes per second

AES-256 GCM #16 AddAuthData … 74.75us per byte, 13378.78 bytes per second

AES-256 GCM #16 ComputeTag … 1289.53us per operation, 775.48 per second