Skip to main content

pypercrypt uses battle-tested cryptography to encrypt your data with the passphrase of your choice and stores the ciphertext inside a QR code.

Project description

pypercrypt 📄🔐

PyPI - Version PyPI - Python Version Checked with mypy pre-commit enabled License EUPL Linting: Ruff

pypercrypt uses battle-tested cryptography to encrypt your data with the passphrase of your choice and stores the ciphertext inside a QR code.

echo "Hello World" > keep-secret.txt
pypercrypt encrypt --input-file keep-secret.txt --output-file ciphertext.json
# Enter passphrase: password
cat ciphertext.json
# {"ciphertext": "gAAAAABlQCb4fKNgX3xI1LHowFUjjXhOf-83DeUgukyUAYAF-hMnQ9eFfNl_V4NBoUuu4ZfAAIkVxIM7Iq2Pfh5JaVW_E-rqXA==", "salt": "JAVWUmK_PSUbvEghki3nNQ=="}
cat ciphertext.json | qrencode -o ciphertext.png
# In future versions pypercrypt will support writing to and reading from QR codes directly
pypercrypt decrypt --input-file <(zbarimg -q --raw ciphertext.png) --output-file -
# Enter passphrase: password
# Hello World

Ciphertext encoded as a QR code

You can store the printed QR code wherever you would trust other encrypted data to stay safe.

Benefits

  • 🔐 Makes encrypted long-term storage easy
  • 📵 Truly offline backups
  • 🖨️ Use what you already have
  • 🔓 No lock-in, no proprietary formats—you don't need this tool to decrypt your data!

Peer-Review

A peer review is pending, so keep that in mind when using pypercrypt for truly sensitive data. Get in touch if you have the required expertise to review this tool.

Installation

pipx (Recommended)

pipx creates a separate virtual environment for each CLI tool it installs and makes the scripts from the package available in your PATH. See installation instructions for pipx.

pipx install pypercrypt

Other

You may install pypercrypt with any tool that can install from pypi.org. See pypercrypt on pypi.org.

Roadmap

Now

  • Encrypt input data and write ciphertext to file
  • Add option to output ciphertext as a printable QR code
  • Decrypt the data, relying on an external QR code scanner like zbarimg
  • Reach 100 % test coverage of the critical code paths before adding new features

Next

  • Decrypt the data straight from an image file containing a QR code
  • Instructions on how to decrypt the data purely with standard tools
  • Maintain 100 % test-coverage of the critical code paths
  • Release v1.0 (until then the CLI and format may be subject to breaking changes)

Later

  • Let relevant experts perform an audit of this software
  • Keep pypercrypt small and auditable by anyone
  • A small scope is a feature
  • Resist temptation to add more features

Never

The following features will never be added to pypercrypt, either because they go against its goals or would make the scope too large.

  • Do not generate passphrases for the user
  • Do not add asymmetric encryption support
  • Do not add a GUI or TUI (if I can't resist, then do it as a separate project using pypercrypt as a library)

Alternatives

  • papercrypt fulfills a similar purpose, is written in Go and not affiliated with this project

License

Licensed under the EUPL. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pypercrypt-0.3.1.tar.gz (8.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pypercrypt-0.3.1-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

File details

Details for the file pypercrypt-0.3.1.tar.gz.

File metadata

  • Download URL: pypercrypt-0.3.1.tar.gz
  • Upload date:
  • Size: 8.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.11.5 Linux/6.5.5-1-MANJARO

File hashes

Hashes for pypercrypt-0.3.1.tar.gz
Algorithm Hash digest
SHA256 951a892cf6755bcb93bc5c26005918da91b22d903c0b5cdc7621d83bd57a5839
MD5 4fbb11ff7ec039346b01e3c353d67643
BLAKE2b-256 b58dbb94a500f6f71be25b580bb1c55db114f935c0067a6e678f5c02df6f4a8c

See more details on using hashes here.

File details

Details for the file pypercrypt-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: pypercrypt-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 9.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.11.5 Linux/6.5.5-1-MANJARO

File hashes

Hashes for pypercrypt-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 25856d90646bce7dd41a96f82298a7d658477c0e4a354ef9aeb70ffa7568acb7
MD5 0758f503b000b1f602a69355a8771b61
BLAKE2b-256 d3c8dcac1479f43202cf8b2b831ca75e40d6d52bb93a2bf3a03d623baf70af56

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page