Skip to main content

vcrypto - Secure Secrets Management in Python

vcrypto is a simple and effective utility for securely storing passwords and secrets in Python. It leverages Fernet encryption from the cryptography module instead of reinventing the wheel.

🔒 Why vcrypto?

Managing secrets in Python, especially in collaborative projects, can be cumbersome. Our approach simplifies it:

👉 One master private password (ignored in Git)
👉 A structured dictionary file with encrypted secrets
👉 Easily shareable - only the master password needs to be exchanged once
👉 Version-controlled secrets - since only encrypted values are stored

This package makes it easy to store and retrieve encrypted secrets in JSON or YAML formats.


📌 Features

  • 🔐 AES-128 Encryption (Fernet) for secure storage.
  • 📂 JSON/YAML Support for structured secret storage.
  • 🛠️ Environment Variable Support for flexible key management.
  • 🔑 Simple API for saving and retrieving secrets.

📝 Installation

Install via pip:

pip install vcrypto

🚀 Quickstart

1️⃣ Initialize vcrypto

Before using vcrypto, initialize it with:

from vcrypto import init_vcrypto

init_vcrypto(secrets_file="secrets.yaml", environ_var_name="MY_ENV_VAR")

[!TIP] You only need to initialize it once.

This ensures vcrypto knows where to store secrets and how to retrieve the master password.

2️⃣ Store and Retrieve Secrets

Save a Secret

from vcrypto import save_secret

save_secret("SECRET_TOKEN", "super_secret_value")

Retrieve a Secret

from vcrypto import read_secret

token = read_secret("SECRET_TOKEN")
print(token)  # Output: super_secret_value

⚙️ Customization

The init_vcrypto function allows customization:

Parameter Description
secrets_file Path to the encrypted secrets file (JSON/YAML)
filename_master_password Path to the master password file (optional, defaults to master.password)
environ_var_name Name of an environment variable to retrieve the master password

Example:

init_vcrypto(secrets_file="config/secrets.yaml", filename_master_password="config/master.password")

This setup stores both the master.password and secrets.yaml in the config/ folder.

[!CAUTION] The master password file must never be committed. The bundled .gitignore only excludes *.password, so if you choose a custom name make sure it is covered by your .gitignore. Committing the master password alongside the encrypted secrets.yaml defeats the entire scheme.


🛠️ Development

This project uses uv for dependency management.

Install dependencies

pip install uv
uv venv
uv install

💜 License

This project is licensed under the MIT License.


👤 Author


Download files

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

Source Distribution

vcrypto-4.3.3.tar.gz (9.4 kB view details)

Uploaded Source

Built Distribution

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

vcrypto-4.3.3-py3-none-any.whl (7.4 kB view details)

Uploaded Python 3

File details

Details for the file vcrypto-4.3.3.tar.gz.

File metadata

  • Download URL: vcrypto-4.3.3.tar.gz
  • Upload date:
  • Size: 9.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for vcrypto-4.3.3.tar.gz
Algorithm Hash digest
SHA256 9694c764e16af87d26fe3e06e4379f64e6e17d70bc20027c495b2cad4ee45541
MD5 21f455670e937a004adc9399c002ff60
BLAKE2b-256 332f4572150e8816ac8fe855851664fbec9b8c374e5893a938822a72c4dcdf01

See more details on using hashes here.

File details

Details for the file vcrypto-4.3.3-py3-none-any.whl.

File metadata

  • Download URL: vcrypto-4.3.3-py3-none-any.whl
  • Upload date:
  • Size: 7.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for vcrypto-4.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7b8d2972ae58aa84f00a904fa2f712a729ef5ce69704478e9d614ed36578cad8
MD5 5b00d8d79a3a289156292ee8023903d7
BLAKE2b-256 327c1067a0c05332b426c2cb13e40dd127dd30af1a06841aa398b394d8f36dcf

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

4.3.3 This release

2 files

4.3.2

2 files

4.3.1

2 files

4.3.0

2 files

4.2.1

2 files

4.2.0

2 files

4.1.0

2 files

4.0.2

2 files

4.0.1

2 files

4.0.0

2 files

3.0.0

2 files

2.1.0

2 files

2.0.0

2 files

1.0.4

2 files

Supported by

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