Skip to content

Collection of block cipher algorithms written in pure Rust

Notifications You must be signed in to change notification settings

RustCrypto/block-ciphers

Repository files navigation

RustCrypto: block ciphers

Project Chat dependency status Apache2/MIT licensed HAZMAT

Collection of block ciphers written in pure Rust.

Higher level constructions

Crates in this repository implement ONLY raw block cipher functionality defined by traits in the cipher crate. In practice block ciphers are rarely used in isolation. Instead, they usually play role of a building block for higher level constructions. In RustCrypto such constructions are implemented generically over block ciphers in separate repositories:

Most users should use constructions defined in these repositories without directly relying on raw block cipher functionality.

Warnings

Currently only the aes crate provides constant-time implementation and has received a third-party security audit.

Other crates in this repository are not implemented in a constant-time manner and have not yet received any formal cryptographic and security reviews.

It's generally recommended not to use other cipher implementations in this repository besides the aes crate.

USE AT YOUR OWN RISK.

Supported algorithms

Name Crate name crates.io Docs MSRV
AES (Rijndael) aes crates.io Documentation MSRV 1.65
ARIA aria crates.io Documentation MSRV 1.65
BelT block cipher belt-block crates.io Documentation MSRV 1.65
Blowfish blowfish crates.io Documentation MSRV 1.65
Camellia camellia crates.io Documentation MSRV 1.65
CAST5 (CAST-128) cast5 crates.io Documentation MSRV 1.65
CAST6 (CAST-256) cast6 crates.io Documentation MSRV 1.65
DES + 3DES (DEA, 3DEA) des crates.io Documentation MSRV 1.65
IDEA idea crates.io Documentation MSRV 1.65
Kuznyechik (GOST R 34.12-2015) kuznyechik crates.io Documentation MSRV 1.65
Magma (GOST R 34.12-2015) magma crates.io Documentation MSRV 1.65
RC2 (ARC2) rc2 crates.io Documentation MSRV 1.65
RC5 rc5 crates.io Documentation MSRV 1.65
Serpent serpent crates.io Documentation MSRV 1.65
SM4 sm4 crates.io Documentation MSRV 1.65
Speck speck-cipher crates.io Documentation MSRV 1.65
Threefish threefish crates.io Documentation MSRV 1.65
Twofish twofish crates.io Documentation MSRV 1.65
XTEA xtea crates.io Documentation MSRV 1.65

Minimum Supported Rust Version (MSRV) Policy

MSRV bump is considered a breaking change and will be performed only with a minor version bump.

License

All crates licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.