This is a re-implementation of AES in safe Rust, with zero dependencies. The core algorithm is ported from AES core in OpenSSL 1.1.1 stable. This library strives to be:
Currently, this library supports 128-bit, 192-bit and 256-bit keys with CBC mode and CFB128 mode.
```rust use libaes::Cipher;
let my_key = b"This is the key!"; // key is 128-bit (16 bytes) let plaintext = b"A plaintext"; let iv = b"This is 16 bytes";
// Create a new cipher let cipher = Cipher::new128(mykey);
// Encryption let encrypted = cipher.cbc_encrypt(iv, plaintext);
// Decryption let decrypted = cipher.cbc_decrypt(iv, &encrypted[..]);
```
We use the test data in NIST Special Publication 800-38A to verify the cipher, see the test code.
Licensed under either of
at your option.
Contributions are welcome! Please open an issue in GitHub if any questions.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the above license(s), shall be dual licensed as above, without any additional terms or conditions.