A specification for password hashing libraries in Elixir, providing a unified interface for Argon2, Bcrypt, and Pbkdf2.
Comeonin is a specification for password hashing libraries in the Elixir programming language. It defines a common interface that libraries like argon2_elixir, bcrypt_elixir, and pbkdf2_elixir implement, allowing developers to hash passwords securely with a consistent API. It solves the problem of fragmented password hashing implementations by providing a standardized behavior across different algorithms.
Elixir developers building applications that require secure user authentication and password storage, particularly those who need flexibility in choosing hashing algorithms based on security requirements or platform constraints.
Developers choose Comeonin because it offers a unified, specification-driven approach to password hashing in Elixir, ensuring interoperability between libraries and promoting the use of strong, up-to-date algorithms like Argon2. It simplifies security best practices by abstracting algorithm-specific details behind a consistent interface.
Password hashing specification for the Elixir programming language
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Defines common behaviours (Comeonin and Comeonin.PasswordHash) that libraries implement, ensuring consistent API usage across different algorithms, as stated in the README's specification approach.
Supports multiple hashing algorithms including Argon2 (recommended), Bcrypt, and Pbkdf2, allowing developers to select based on security needs or platform constraints, with clear guidance in the README.
Offers Pbkdf2 as a pure-Elixir alternative for environments where compiling C dependencies is challenging, specifically mentioned for Windows users in the README to ease deployment.
Promotes the use of strong, modern hashing functions like Argon2 that are resistant to GPU and hardware-based attacks, guiding developers towards secure implementations as highlighted in the README.
As a specification, Comeonin requires installing separate libraries (e.g., argon2_elixir, bcrypt_elixir) for each algorithm, adding complexity compared to a single, bundled package.
For Windows users, the recommended Argon2 and Bcrypt require compiling C code, which can be problematic and forces reliance on the less secure Pbkdf2 option, as admitted in the README's 'Windows users' section.
The specification adds an extra layer of abstraction, which might introduce a learning curve or overhead for developers who prefer direct, low-level library usage without intermediary specs.