#aes #encryption-decryption #crypto

aes_frast

An easy-to-use lib for AES encryption and decryption, coded in pure safe Rust-lang

7 releases

0.2.2 Aug 20, 2023
0.2.1 Nov 3, 2022
0.1.5 Jun 16, 2019
0.1.4 Jan 8, 2019
0.1.2 Apr 23, 2018

#569 in Cryptography

22 downloads per month
Used in 4 crates (2 directly)

Apache-2.0

130KB
1.5K SLoC

aes_frast

NOT for Serious Usage
aes_frast is an easy-to-use lib for AES encryption and decryption, coded in pure safe Rust-lang. The AES algorithm is implemented by looking-up-tables.
In the name aes_frast, "frast" is a mix of the words "rust" and "fast". These lib is designed to run as fast as possible on pure Rust-lang code, no ASM.

Compatibility

Functions in this lib is compatible with OpenSSL if they can be found in OpenSSL although maybe in different names.

Security

Any cryptographic audit of this lib has NEVER been conducted. So, please be extremely careful when you are looking for high security.
The author tries to make it more secure, but never gives any guarantee of security.
In addition, some researches have reported that there could be timing problems in looking-up-tables implement. However, this lib assumes that the computers which run the lib are secure and users of this lib have done something to avoid the timing problems. Usages like file encryption may be suitable. Maybe, this lib is for somebody who just wants to know the structure of AES.

Features

  • 128bit, 192bit, 256bit key-size and fixed 128bit block-size.
  • ECB, CBC, CFB, OFB operation mode (with experimental PCBC mode and CFB8 mode).
  • ANSIX923, PKCS #7, Zeros padding and depadding.
  • Single-block process.
  • Working keys scheduling.

Examples

Please see the doc.

Next version? [HELP-WANTED]

In the future, what will the lib be?
I don't know.
Maybe the following will be considered, maybe not:

  1. CTR and GCM operation modes.
  2. Hash functions and HMAC.
  3. PBKDF2 and other key derivation functions.
  4. FFI.
  5. Try to speed up!
  6. More security and audits if possible.

Pull requests are always welcome. Thank all of you.

No runtime deps