
A (mostly) pure-Rust implementation of various common cryptographic algorithms.
Rust-Crypto seeks to create practical, auditable, pure-Rust implementations of common cryptographicalgorithms with a minimum amount of assembly code where appropriate. The x86-64, x86, andARM architectures are supported, although the x86-64 architecture receives the most testing.
Rust-Crypto targets the current, stable build of Rust.If you are having issues while using an older version, please try upgrading to the latest stable.
Rust-Crypto has not been thoroughlyaudited for correctness, so any use where security is important is not recommended at this time.
To use Rust-Crypto, add the following to your Cargo.toml:
[dependencies]rust-crypto ="^0.2"
and the following to your crate root:
Contributions are extremely welcome. The most significant needs are helpadding documentation, implementing new algorithms,and general cleanup and improvement of the code. By submitting a pull request you are agreeing tomake you work available under the licenseterms of the Rust-Crypto project.
Rust-Crypto is dual licensed under the MIT and Apache 2.0 licenses, the same licensesas the Rust compiler.
Rust-Crypto already supports a significant number of algorithms and with your helpit will support even more in the future. Currently supported algorithms include:
- AES
- Bcrypt
- BLAKE2b
- BLAKE2s
- Blowfish
- ChaCha20
- Curve25519
- ECB, CBC, and CTR block cipher modes
- Ed25519
- Fortuna
- Ghash
- HC128
- HMAC
- MD5
- PBKDF2
- PKCS padding for CBC block cipher mode
- Poly1305
- RC4
- RIPEMD-160
- Salsa20 and XSalsa20
- Scrypt
- Sha1
- Sha2 (All fixed output size variants)
- Sha3
- Sosemanuk
- Whirlpool