About Me
Policy Analysis

Cryptographic Technology Interests

Current AES Code with Optional Support for Intel AES NI and VIA ACE

My current AES code is available here.

Code for AES and Combined Encryption/Authentication Modes

Here is C code for AES and a number of the combined encryption/authentication modes being studied by NIST.   This code contains an earlier version of my AES code but the modes source code should work with my current AES code (linked above).

Older C Code for AES and Rijndael in C/C++

Here is my previous C/C++ code for AES and Rijndael (with full Rijndael support).

SHA1, SHA2, HMAC and Key Derivation in C

Here is C code for these algorithms.

A Password Based File Encryption Example with AES and HMAC-SHA1

The code described and provided here puts a number of the algorithms available on these pages together to provide an example of password based file encryption.  This has been used by WinZip as a basis for its standard for the encryption of WinZip archives described here.

The Advanced Encryption Standard (AES) Development Effort

       AES First Round

DES is arguably the most important cryptographic algorithm that the world has seen. It is used in many products and has stood the test of time in that after many years of international scrutiny no-one has found a significant attack on it.

However it is now widely recognised that DES is near the end of its life and the US National Institute of Standards and Technology (NIST) is running a far sighted effort to replace DES with a new algorithm, the Advanced Encryption Standard (AES), selected through competition. .  This effort, which is described in more detail here, has been seeking algorithm nominations in a process that has now been completed.  The list of candidates that were successful in the first selection round is now known and work is now underway to determine their cryptographic strength and their performance.

I have no doubt that AES will replace DES as soon as it is available and the competition now going on is of enormous significance for the future of protective information security.  All paper submissions for AES are openly available from NIST but algorithm source code falls within US export control constraints which limit the availability of some implementations.

I am taking a strong interest in the AES activity and, since my interests are in implementation, I have decided to see what is involved in implementing a number of the AES candidate algorithms from scratch using the paper descriptions rather than any published source code as a basis.  This will hopefully show that the paper descriptions are sound whilst also providing an independent implementation of at least some of the algorithms being submitted. 

The results of this work are given here

Here are papers I have written on a number of aspects of the AES effort:

  • AES Algorithm Performance Assessment � gladman.pdf  (45.12KB, 46204 bytes)
  • The Need for Multiple AES Winners � winners.pdf (39.60KB, 40547 bytes)
  • AES Input Output Conventions � bit_order.pdf (65.72KB, 67295 bytes)

AES Second Round

In early August this year (1999) NIST selected five algorithms � Mars, Rc6, Rijndael, Serpent and Twofish the second round and invited extensive study of them.  I have made a start by doing some recoding to look at performance in both C and C++ and the results are given here.

The AES Winner - Rijndael

RIjndael has been selected as the AES algorithm and here is my code for the algorithm in C++ .


I have worked on Serpent, the AES candidate with UK content, to improve its implementation performance using a boolean function analyser.   I have also worked with Sam Simpson to search for for efficient decompositions of the Serpent S-boxes.  Further details of this work are here.

Back to Brian Gladman's Home Page