docs-overrides | Add `mkdocstrings-python` to documentation page footer | 2024-07-21 23:52:53 |
---|---|---|
docs | Switch from towncrier to scriv for changelog management | 2024-09-27 21:35:32 |
examples | Add example for "storeroom"-type data export | 2024-08-04 09:36:49 |
src | Add hypothesis-based tests (and bugfix) for the vault derivation scheme | 2024-09-27 19:05:16 |
tests | Add hypothesis-based tests (and bugfix) for the vault derivation scheme | 2024-09-27 19:05:16 |
.gitignore | Set up the "hypothesis" testing library | 2024-09-27 17:32:46 |
CHANGELOG.md | ||
Keep_a_changelog-E05735.svg | ||
LICENSE.txt | Import initial project files | 2024-05-05 11:57:20 |
README.md | Fix version typo in README | 2024-09-12 13:35:41 |
SemVer-3F4551.svg | ||
mkdocs.yml | Reintegrate all functionality as subcommands | 2024-09-11 12:20:16 |
mkdocs_offline.yml | Add alternate MkDocs configuration for building offline documentation | 2024-07-22 14:05:42 |
pyproject.toml | Switch from towncrier to scriv for changelog management | 2024-09-27 21:35:32 |
An almost faithful Python reimplementation of James Coglan's vault
, a deterministic password manager/generator.
Using a master passphrase or a master SSH key, derive a passphrase for a given named service, subject to length, character and character repetition constraints. The derivation is cryptographically strong, meaning that even if a single passphrase is compromised, guessing the master passphrase or a different service's passphrase is computationally infeasible. The derivation is also deterministic, given the same inputs, thus the resulting passphrase need not be stored explicitly. The service name and constraints themselves also need not be kept secret; the latter are usually stored in a world-readable file.
pip
$ pip install derivepassphrase
derivepassphrase
is a pure Python package, and may be easily installed manually by placing the respective files and the package's dependencies into Python's import path.
derivepassphrase
requires Python 3.10 or higher as well as the typing-extensions package for its core functionality and programmatic interface, and click
8.1 or higher for its command-line interface.
Using the export vault
subcommand additionally requires the cryptography package, version 38.0 or newer.
$ derivepassphrase vault -p --length 30 --upper 3 --lower 1 --number 2 --space 0 --symbol 0 my-email-account
Passphrase: This passphrase is for demonstration purposes only.
JKeet7GeBpxysOgdCEJo6UzmP8A0Ih
Some time later…
$ derivepassphrase vault -p --length 30 --upper 3 --lower 1 --number 2 --space 0 --symbol 0 my-email-account
Passphrase: This passphrase is for demonstration purposes only.
JKeet7GeBpxysOgdCEJo6UzmP8A0Ih
(The user input This passphrase is for demonstration purposes only.
for the passphrase prompt is not actually displayed on-screen.)
derivepassphrase
is distributed under the terms of the MIT license.