I’m writing a password manager that will be using the Argon2 function. At the moment there are 3 crates that provide it: argon2rs, rust-argon2 and argonautica.
argon2rs is by far the most popular, is written in pure Rust and uses SIMD, but hasn’t been updated in 3 years and does not implement Argon2id variant.
argonautica is the most idiomatic and well documented. It was updated recently, implements Argon2id, uses SIMD and is generally speaking pretty awesome, but wraps around the reference implementation in C, rather than provide a pure Rust implementation. Author claims to be planning to include a Rust implementation at some point, but considering the fairly slow development I’m unsure if that will ever be the case.
rust-argon2 is written in pure Rust, implements Argon2id and was recently updated, but it claims to be unoptimized and does not use SIMD.
I’m leaning towards argonautica since I will likely need to use non-pure Rust for GUI anyway, but I would like to hear opinions of more experienced programmers.