{ "info": { "author": "Yiren Zhou", "author_email": "yiren.chow@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.6", "Topic :: Security :: Cryptography" ], "description": "# GnuPG Eternal - Large File Encryption with Line Modification\n\nGnuPG Eternal enables developers and data scientists to encrypt and decrypt large files while modifying them 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. \n\n## Use Case\nOne 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. \n\nHowever, 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.\n\n## Advantage\nTraditionally, the content of the whole file can be loaded into memory if wanted, and the developer/data scientist can manipulate the data depending on his/her needs. \n\nAs the file size increases to a certain point where the system cannot hold it any more, the program would crash.\n\nGnuPG Eternal allows the developer/data scientist to manipulate and encrypt files regardless of their sizes: that is, the maximum space consumption is **constant**, provided that the file is not one massive line of data. \n\n## Quick Start\nInstall via pip:\n\n```pip install gpgeternal```\n\n## Basic Example\nWith 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*. \n\nDefine the recipient of the encrypted file and the manipulation method for each line (ex. de-tokenization method that returns the de-tokenized line).\n\n```python\nimport gpgeternal\n\ndef manipulation_func(line):\n # The example manipulation method\n line = line.replace('Foobar', 'cipher')\n return line\n\ndef main():\n file_to_encrypt = 'test.txt' # File to manipulate and encrypt\n recipient = 'yiren.zhou@edu.uwaterloo.ca' # Email of the recipient (GnuPG)\n output_file = 'test.pgp' # Name of the encrypted & manipulated file\n\n gpgeternal.encrypt_large_file(recipient, file_to_encrypt, output_file, manipulation_func)\n\nif __name__ == '__main__':\n main()\n```", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/yirzhou/gpgeternal", "keywords": "gnu linux encrypt decrypt multiprocess", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "gpgeternal", "package_url": "https://pypi.org/project/gpgeternal/", "platform": "", "project_url": "https://pypi.org/project/gpgeternal/", "project_urls": { "Homepage": "https://github.com/yirzhou/gpgeternal" }, "release_url": "https://pypi.org/project/gpgeternal/0.9/", "requires_dist": null, "requires_python": "", "summary": "A package that is able to constantly write encrypted bytes to disk", "version": "0.9" }, "last_serial": 5248730, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "ead1080d4247fd540da2385073813763", "sha256": "59c7de9ce42827996d5ab2b10933d51d350e355bb62f23d3397f3f8015704c9d" }, "downloads": -1, "filename": "gpgeternal-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ead1080d4247fd540da2385073813763", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2915, "upload_time": "2019-03-10T21:46:28", "url": "https://files.pythonhosted.org/packages/71/4e/2068ac6df28bac9ddf33aaef0a40c0355d87328f0e09261b4f0657d9f426/gpgeternal-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "44e28df0eb5bf8314804471d72c41ef2", "sha256": "e0b524a19f03badbe30f0a1346653e29cca452cb857316f36741bc0c029d7dfa" }, "downloads": -1, "filename": "gpgeternal-0.1.tar.gz", "has_sig": false, "md5_digest": "44e28df0eb5bf8314804471d72c41ef2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1460, "upload_time": "2019-03-10T21:49:53", "url": "https://files.pythonhosted.org/packages/de/0b/460c3065a144275b026394c0b181e71a2f7d1ea74c2b8bcec27076b34beb/gpgeternal-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "792dec8386d28b44629ab861bf0da5ed", "sha256": "5eccbdf58ab3dc4cd0f2eadd8ed747e602130ab0971bfdafd37e8eced9ac3735" }, "downloads": -1, "filename": "gpgeternal-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "792dec8386d28b44629ab861bf0da5ed", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2854, "upload_time": "2019-03-10T21:49:52", "url": "https://files.pythonhosted.org/packages/6c/a4/18f8d6b62ecdaf2dcf87df8a01d1d0953f11b491c22ea0a4c1e4790d7c02/gpgeternal-0.2-py3-none-any.whl" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "8693353b1a24eacb9b028f044396d99f", "sha256": "a13b0fa4293abc0ef6023d587ef6fc20cc58f35cc2412ed8228fcb7f49c036c5" }, "downloads": -1, "filename": "gpgeternal-0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "8693353b1a24eacb9b028f044396d99f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2956, "upload_time": "2019-03-10T22:03:35", "url": "https://files.pythonhosted.org/packages/f5/07/5fb03908f409a83d3a2d073db6d8afbe287a4315bd6a102faae93f8687bc/gpgeternal-0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d7c240a6ff7dc38400097e343761ffc3", "sha256": "6af21723f1c1fac18e801e3e68683dc2d48c3d8f5421fa10c8c0d58d68462ecd" }, "downloads": -1, "filename": "gpgeternal-0.3.tar.gz", "has_sig": false, "md5_digest": "d7c240a6ff7dc38400097e343761ffc3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1578, "upload_time": "2019-03-10T22:03:36", "url": "https://files.pythonhosted.org/packages/c9/d3/b9ad5ed580d4b189197de8c67d593b6576e53fc97b60dc210d2de5f99845/gpgeternal-0.3.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "5340abc7c8aabd992b55160dcd6ca14c", "sha256": "b43f82700008ee56738d213a7d8c81ca48830d30a36687b09b9057efc286c612" }, "downloads": -1, "filename": "gpgeternal-0.7.tar.gz", "has_sig": false, "md5_digest": "5340abc7c8aabd992b55160dcd6ca14c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1854, "upload_time": "2019-05-09T17:39:02", "url": "https://files.pythonhosted.org/packages/6b/67/a920076168424d7ddf6277554cf3d5d512cfd11ed4e3909d359c5a1c5994/gpgeternal-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "14e684cb3899c7eb7177d22778ad3992", "sha256": "26816e15039095000eb47f351cce0a71563d7e61b90fd497ae98013e1b15296d" }, "downloads": -1, "filename": "gpgeternal-0.8.tar.gz", "has_sig": false, "md5_digest": "14e684cb3899c7eb7177d22778ad3992", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2827, "upload_time": "2019-05-09T18:07:09", "url": "https://files.pythonhosted.org/packages/2b/fd/697c66da0fab9be809531f2f95b9597989faf1c5d03bb3b4f77fdb65803b/gpgeternal-0.8.tar.gz" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "c72d292b888eae6bac5202a8269f3b0f", "sha256": "ad17ebfbba02b4c0ff41fa6309c8a4f55a11cd7f8604bc8fddd03b604694cd0b" }, "downloads": -1, "filename": "gpgeternal-0.9.tar.gz", "has_sig": false, "md5_digest": "c72d292b888eae6bac5202a8269f3b0f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3089, "upload_time": "2019-05-09T18:09:45", "url": "https://files.pythonhosted.org/packages/99/e1/ba4fae70db0146ae97b93ecc6d01b5e0c898979eb0e922de0f10819e9893/gpgeternal-0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c72d292b888eae6bac5202a8269f3b0f", "sha256": "ad17ebfbba02b4c0ff41fa6309c8a4f55a11cd7f8604bc8fddd03b604694cd0b" }, "downloads": -1, "filename": "gpgeternal-0.9.tar.gz", "has_sig": false, "md5_digest": "c72d292b888eae6bac5202a8269f3b0f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3089, "upload_time": "2019-05-09T18:09:45", "url": "https://files.pythonhosted.org/packages/99/e1/ba4fae70db0146ae97b93ecc6d01b5e0c898979eb0e922de0f10819e9893/gpgeternal-0.9.tar.gz" } ] }