A simple Python module that uses the Fernet secure algorithm to encrypt you Python objects with just one line of code.
Installation
Simply install using the Python package manager:
pip install friendlycrypto
Usage
Encrypting bytes
from friendlycrypto import Cryptographer
with open('img.png', 'rb') as original_f:
# Loads some file in a 'read-bytes' mode.
original_data = original_f.read()
# Encoding the password string into a bytes-string.
key = input("Key for encryption: ").encode('utf8')
# Encrypt the data usaing the 'Cryptographer' object
grapher = Cryptographer()
encrypted = grapher.encrypt(original_data, key)
with open('img.png.encrypted', 'wb') as encrypted_f:
# Write the encrypted data back into a new file.
encrypted_f.write(encrypted)
Encrypting Python objects
from friendlycrypto import FriendlyCryptographer
# The data can be any Python object!
# For this example, we are using a simple dict with strings.
data = {
'user1': 'password',
'user2': 'another-password',
}
# Encoding the password string into a bytes-string.
key = input("Key for encryption: ").encode('utf8')
# Encrypt the data usaing the 'FriendlyCryptographer' object
grapher = FriendlyCryptographer()
encrypted = grapher.encrypt(data, key)
with open('data.encrypted', 'wb') as encrypted_f:
# Write the encrypted data back into a new file.
encrypted_f.write(encrypted)
Additional arguments
The Cryptographer and FriendlyCryptographer objects share an init method
with two additional arguments:
salt: bytes
Should be a bytes-string (recommended to be at least 16 bytes long). Those bytes are added to the encrypted data to add additional randomness and uniqueness to your database. The salt shouldn't be stored with the database. generate using the os.urandom function.
Read more about the salt in hashing.
kdf_iterations: int
The module uses a key derivation function to convert the given password bytes into a fixed-length bytes string. Each iteration of the function takes time to compute, and thus a larger number of iterations makes it harder for attackers to just guess every option.
The recommended and default value is 100_000, and on my computer it takes
approximately 0.1 seconds to compute.
Metadata
Release files for friendlycrypto 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| friendlycrypto-1.0.0.tar.gz | 4.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| friendlycrypto-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 9.2 kB
Release files / friendlycrypto-1.0.0.tar.gz
| Download URL | friendlycrypto-1.0.0.tar.gz |
|---|---|
| Size | 4.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9611c65c11e705190e6a924f821536ea5d41a4f6c97344362d34856fe566971f
|
|
BLAKE2b-256 checksum How to use checksums |
7c87caa18ce2effda5acde727d801d0a06bdb18126aa45a3659b96179bc82815
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.1 importlib_metadata/4.4.0 pkginfo/1.7.0 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.2
|
Release files / friendlycrypto-1.0.0-py3-none-any.whl
| Download URL | friendlycrypto-1.0.0-py3-none-any.whl |
|---|---|
| Size | 4.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
48ee69dde3b362802a231cd7c879c0b6881a64394760188b788364ada23b88ed
|
|
BLAKE2b-256 checksum How to use checksums |
510246121f1ace7122cfc42faad7c12404816db4602c3b710d16651c3008497f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.1 importlib_metadata/4.4.0 pkginfo/1.7.0 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.2
|