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


Metadata

Release files for vcrypto 4.3.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vcrypto 4.3.3
File Size Uploaded
vcrypto-4.3.3.tar.gz 9.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for vcrypto 4.3.3
File Interpreter ABI Platform
vcrypto-4.3.3-py3-none-any.whl Python 3 none any Details

Total release size: 16.8 kB

Release files / vcrypto-4.3.3.tar.gz

Download URL vcrypto-4.3.3.tar.gz
Size 9.4 kB
Tags Source
SHA-256 checksum
How to use checksums
9694c764e16af87d26fe3e06e4379f64e6e17d70bc20027c495b2cad4ee45541
BLAKE2b-256 checksum
How to use checksums
332f4572150e8816ac8fe855851664fbec9b8c374e5893a938822a72c4dcdf01
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release files / vcrypto-4.3.3-py3-none-any.whl

Download URL vcrypto-4.3.3-py3-none-any.whl
Size 7.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7b8d2972ae58aa84f00a904fa2f712a729ef5ce69704478e9d614ed36578cad8
BLAKE2b-256 checksum
How to use checksums
327c1067a0c05332b426c2cb13e40dd127dd30af1a06841aa398b394d8f36dcf
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release history Release notifications | RSS feed

This release

4.3.3 This release

2 release files

4.3.2

2 release files

4.3.1

2 release files

4.3.0

2 release files

4.2.1

2 release files

4.2.0

2 release files

4.1.0

2 release files

4.0.2

2 release files

4.0.1

2 release files

4.0.0

2 release files

3.0.0

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.0.4

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page