{ "info": { "author": "fanosta", "author_email": "fanosta@users.noreply.github.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# AES key schedule tool\nThis tool can be used as either a python library or a command line tool\n\nThis project is available on pypi\n```\npip3 install aeskeyschedule --user --upgrade\n```\n\n## Command Line Tool\n```\nusage: aeskeyschedule [-h] [-r AES_ROUND] round_key\n\nTool to calculate the Rijndael key schedule given any AES-128 round key.\n\npositional arguments:\n round_key the round key in hex notation from which the full key\n will be derived.\n\noptional arguments:\n -h, --help show this help message and exit\n -r AES_ROUND, --round AES_ROUND\n The AES round of the provided key. Defaults to 0 (base\n key).\n```\n### Example Usage\nView the AES expanded key given the base key\n```\n$ aeskeyschedule 00000000000000000000000000000000\n 0: 00000000000000000000000000000000\n 1: 62636363626363636263636362636363\n 2: 9b9898c9f9fbfbaa9b9898c9f9fbfbaa\n 3: 90973450696ccffaf2f457330b0fac99\n 4: ee06da7b876a1581759e42b27e91ee2b\n 5: 7f2e2b88f8443e098dda7cbbf34b9290\n 6: ec614b851425758c99ff09376ab49ba7\n 7: 217517873550620bacaf6b3cc61bf09b\n 8: 0ef903333ba9613897060a04511dfa9f\n 9: b1d4d8e28a7db9da1d7bb3de4c664941\n10: b4ef5bcb3e92e21123e951cf6f8f188e\n```\n\nReverse the AES-128 key schedule using the last round key\n\n```\n$ aeskeyschedule --round 10 002a5e9033d14c1f03ed911164b9be02\n 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n 1: 07060606adacacac07060606adacacac\n 2: 94979793393b3b3f3e3d3d3993919195\n 3: 1116bd4f282d86701610bb4985812adc\n 4: 15f33bd83ddebda82bce06e1ae4f2c3d\n 5: 81821c3cbc5ca1949792a77539dd8b48\n 6: 60bf4e2edce3efba4b7148cf72acc387\n 7: b191596e6d72b6d42603fe1b54af3d9c\n 8: 48b6874e25c4319a03c7cf815768f21d\n 9: 163f231533fb128f303cdd0e67542f13\n10: 002a5e9033d14c1f03ed911164b9be02\n```\n\n\n## Python Library\nThe two main functions are `key_schedule` and `reverse_key_schedule`\n\nCalculate the AES-128 base key given the last round key:\n```python3\nbase_key = reverse_key_schedule(b'\\xe2K\\xbb\"~\\xe8\\xb3\\xe6u\\x06_\\xdb\\x9b\\xd6\\x9bB', 10)\n```\n\nCalculate the last round key using an AES-128 base key:\n```python3\nbase_key = b'\\x91\\xa3\\xba\\x04\\xe3\\xdb:\\x10\\xc7$R\\x15|]\\xca\\x87'\nexpanded_key = key_schedule(base_key)\nassert expanded_key[0] == base_key\nlast_round_key = expanded_key[10]\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/fanosta/aeskeyschedule", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "aeskeyschedule", "package_url": "https://pypi.org/project/aeskeyschedule/", "platform": "", "project_url": "https://pypi.org/project/aeskeyschedule/", "project_urls": { "Homepage": "https://github.com/fanosta/aeskeyschedule" }, "release_url": "https://pypi.org/project/aeskeyschedule/0.0.3/", "requires_dist": [ "colorama (>=0.4.1)" ], "requires_python": "", "summary": "Tool to calculate the Rijndael key schedule given any AES-128 round key.", "version": "0.0.3" }, "last_serial": 5401259, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "4f24d880fabd7ca8f27793400b19d29c", "sha256": "6b953167d971b7337d30c4e3b3112574060a1af305b2925ae2a42e62563c5238" }, "downloads": -1, "filename": "aeskeyschedule-0.0.1-py3.6.egg", "has_sig": false, "md5_digest": "4f24d880fabd7ca8f27793400b19d29c", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 10287, "upload_time": "2019-06-14T15:51:46", "url": "https://files.pythonhosted.org/packages/9a/ec/83f664a658289ad64904ae3e1b8c3d3cb0642112a4907817696e59408894/aeskeyschedule-0.0.1-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "92f9fa94a83547e982165b3b9443c3b9", "sha256": "9b221b59c52c02ae48bd910efd6f9d4155d419b01e6d78b5dbbae09e58c70e49" }, "downloads": -1, "filename": "aeskeyschedule-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "92f9fa94a83547e982165b3b9443c3b9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6188, "upload_time": "2019-06-14T15:51:43", "url": "https://files.pythonhosted.org/packages/6f/30/49fa5f50e0928d523abbc72e38ed77319b5bbf98f35fb33d8e873965534c/aeskeyschedule-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f2792a7c680dadb533e547ab6450eb5", "sha256": "5ca64bb474aa57b82f83d9d10f564557449d6fcc87438a6e1ff995e1aad696fe" }, "downloads": -1, "filename": "aeskeyschedule-0.0.1.tar.gz", "has_sig": false, "md5_digest": "9f2792a7c680dadb533e547ab6450eb5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4378, "upload_time": "2019-06-14T15:51:47", "url": "https://files.pythonhosted.org/packages/d2/60/ccaab2089dd60de881f8559e5b312c18c5f3ab289046fb97bfcfaf87ee2e/aeskeyschedule-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "4ff826bdb19eac91acd3014039bfa911", "sha256": "4bcf7f994addfc6efc6ee54f6fb0b19306a2c3a43811254d4d43f1f5abd383d2" }, "downloads": -1, "filename": "aeskeyschedule-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "4ff826bdb19eac91acd3014039bfa911", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6190, "upload_time": "2019-06-14T15:55:44", "url": "https://files.pythonhosted.org/packages/be/e3/124eedf0be793b6d0fc02b028f85960336d2ac2ec8dd39259b18f476cfb4/aeskeyschedule-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1f25a486f667c5f4792ac3d76829ba7c", "sha256": "46ae73f156b1e73da84f838c3cca07ac886e594f846f88c956eafbf1c3428f73" }, "downloads": -1, "filename": "aeskeyschedule-0.0.2.tar.gz", "has_sig": false, "md5_digest": "1f25a486f667c5f4792ac3d76829ba7c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4373, "upload_time": "2019-06-14T15:55:47", "url": "https://files.pythonhosted.org/packages/5f/33/1eb4fd99991901d17a1063f267fb447aaf4d45135dc891338c2e88f64195/aeskeyschedule-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "e34d4de947bc2a6db57cd705ef3c9b94", "sha256": "2e0a7f49fdc4dc51e46bc2981e6adece757fccbf38d273ac3a53f912487b2571" }, "downloads": -1, "filename": "aeskeyschedule-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "e34d4de947bc2a6db57cd705ef3c9b94", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7051, "upload_time": "2019-06-14T16:19:53", "url": "https://files.pythonhosted.org/packages/e3/e1/63547d8cecebab91471fef8102004a1b2263e37e10b14cdbba8f38d8c440/aeskeyschedule-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e0bcb8023a7f31c457a6f747910bed24", "sha256": "10419ff9265c333c833d2ab50a0be3a3424a7e8e11abaf84dd48fc26036ce60a" }, "downloads": -1, "filename": "aeskeyschedule-0.0.3.tar.gz", "has_sig": false, "md5_digest": "e0bcb8023a7f31c457a6f747910bed24", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5456, "upload_time": "2019-06-14T16:19:56", "url": "https://files.pythonhosted.org/packages/85/16/fdfa6d82c4140197f609c2d3878a74c4c9261c5f3397b97cb3019453c04f/aeskeyschedule-0.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e34d4de947bc2a6db57cd705ef3c9b94", "sha256": "2e0a7f49fdc4dc51e46bc2981e6adece757fccbf38d273ac3a53f912487b2571" }, "downloads": -1, "filename": "aeskeyschedule-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "e34d4de947bc2a6db57cd705ef3c9b94", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7051, "upload_time": "2019-06-14T16:19:53", "url": "https://files.pythonhosted.org/packages/e3/e1/63547d8cecebab91471fef8102004a1b2263e37e10b14cdbba8f38d8c440/aeskeyschedule-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e0bcb8023a7f31c457a6f747910bed24", "sha256": "10419ff9265c333c833d2ab50a0be3a3424a7e8e11abaf84dd48fc26036ce60a" }, "downloads": -1, "filename": "aeskeyschedule-0.0.3.tar.gz", "has_sig": false, "md5_digest": "e0bcb8023a7f31c457a6f747910bed24", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5456, "upload_time": "2019-06-14T16:19:56", "url": "https://files.pythonhosted.org/packages/85/16/fdfa6d82c4140197f609c2d3878a74c4c9261c5f3397b97cb3019453c04f/aeskeyschedule-0.0.3.tar.gz" } ] }