A simple-to-use file encryption script
Project description
Kapak is a simple-to-use file encryption script/library.
It uses AES_256_CBC as its encryption cipher.
If you are wondering what kapak means, it means mold.
Installation
Installing with pip:
pip install kapak
CLI Usage
kapak [global options] [command] [command options] [input]
kapak [encrypt | e] [options] [input]
kapak [decrypt | d] [options] [input]
Encrypt file
$ kapak encrypt -o ./image.jpg.kpk ./image.jpg
Enter password:
Confirm password:
■■■■■■■■■■ 100%
$ kapak decrypt -o ./image.jpg ./image.jpg.kpk
Enter password:
■■■■■■■■■■ 100%
Encrypt stdin
$ echo 'secret stuff' | kapak encrypt | base64
Enter password:
Confirm password:
AAAAbWth...t/ILJW/v
$ echo 'AAAAbWth...t/ILJW/v' | base64 --decode | kapak decrypt
Enter password:
secret stuff
$ cat ./text.txt | kapak encrypt -b 1024 > ./text.txt.kpk
Enter password:
Confirm password:
$ kapak decrypt -b 1024 ./text.txt.kpk > ./text.txt
Enter password:
Password file
$ echo 'P@ssw0rd' > ./password.txt
$ kapak encrypt -p ./password.txt -o ./image.jpg.kpk ./image.jpg
■■■■■■■■■■ 100%
$ kapak decrypt -p ./password.txt -o ./image.jpg ./image.jpg.kpk
■■■■■■■■■■ 100%
Integration
Encrypt file
from pathlib import Path
from kapak.aes import encrypt
input_file = Path("image.jpg")
output_file = Path("image.jpg.kpk")
with input_file.open("rb") as src, output_file.open("wb") as dst:
total_len = input_file.stat().st_size
progress = 0
for chunk_len in encrypt(src, dst, "P@ssw0rd"):
progress += chunk_len
print(f"{progress}/{total_len}")
kapak.aes.encryptis a generator. It yields the length of encrypted data on every iteration.
from pathlib import Path
from itertools import accumulate
from kapak.aes import decrypt
input_file = Path("image.jpg.kpk")
output_file = Path("image.jpg")
with input_file.open("rb") as src, output_file.open("wb") as dst:
total_len = input_file.stat().st_size
for progress in accumulate(decrypt(src, dst, "P@ssw0rd")):
print(f"{progress}/{total_len}")
kapak.aes.decryptis a generator. It yields the length of decrypted data on every iteration.
Encrypt stdin
import sys
from io import BytesIO
from kapak.aes import encrypt
with BytesIO() as dst:
for _ in encrypt(
src=sys.stdin.buffer,
dst=dst,
password="P@ssw0rd",
buffer_size=1024
):
pass
encrypted_data = dst.getvalue()
print(encrypted_data.hex())
Encrypt anything
from io import BytesIO
from kapak.aes import encrypt
anything = b"anything"
with BytesIO(anything) as src, BytesIO() as dst:
for _ in encrypt(
src=src,
dst=dst,
password="P@ssw0rd",
buffer_size=1024
):
pass
encrypted_data = dst.getvalue()
print(encrypted_data.hex())
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
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 kapak-4.0.1.tar.gz.
File metadata
- Download URL: kapak-4.0.1.tar.gz
- Upload date:
- Size: 11.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4081b75f5ed34cb615e700d22016c12b8b9097bffeec12b3c05906b76396fb19
|
|
| MD5 |
7a44a98df0594dd92e91e669ab79c1ff
|
|
| BLAKE2b-256 |
16301a1d05a4511d008f790e348874c74a82b80a1c9e2b4146c2351d4b1f0cec
|
File details
Details for the file kapak-4.0.1-py3-none-any.whl.
File metadata
- Download URL: kapak-4.0.1-py3-none-any.whl
- Upload date:
- Size: 13.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e6f763d76894a06f14df01c538f26e35adbe78bf7bce2e093a48aeb135613f9
|
|
| MD5 |
401ef07d19ef0653de43111ad2190005
|
|
| BLAKE2b-256 |
dff7ebf4a0bca05b2e8a97b2c0f3013e7ef4800df05c6fb742148f793bfa6ec4
|