{ "info": { "author": "Min Choro", "author_email": "blinglnav@gmail.com", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "# PyPadding\n\n[![Build Status](https://travis-ci.org/blinglnav/pypadding.svg?branch=master)](https://travis-ci.org/blinglnav/pypadding)\n\nThis package implements padding methods to use block crypto function.\n\n## Dependencies\n\n* Python 3+\n\n## Usage\n\n### PKCS#5 / PKCS#7\n* pypadding.pkcs\n* Fill using number of padding number\n* e.g. When block size is 8, b'hello' need 3 bytes to multiple of block size --> fill using `b'\\x03'` (`b'hello\\x03\\x03\\x03'`)\n\n```python\n>>> from pypadding import pkcs\n>>> encoder = pkcs.Encoder()\n>>> encoder.encode(b'hello')\nb'hello\\x03\\x03\\x03'\n>>> encoder.decode(b'hello\\x03\\x03\\x03')\nb'hello'\n```\n\n### ANSI x923\n* pypadding.x923\n* Fill using zero(`b'\\x00'`) and last byte set to length of padding\n* e.g. When block size is 8, b'hello' need 3 bytes to multiple of block size --> fill using `b'\\x00'` and last byte set to `b'\\x03'` (`b'hello\\x00\\x00\\x03'`)\n\n```python\n>>> from pypadding import x923\n>>> encoder = x923.Encoder()\n>>> encoder.encode(b'hello')\nb'hello\\x00\\x00\\x03'\n>>> encoder.decode(b'hello\\x00\\x00\\x03')\nb'hello'\n```\n\n### ISO 10126\n* pypadding.iso10126\n* Fill using random byte and last byte set to length of padding\n* e.g. When block size is 8, b'hello' need 3 bytes to multiple of block size --> fill random byte and last byte set to `b'\\x03'` (`b'hello\\x85\\xaa\\x03'`)\n\n```python\n>>> from pypadding import iso10126\n>>> encoder = iso10126.Encoder()\n>>> encoder.encode(b'hello')\nb'hello\\x85\\xaa\\x03'\n>>> encoder.decode(b'hello\\x85\\xaa\\x03')\nb'hello'\n```\n\n### ISO/IEC 7816-4\n* pypadding.iso7816_4\n* Padding starts with `b'\\x80'` and fill using zero `b'\\x00'`\n* e.g. When block size is 8, b'hello' need 3 bytes to multiple of block size --> fill first byte to `b'\\x80'` then fill to `b'\\x00'` (`b'hello\\x80\\x00\\x00'`)\n\n```python\n>>> from pypadding import iso7816_4\n>>> encoder = iso7816_4.Encoder()\n>>> encoder.encode(b'hello')\nb'hello\\x80\\x00\\x00'\n>>> encoder.decode(b'hello\\x80\\x00\\x00')\nb'hello'\n```\n\n## Set Block Size\n\n```python\n>>> from pypadding import pkcs\n>>> encoder = pkcs.Encoder(16)\n>>> encoder.encode(b'blackjack')\nb'blackjack\\x07\\x07\\x07\\x07\\x07\\x07\\x07'\n>>> encoder.decode(b'blackjack\\x07\\x07\\x07\\x07\\x07\\x07\\x07')\nb'blackjack'\n```\n\nor\n\n```python\n>>> from pypadding import pkcs\n>>> encoder = pkcs.Encoder(block_size=16)\n>>> encoder.encode(b'blackjack')\nb'blackjack\\x07\\x07\\x07\\x07\\x07\\x07\\x07'\n>>> encoder.decode(b'blackjack\\x07\\x07\\x07\\x07\\x07\\x07\\x07')\nb'blackjack'\n```\n\n\n## Note\n* All encoded data has padding even though length of original data is multiple of block size\n * e.g. block size = 8, encoding w/ pkcs, `encode('computer')` --> `b'computer\\x08\\x08\\x08\\x08\\x08\\x08\\x08\\x08'`\n\n\n## Reference\n* https://en.wikipedia.org/wiki/Padding_(cryptography)\n * This package implement reversible methods only\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/blinglnav/pypadding", "keywords": "Padding,Cryptography,Encrypt,Decrypt,PKCS,PKCS#5,PKCS#7,ANSI x923,ISO 10126,ISO/IEC 7816-4", "license": "", "maintainer": "", "maintainer_email": "", "name": "PyPadding", "package_url": "https://pypi.org/project/PyPadding/", "platform": "", "project_url": "https://pypi.org/project/PyPadding/", "project_urls": { "Homepage": "https://github.com/blinglnav/pypadding" }, "release_url": "https://pypi.org/project/PyPadding/1.0.3/", "requires_dist": null, "requires_python": ">=3", "summary": "Padding package when using block cryptography", "version": "1.0.3" }, "last_serial": 4291978, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "fbeb0639895cf540a10bfa790a79ab80", "sha256": "a017ca9488547c192240080ca96e97ffad4042795439f5ff6a8f413925d369f5" }, "downloads": -1, "filename": "PyPadding-1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "fbeb0639895cf540a10bfa790a79ab80", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 3872, "upload_time": "2018-09-20T09:00:36", "url": "https://files.pythonhosted.org/packages/c5/35/895308ba8e3b7c72b4bed005f22307ccc7739e92a50418ae1faf98f923f8/PyPadding-1.0-py3-none-any.whl" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "c618cba13de3f8f962e7e7cdb5106581", "sha256": "a015c8540f6b7d299a44b7ac0ce1cd6a81b321612be2d07d9e54bc98be6f4866" }, "downloads": -1, "filename": "PyPadding-1.0.2.tar.gz", "has_sig": false, "md5_digest": "c618cba13de3f8f962e7e7cdb5106581", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 2621, "upload_time": "2018-09-20T09:14:55", "url": "https://files.pythonhosted.org/packages/df/c2/e9566a2ce36604c0da2f8773c021062d00be4aa81982a012e3adf99d0b65/PyPadding-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "5484d949f4ed2d1e995539aefcb81c8c", "sha256": "a4fba74b897a071d1d3f9822b1a9772a0e86dc9b9fbeaef176f5961d5ffb323b" }, "downloads": -1, "filename": "PyPadding-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "5484d949f4ed2d1e995539aefcb81c8c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 3938, "upload_time": "2018-09-20T09:20:13", "url": "https://files.pythonhosted.org/packages/e3/94/39e3a0a720e2df5b619e1874c765a017a3aca84c5e7037a40c123c55fe49/PyPadding-1.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4958eabb7cfd7db78f981bc180a54150", "sha256": "2ace46ff12d9fe936e7b3ccbd2c19966b3b0d52b92a231493a01b81a44111c66" }, "downloads": -1, "filename": "PyPadding-1.0.3.tar.gz", "has_sig": false, "md5_digest": "4958eabb7cfd7db78f981bc180a54150", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 2623, "upload_time": "2018-09-20T09:20:14", "url": "https://files.pythonhosted.org/packages/f5/38/b1ddc4ce2161b5217acb8ed32aa7f3c914263c8a328c3a3fef6b3ec73c59/PyPadding-1.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5484d949f4ed2d1e995539aefcb81c8c", "sha256": "a4fba74b897a071d1d3f9822b1a9772a0e86dc9b9fbeaef176f5961d5ffb323b" }, "downloads": -1, "filename": "PyPadding-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "5484d949f4ed2d1e995539aefcb81c8c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 3938, "upload_time": "2018-09-20T09:20:13", "url": "https://files.pythonhosted.org/packages/e3/94/39e3a0a720e2df5b619e1874c765a017a3aca84c5e7037a40c123c55fe49/PyPadding-1.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4958eabb7cfd7db78f981bc180a54150", "sha256": "2ace46ff12d9fe936e7b3ccbd2c19966b3b0d52b92a231493a01b81a44111c66" }, "downloads": -1, "filename": "PyPadding-1.0.3.tar.gz", "has_sig": false, "md5_digest": "4958eabb7cfd7db78f981bc180a54150", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 2623, "upload_time": "2018-09-20T09:20:14", "url": "https://files.pythonhosted.org/packages/f5/38/b1ddc4ce2161b5217acb8ed32aa7f3c914263c8a328c3a3fef6b3ec73c59/PyPadding-1.0.3.tar.gz" } ] }