Encrypt/Decrypt with ChaCha20-Poly1305
Project description
Vaulty
Encrypt/Decrypt with ChaCha20-Poly1305
Vaulty is an extremely lightweight encryption/decryption tool which uses ChaCha20-Poly1305 to provide 256-bit authenticated symmetric encryption (AEAD) using Scrypt as the password based key derivation function as well as supporting public key (asymmetric) encryption via ECDH (Elliptic Curve Diffie-Hellman) and X448. It can be used to encrypt/decrypt files, or stdin
if you don't specify any files.
If encrypting stdin
then the output will be Base64 encoded whereas if encrypting a file then it won't and it will have a .vlt
extension added to indicate it has been encrypted.
It relies on the cryptography Python module to provide the routines for ChaCha20-Poly1305, Scrypt and ECDH with X448.
Installation
python3 -m pip install --upgrade --user pyvaulty
Vaulty Usage
vaulty ...
keygen
keyinfo <public key>
encrypt [-k <public key>] [file1[ file2[ ...]]]
decrypt [-k <private key>] [file1[ file2[ ...]]]
sha256 [file1[ file2[ ...]]]
Example Usage - Symmetric Encryption
echo "Hello World" | vaulty encrypt
$VAULTY;AY3eJ98NF6WFDMAP62lRdl58A2db5XJ2gNvKd0nmDs5ZrmNlJ8TSURpxc3bNF1iGw77dHA==
echo "$VAULTY;..." | vaulty decrypt
Hello World
import getpass, vaulty
v = vaulty.Vaulty()
password = getpass.getpass('Vaulty Password: ').encode('utf-8')
ciphertext = v.encrypt('Hello World'.encode('utf-8'), password)
plaintext = v.decrypt(ciphertext, password).decode('utf-8')
if plaintext is None:
print('error: invalid password or data not encrypted', file=sys.stderr)
Example Usage - Public Key (Asymmetric) Encryption
vaulty keygen
echo "Hello World" | vaulty encrypt -k ~/.vaulty/vaulty.pub
$VAULTY;QfIfowgIxGIpxD3wpk/p5/6wTHvxalHKqhodSuorNPvuvhmHqsybZ822x6nyPWdNsZnDVFKi
4nkSBTPnQS17Hexn1Fj85vyrARMc5oQ3ySLpB8QWGQJdjaYFeVyfRh2WwMZqkyAki09U2h7MMFBAbAc=
echo "$VAULTY;..." | vaulty decrypt -k ~/.vaulty/vaulty.key
Hello World
import vaulty
v = vaulty.Vaulty()
private, public = v.generate_keypair()
ciphertext = v.encrypt_ecc('Hello World'.encode('utf-8'), public)
plaintext = v.decrypt_ecc(ciphertext, private).decode('utf-8')
if plaintext is None:
print('error: invalid private key or data not encrypted', file=sys.stderr)
Project details
Release history Release notifications | RSS feed
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
File details
Details for the file pyvaulty-1.2.0.tar.gz
.
File metadata
- Download URL: pyvaulty-1.2.0.tar.gz
- Upload date:
- Size: 7.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8e3092a10ad6aa5ea0880e6baeea72fe6857e90f8e83d3a4f426636e354853b5 |
|
MD5 | bdd1e633e1049e1ef091dfadaa7c0a78 |
|
BLAKE2b-256 | ef35037edeed78045f401e9457bd092e437cbfac74e6160131f2b1c700131718 |
File details
Details for the file pyvaulty-1.2.0-py3-none-any.whl
.
File metadata
- Download URL: pyvaulty-1.2.0-py3-none-any.whl
- Upload date:
- Size: 8.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4f4270bac5dec86059e9dd06cca709a06ab303054d5e4b2722afed91482ccbcc |
|
MD5 | fdabaf14c13de4bc1d2e2f7553da26da |
|
BLAKE2b-256 | c6c3c4c08a1e67b78da21e3e9210247e6ecbceca3ec8d076353627ee35bac424 |