Block Ciphers

Block ciphers are a n-bit permutation for some small n, typically 64 or 128 bits. It is a cryptographic primitive used to generate higher level operations such as authenticated encryption. More...

Modules

 Algorithms
 Algorithms are meant to provide encryption interface similar to STL algorithms' one.
 
 Block Cipher Modes
 

Classes

class  nil::crypto3::block::aria< Size >
 Aria. South Korean cipher used in industry there. No reason to use it otherwise. More...
 
class  nil::crypto3::block::blowfish
 Blowfish. A 64-bit cipher popular in the pre-AES era. Very slow key setup. Also used (with bcrypt) for password hashing. More...
 
class  nil::crypto3::block::camellia< Size >
 Camellia. A Japanese design standardized by ISO, NESSIE and CRYPTREC. Somewhat common. Comes in three variants, Camellia-128, Camellia-192, and Camellia-256. Prefer AES or Serpent in new designs. More...
 
class  nil::crypto3::block::cast< Version, KeyBits >
 Cast-family ciphers. Variants available: Cast128, Cast256. More...
 
class  nil::crypto3::block::des
 DES. Triple DES. Originally designed by IBM and NSA in the 1970s. More...
 
class  nil::crypto3::block::gost_28147_89< ParamsType >
 GOST-28147-89 (Magma). 64-bit Russian cipher. Possible security issues. Avoid unless compatibility is needed. More...
 
class  nil::crypto3::block::idea
 Idea. An older but still unbroken 64-bit cipher with a 128-bit key. Somewhat common due to its use in PGP. Avoid in new designs. More...
 
class  nil::crypto3::block::kasumi
 Kasumi. A 64-bit cipher used in 3GPP mobile phone protocols. There is no reason to use it outside of this context. More...
 
class  nil::crypto3::block::md4
 MD4 block cipher. Stands as a foundation for MD4 hash. More...
 
class  nil::crypto3::block::md5
 MD4 block cipher. Stands as a foundation for MD5 hash. More...
 
class  nil::crypto3::block::misty1
 Misty1. A 64-bit Japanese cipher standardized by NESSIE and ISO. Seemingly secure, but quite slow and saw little adoption. No reason to use it in new code. More...
 
class  nil::crypto3::block::noekeon
 Noekeon. A fast 128-bit cipher by the designers of AES. Easily secured against side channels. More...
 
class  nil::crypto3::block::rijndael< KeyBits, BlockBits >
 Rijndael. AES competition winner. More...
 
class  nil::crypto3::block::seed
 Seed. A older South Korean cipher, widely used in industry there. More...
 
class  nil::crypto3::block::serpent< KeyBits >
 Serpent. The most conservative of the AES finalists https://www.cl.cam.ac.uk/~rja14/serpent.html. An AES contender. Widely considered the most conservative design. Fairly slow, especially if no SIMD instruction set is available. More...
 
class  nil::crypto3::block::shacal
 Shacal. Merkle-Damgård construction foundation for SHA hashes. More...
 
class  nil::crypto3::block::shacal1
 Shacal1. Merkle-Damgård construction foundation for SHA1 hashes. More...
 
class  nil::crypto3::block::shacal2< Version >
 Shacal2. Merkle-Damgård construction foundation for SHA2 hashes. Accepts up to a 512-bit key. Fast and seemingly very secure, but obscure. Standardized by NESSIE. More...
 
class  nil::crypto3::block::sm4
 SM4. A 128-bit Chinese national cipher, required for use in certain commercial applications in China. Quite slow. Probably no reason to use it outside of legal requirements. More...
 
class  nil::crypto3::block::threefish< KeyBits >
 Threefish. A variable-key length (512-bit is recommended) tweakable block cipher used in the Skein hash function via Merkle-Damgård construction. Very fast on 64-bit processors. More...
 
class  nil::crypto3::block::twofish< KeyBits >
 Twofish. An AES contender. Somewhat complicated key setup and a "kitchen sink" design. More...
 
class  nil::crypto3::block::xtea
 Xtea. A 64-bit cipher popular for its simple implementation. Avoid in new code. More...
 

Detailed Description

Block ciphers are a n-bit permutation for some small n, typically 64 or 128 bits. It is a cryptographic primitive used to generate higher level operations such as authenticated encryption.