Python library for password management and TOTP verification.
Project description
jkey
Python library for password management and TOTP verification.
Install
uv tool install jkey
Or run without installing:
uv run jkey --help
Quick Start
# Initialize vault (set master password)
jkey pv init
# Add a 2FA account
jkey 2fa add github JBSWY3DPEHPK3PXP
# Get current TOTP code
jkey 2fa get github
# Import from QR code image
jkey 2fa qr ./github.jpg
# Generate a random password
jkey pm gen -L 24
# Store a password
jkey pm add my-site
# List all stored passwords
jkey pm ls
# Encrypt/decrypt any file
jkey pv encrypt secret.pdf
jkey pv decrypt secret.pdf.jkey -o secret.pdf
Commands
| Command | Description |
|---|---|
jkey 2fa ls [keyword] |
List TOTP accounts and codes |
jkey 2fa get <account> |
Show TOTP code for an account |
jkey 2fa add <name> <secret> |
Add a TOTP account |
jkey 2fa qr <image> |
Import from QR code image |
jkey 2fa rm <account> |
Remove a TOTP account |
jkey pm gen [-L N] |
Generate a random password |
jkey pm ls [keyword] |
List stored passwords |
jkey pm get <name> |
Show a stored password |
jkey pm add <name> |
Store a password (prompts for input) |
jkey pm rm <name> |
Delete a stored password |
jkey pm import <csv> |
Import passwords from CSV (name,password) |
jkey pv init |
Initialize the encrypted vault |
jkey pv unlock |
Unlock the vault |
jkey pv lock |
Lock the vault |
jkey pv set-pw |
Change master password |
jkey pv encrypt <file> |
Encrypt a file |
jkey pv decrypt <file> |
Decrypt a .jkey file |
jkey pv export totp |
Export TOTP secrets (re-enters master password) |
jkey pv export passwords |
Export passwords as CSV |
jkey pv export recovery |
Export recovery codes |
jkey pv export qr -o <dir> |
Export QR code images |
jkey pv export all -o <dir> |
Export everything |
Set JKEY_PASS environment variable to skip the password prompt.
How It Works
Data is encrypted with AES-256-CBC + HMAC-SHA256 and stored in ~/.config/jkey/:
~/.config/jkey/
├── totp.jkey # Encrypted TOTP secrets
├── passwords.jkey # Encrypted passwords
├── recovery.jkey # Encrypted recovery codes
└── qr/ # Encrypted QR images
Back up ~/.config/jkey/ to migrate to another machine.
Dependencies
opencv-python-headless— QR code scanning
Pure Python, no OpenSSL or libsodium required.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jkey-0.1.2.tar.gz.
File metadata
- Download URL: jkey-0.1.2.tar.gz
- Upload date:
- Size: 15.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ce39145b9ed402da594f269ef160c8ee1fe6c480cb04fb49c143027ed2928b1
|
|
| MD5 |
fc24af6ceef1cae94e2450b29e72f093
|
|
| BLAKE2b-256 |
601f0ea49486c986ca77fa3af28e7632c547672f172d0df75640d353ca34bf11
|
Provenance
The following attestation bundles were made for jkey-0.1.2.tar.gz:
Publisher:
publish.yml on imjiaoyuan/jkey
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jkey-0.1.2.tar.gz -
Subject digest:
3ce39145b9ed402da594f269ef160c8ee1fe6c480cb04fb49c143027ed2928b1 - Sigstore transparency entry: 1437242616
- Sigstore integration time:
-
Permalink:
imjiaoyuan/jkey@163e0239e36fa3821c45335ba3da14c4b49dacbd -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/imjiaoyuan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@163e0239e36fa3821c45335ba3da14c4b49dacbd -
Trigger Event:
push
-
Statement type:
File details
Details for the file jkey-0.1.2-py3-none-any.whl.
File metadata
- Download URL: jkey-0.1.2-py3-none-any.whl
- Upload date:
- Size: 14.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
46a9af8a6d972925022b423dc4332cc9d4ca443d81e7320f742e1bdff96abc2e
|
|
| MD5 |
8b4f2a6cb106e78ac8b1bf9a8b885635
|
|
| BLAKE2b-256 |
115a7161d4fe97db66a0a8decad61df2bb2894ac28fdc83fd29e0e1447af77ad
|
Provenance
The following attestation bundles were made for jkey-0.1.2-py3-none-any.whl:
Publisher:
publish.yml on imjiaoyuan/jkey
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jkey-0.1.2-py3-none-any.whl -
Subject digest:
46a9af8a6d972925022b423dc4332cc9d4ca443d81e7320f742e1bdff96abc2e - Sigstore transparency entry: 1437242629
- Sigstore integration time:
-
Permalink:
imjiaoyuan/jkey@163e0239e36fa3821c45335ba3da14c4b49dacbd -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/imjiaoyuan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@163e0239e36fa3821c45335ba3da14c4b49dacbd -
Trigger Event:
push
-
Statement type: