Encrypt a large file or byte stream in segments without loading it all into memory.
Randomly seek into and verify a specific authenticated range of an encrypted file.
Encrypt or decrypt a live stream of data segment by segment as it arrives.
| int08h/fast-floe | 04amanrajj/netwatch | 0xr10t/pulsefi | |
|---|---|---|---|
| Stars | 0 | 0 | 0 |
| Language | Rust | Rust | Rust |
| Setup difficulty | easy | moderate | hard |
| Complexity | 3/5 | 3/5 | 4/5 |
| Audience | developer | ops devops | developer |
Figures from each repo's GitHub metadata at analysis time.
Add the fast-floe crate from crates.io, aws-lc-rs is the default cryptography provider.
fast-floe is a Rust library that implements FLOE, short for Fast Lightweight Online Encryption, a published specification for encrypting large files or continuous streams of data. Instead of encrypting a whole message as one block, FLOE splits it into segments that are each encrypted and authenticated on their own, which means you can encrypt or decrypt a large file piece by piece without holding the whole thing in memory, and a reader can jump to and verify any segment directly instead of reading the file from the start. This approach is meant for cases involving very large amounts of data, streaming data where the total size is not known in advance, data that might arrive out of order, and situations where you need to read a scrambled file at a random point rather than start to finish. When encrypting, you choose between a 4 kilobyte or 1 megabyte segment size: smaller segments make random access cheaper, while larger segments give higher overall throughput. The library supports several different underlying cryptography providers, including aws-lc-rs, boring, ring, and RustCrypto, and all of them produce the exact same encrypted format regardless of which one is chosen, so they can be swapped without breaking compatibility. The library offers several layers of API depending on how much control you need. At the simplest level, encrypt and decrypt functions handle everything in memory in one call. A streaming layer works with ordinary Rust Read and Write types so memory use stays bounded while processing a file or socket. A random access layer lets you read specific authenticated byte ranges out of a seekable ciphertext. A lower level segment based API is available for cases where segments need to be handled manually, for example in a custom transport or in parallel. The library is added to a Rust project through Cargo by depending on the fast-floe crate from crates.io, and the crate refers to itself internally as fast_floe. aws-lc-rs is used as the default cryptography provider unless another one is chosen instead.
fast-floe is a Rust implementation of the FLOE encryption spec for authenticating and encrypting large files or streams in bounded memory, with random-access reads.
Mainly Rust. The stack also includes Rust.
Setup difficulty is rated easy, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
double-check against the repo, no cap.