| Crates.io | prolock |
| lib.rs | prolock |
| version | 1.1.3 |
| created_at | 2025-02-26 09:52:20.707407+00 |
| updated_at | 2026-01-20 12:23:01.122293+00 |
| description | ProLock is a tool for securely storing secrets like passwords and plain text snippets in a password-protected file. |
| homepage | |
| repository | https://github.com/emabee/rust-prolock |
| max_upload_size | |
| id | 1570218 |
| size | 3,758,157 |
ProLock is a small utility to manage secrets, storing them in a password-secured file.
There are some secrets that you might not want to manage in any browser's password store, e.g. the passwords for your bank accounts.
ProLock allows managing secrets in a minimalistic and secure fashion:
See https://github.com/emabee/rust-prolock/blob/main/INSTALLATION.md.
See images in https://github.com/emabee/rust-prolock/tree/main/doc/screenshots.
ProLock protects the sensitive part of the data with ChaCha20-Poly1305, an AEAD (authenticated encryption with associated data) algorithm that combines the ChaCha20 stream cipher with the Poly1305 message authentication code.
ChaCha20-Poly1305 takes as input a 256-bit key and a 96-bit nonce to encrypt a plaintext. ProLock uses PBKDF2 (password-based key derivation function 2) with 91,232 rounds to derive the key from a user-provided password, and generates new values for the salt (for PBKDF2) and for the nonce with every update to the file.
ProLock provides a UI to manage the data conveniently.
The UI is written in rust, with the egui framework.
It supports currently two languages, English and German; other languages can easily be added.
ProLock only reads and writes to files in the local host's file system.
By default, ProLock uses the user-specific file ~/.prolock/secrets,
but you can use any other file name and location.
ProLock does not interact with any cloud service etc.
ProLock detects concurrent changes to the file and refuses to overwrite them.
The data model consists of Entrys, each of which has
The file contains
pbkdf2.The file format allows sneaking into the file with a plain text editor to have a glimpse on the unprotected part, as you can see the names and the descriptions of the contained entries, but the protected part is safely encrypted.
Note that decrypting the encrypted part requires not only the right passphrase as input, but also the unmodified content of the readable part. Every modification of the unprotected part prevents the decryption of the protected part.