gpgodzilla - Large File Encryption with Line Modification
gpgodzilla enables developers and data scientists to encrypt and decrypt large and structured files while modifying them using whatever custom functions/methods they want, in memory. It is specifically designed for de-tokenization + encryption of sensitive data such as account numbers and social insurance numbers, where raw data is not allowed to live on the local storage of the system.
Use Case
The files that can be worked with should be structured on a line-by-line basis. For example, each line has some portions that need to be modified in the same way before encryption or after decryption.
One primary example is for transferring and processing PANs. Provided is a file of customers' PANs that are tokenized. The requirement is to send the encrypted and de-tokenized PANs to the receiver.
However, because PANs are highly sensitive, the de-tokenized/raw PANs cannot touch the local storage of the system. Hence, de-tokenization and encryption need to happen in system memory.
Requirements
It is essential to have GnuPG 2 installed on the system.
Quick Start
Install via pip:
pip install gpgodzilla
Basic Example
With the file to manipulate on the local storage, define the path to the file and the path to the processed/manipulated file. The file to process must exist.
Define the recipient of the encrypted file and the manipulation method for each line (ex. de-tokenization method that returns the de-tokenized line).
from gpgodzilla import encrypt_large_file, decrypt_large_file
def tokenize_foo(line):
# The example tokenization
# replacing each "foo" with "bar" before encryption
line = line.replace('foo', 'bar')
return line
def detokenize_bar(line):
# The example detokenization method
# replacing each "some_token" with "cipher" before encryption
line = line.replace('bar', 'foo')
return line
# The following code demonstrates a simple use case
file_to_encrypt = 'test.txt' # File to manipulate and encrypt
recipient = 'john.doe@test.com' # Email of the recipient (GnuPG), which must exist on the system on which the code is running
output_file_encrypt = 'test.pgp' # path of the encrypted & manipulated file
output_file_decrypt = 'original_test.txt' # path of the decrypted file
encrypt_large_file(recipient, file_to_encrypt, output_file_encrypt, tokenize_foo)
# then, to decrypt the file and detokenize each 'bar' back to 'foo':
decrypt_large_file(output_file_encrypt, output_file_decrypt, detokenize_bar, PASSPHRASE)
Metadata
Release files for gpgodzilla 0.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| gpgodzilla-0.0.1.tar.gz | 4.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gpgodzilla-0.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 8.5 kB
Release files / gpgodzilla-0.0.1.tar.gz
| Download URL | gpgodzilla-0.0.1.tar.gz |
|---|---|
| Size | 4.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0e747cbdf02a99aba0ad6c6f644543bc4c6a170e2f71556b6e15b27b259660df
|
|
BLAKE2b-256 checksum How to use checksums |
23664c1eedda9036c440bb58109a68e343bd8baac53a51e6d3c6a4ea2842cc28
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.2
|
Release files / gpgodzilla-0.0.1-py3-none-any.whl
| Download URL | gpgodzilla-0.0.1-py3-none-any.whl |
|---|---|
| Size | 4.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
77fc0dbf8804c515a6b78ec16b44a22c568ed4b59aa026b4616ec809fb440f10
|
|
BLAKE2b-256 checksum How to use checksums |
ce78f41d0a33c45735aac7f8bbae06bc7e63ffeff5695a81d072ed4b101a62b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.2
|
Security for gpgodzilla 0.0.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.