{ "info": { "author": "Brad Solomon", "author_email": "brad.solomon.1124@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Security :: Cryptography" ], "description": "# npaes\n\nAdvanced Encryption Standard (AES) NumPy implementation.\n\n**Warning**: incomplete & not yet suitable for production use. See the \"Caution\" section below.\n\n----\n\n\n\n \n \n\n\n \n \n\n\n \n \n \n\n\n \n \n\n
SupportsPython 2.7 | 3.5 | 3.6 | 3.7
Latest Release\n \n \"latest\n \n
Package Status\n \n \"status\"
License\n \n \"license\"\n \n
\n\nThis package implements the Advanced Encryption Standard (AES) as specified in Federal Information Processing Standards Publication 197 (\"FIPS197\"):\n\n> [https://csrc.nist.gov/publications/detail/fips/197/final](https://csrc.nist.gov/publications/detail/fips/197/final)\n\nThis implementation is based entirely and solely on FIPS197. The tests in `tests/test_npaes.py` use the full set of example vectors from Appendix A, B, and C of FIPS197. `npaes` supports AES-128, AES-192, and AES-256.\n\nIts sole dependencies is NumPy. It does not use OpenSSL or any other C libraries besides the portions of NumPy that are implemented in C.\n\nAdditional technical notes can be found in the docstring of `npaes/__init__.py`.\n\n## Caution\n\nThis package is incomplete. While the raw encryption and decryption are fully tested using the FIPS197 example vectors, it is incomplete for the following reasons:\n\n- It does not allow you to specify an [initialization vector](https://en.wikipedia.org/wiki/Initialization_vector) (IV).\n- It does not allow you to specify a [block mode](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation).\n- It is optimized in most places but not all, and has little to no chance of ever being as fast as the optimized ANSI C version in OpenSSL.\n\n## Basic Usage\n\n```python\nimport os\nfrom npaes import AES\n\n# Key must be bytes type and 128, 192, or 256 bits\n# Or use hashlib.sha256() for an off-length key\nkey = os.urandom(32) # 256-bit key\n\n# Your plaintext length must be bytes and a multiple of 16 length\nmsg = b\"a secret message goes here\" + 6 * b\"\\x03\"\ncipher = AES(key)\nciphertext = cipher.encrypt(msg)\n\nprint(ciphertext)\n# b'a\\x85cna\\xc2\\xeeu\\xe9S\\xdf\\xabE\\x0c\\xda\\xf4\\x19\\x11\\xa3!\\xdd\\x96-\\x85\\x10f\\xd4\\x18;s%\\x81'\nprint(cipher.decrypt(ciphertext))\n# b'a secret message goes here\\x03\\x03\\x03\\x03\\x03\\x03'\n```\n\n\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/bsolomon1124/npaes", "keywords": "aes,aes-128,aes-192,aes-256,aes 128,aes 192,aes 256,encryption,decryption,numpy,symmetric,cipher", "license": "Apache 2.0", "maintainer": "", "maintainer_email": "", "name": "npaes", "package_url": "https://pypi.org/project/npaes/", "platform": "", "project_url": "https://pypi.org/project/npaes/", "project_urls": { "Homepage": "https://github.com/bsolomon1124/npaes" }, "release_url": "https://pypi.org/project/npaes/0.3/", "requires_dist": [ "numpy (<=1.16,>=1.14.6)", "setuptools" ], "requires_python": "", "summary": "Advanced Encryption Standard (AES) NumPy implementation", "version": "0.3" }, "last_serial": 4939942, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "3d3c3b9949822a249c3cfe6c75e12606", "sha256": "cda11adfb519a8a0e370d6f58b47040fe559923f26370552d2b00bbd8120bb06" }, "downloads": -1, "filename": "npaes-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "3d3c3b9949822a249c3cfe6c75e12606", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15429, "upload_time": "2019-03-14T14:13:24", "url": "https://files.pythonhosted.org/packages/72/e7/80c1eb199614b55435455f342985693c86fcbf5e9fb671cc2a13a1be8be7/npaes-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7bb4a65654cbc97c965b205da42d9be9", "sha256": "eaa7512721396bcec256a3d4ced743d247dd1ebfa155024d1928dae4b7f64908" }, "downloads": -1, "filename": "npaes-0.1.tar.gz", "has_sig": false, "md5_digest": "7bb4a65654cbc97c965b205da42d9be9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11729, "upload_time": "2019-03-14T14:13:26", "url": "https://files.pythonhosted.org/packages/d0/a2/0e4be70f41acd48edff17430eba33122020f9a790e67f80082d80079d25f/npaes-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "2ae71f735cf59f788e90d1e13df28f22", "sha256": "c9a25221bd1e773ae33c757ad998b40a38a8779dec8851f8df6dd2c1922cd604" }, "downloads": -1, "filename": "npaes-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "2ae71f735cf59f788e90d1e13df28f22", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15586, "upload_time": "2019-03-14T14:16:32", "url": "https://files.pythonhosted.org/packages/32/f7/e0127264403fbbe65e82ac4feb4f041af38e2b2281a6c0c4f0e023fa236f/npaes-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "63e9ccc9396ca32e143f5a3b40f9ad45", "sha256": "1a025c119857c51605334ef8b4dc49551a20998c62dee0fc239b9d181b5e8f2f" }, "downloads": -1, "filename": "npaes-0.2.tar.gz", "has_sig": false, "md5_digest": "63e9ccc9396ca32e143f5a3b40f9ad45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11969, "upload_time": "2019-03-14T14:16:34", "url": "https://files.pythonhosted.org/packages/6d/9d/988ef62c000c17d1ac7b988a931e6ccc6bdfd6b6265d8082e62fd3c3eba2/npaes-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "ade75b1be6047b138f5afbc964261e59", "sha256": "cb2dca4b0a2eb79f20dbd4466e587de4a3dde787d2fd48d8e9a118c5669f59bd" }, "downloads": -1, "filename": "npaes-0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "ade75b1be6047b138f5afbc964261e59", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15590, "upload_time": "2019-03-14T14:20:17", "url": "https://files.pythonhosted.org/packages/8c/ce/ddc35ded11e114ca3549b06456420fba1a4f811abec4153842cdfaeabe12/npaes-0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dcc61f7ae05ed638d4f20dc47d86abdb", "sha256": "b125ab13aaf7291d755072bf3284572a5c24cae9d915ceb1eaf219f76454adda" }, "downloads": -1, "filename": "npaes-0.3.tar.gz", "has_sig": false, "md5_digest": "dcc61f7ae05ed638d4f20dc47d86abdb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11978, "upload_time": "2019-03-14T14:20:20", "url": "https://files.pythonhosted.org/packages/9a/60/91aec9ee48ed7dca6505b7ce9466a379dd8cf677dd5a5688389b096f7446/npaes-0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ade75b1be6047b138f5afbc964261e59", "sha256": "cb2dca4b0a2eb79f20dbd4466e587de4a3dde787d2fd48d8e9a118c5669f59bd" }, "downloads": -1, "filename": "npaes-0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "ade75b1be6047b138f5afbc964261e59", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15590, "upload_time": "2019-03-14T14:20:17", "url": "https://files.pythonhosted.org/packages/8c/ce/ddc35ded11e114ca3549b06456420fba1a4f811abec4153842cdfaeabe12/npaes-0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dcc61f7ae05ed638d4f20dc47d86abdb", "sha256": "b125ab13aaf7291d755072bf3284572a5c24cae9d915ceb1eaf219f76454adda" }, "downloads": -1, "filename": "npaes-0.3.tar.gz", "has_sig": false, "md5_digest": "dcc61f7ae05ed638d4f20dc47d86abdb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11978, "upload_time": "2019-03-14T14:20:20", "url": "https://files.pythonhosted.org/packages/9a/60/91aec9ee48ed7dca6505b7ce9466a379dd8cf677dd5a5688389b096f7446/npaes-0.3.tar.gz" } ] }