AES implementations

From Wikipedia, the free encyclopedia
Jump to: navigation, search

There are various implementations of the Advanced Encryption Standard, also known as Rijndael.

Libraries[edit]

AES speed at 128, 192 and 256-bit key sizes. [clarification needed]

Rijndael is free for any use public or private, commercial or non-commercial. The authors of Rijndael used to provide a homepage[1] for the algorithm. Care should be taken when implementing AES in software. Like most encryption algorithms, Rijndael was designed on big-endian systems. For this reason, little-endian systems return correct test vector results only through swapping bytes of the input and output words.

The algorithm operates on plaintext blocks of 16 bytes. Encryption of shorter blocks is possible only by padding the source bytes, usually with null bytes. This can be accomplished via several methods, the simplest of which assumes that the final byte of the cipher identifies the number of null bytes of padding added.

Careful choice must be made in selecting the mode of operation of the cipher. The simplest mode encrypts and decrypts each 128-bit block separately. In this mode, called "electronic code book (ECB)", blocks that are identical will be encrypted identically, which is entirely insecure. This will make some of the plaintext structure visible in the ciphertext. Selecting other modes, such as empressing a sequential counter over the block prior to encryption (CTR mode) and removing it after decryption avoids this problem.

C/ASM library[edit]

C++ library[edit]

  • Botan has implemented Rijndael since its very first release in 2001
  • Crypto++ A comprehensive C++ semi-public-domain implementation of encryption and hash algorithms. FIPS validated

C# /.NET[edit]

Java[edit]

Python[edit]

  • PyCrypto - The Python Cryptography Toolkit PyCrypto
  • keyczar - Cryptography Toolkit keyczar

Javascript[edit]

  • SJCL library - contains Javascript implementations of AES in CCM, CBC, OCB and GCM modes - sjcl
  • AES-JS - portable Javascript implementation of AES ECB and CTR modes - aes-js
  • Forge - Javascript implementations of AES in CBC, CTR, OFB, CFB, and GCM modes forge
  • asmCrypto - JavaScript implementation of popular cryptographic utilities with focus on performance. Supports CBC, CFB, CCM, GCM modes. asmcrypto.js
  • pidCrypt - open source JavaScript library. Only supports the CBC and CTR modes. pidCrypt

Applications[edit]

Archive and compression tools[edit]

File system[edit]

Disk encryption[edit]

Security for communications in Local Area Networks[edit]

Miscellaneous[edit]

Hardware[edit]

  • Intel and AMD processors include the AES instruction set.
  • On IBM zSeries mainframes, AES is implemented as the KM series of assembler opcodes when various Message Security Assist facilities are installed.
  • SPARC S3 core processors include the AES instruction set, which is used with SPARC T4 and SPARC T5 systems.

References[edit]