{ "info": { "author": "Clinton James", "author_email": "clinton.james@anuit.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3" ], "description": "[![build status](https://travis-ci.org/jidn/obscure.svg?branch=master)](https://travis-ci.org/jidn/obscure.svg?branch=masterp)\n![version](http://img.shields.io/pypi/v/obscure.svg)\n![license](http://img.shields.io/pypi/l/obscure.svg)\n![coverage](https://coveralls.io/repos/github/jidn/obscure/badge.svg?branch=master)\n![downloads](http://img.shields.io/pypi/dm/obscure.svg)\n\n# Obscure\n\nShowing a steadly increasing sequence of integer IDs leaks information\nto customers, competitors, or malicious entities about the number and\nfrequency of customers, inventory, or orders. Some example include:\n\n /customer/123\n /order/308\n\nFrom these, I would conclude that I am only your 123rd customer with the\n308th order. How a customer or competitor would feel about this would\ndiffer. However, the point is do I really want others to know this\ninformation? In addition, by creating another account or order, I can\nestimate the rate of change within your systems.\n\nThis class will help obscure your sequential order by providing a\nreverseable transformation to your numbers. By using different salts\nyour transformations will be unique. In addition, the class gives some\noutput helpers for hex, base32, and base64. There is one I call 'tame'\nas it removes the letters i and u to elimination some common offensive\nwords.\n\n# Install\n\nBy far the simplest method is to use pip:\n\n```console\n$ pip install obscure\n```\n\n# Example\n\n```python\n>>> from obscure import Obscure\n>>> customer_id = 123\n>>> num = Obscure(0x1234)\n>>> num.transform(customer_id)\n249699227\n>>> num.transform(249699227)\n123\n>>> num.encode_hex(customer_id)\n'0ee21b9b'\n>>> num.encode_base32(customer_id)\n'B3RBXGY'\n>>> num.decode_base32(num.encode_base32(customer_id))\n123\n>>> num.encode_base64(customer_id)\n'DuIbmw'\n>>> num.encode_tame(customer_id)\n'JB4XFK5'\n>>> num.decode_tame(num.encode_tame(customer_id))\n123\n```", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/jidn/obscure/tarball/1.0.1", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://www.github.com/jidn/obscure/", "keywords": "encrypt_id,REST,obfuscate", "license": "Apache License 2.0", "maintainer": null, "maintainer_email": null, "name": "obscure", "package_url": "https://pypi.org/project/obscure/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/obscure/", "project_urls": { "Download": "https://github.com/jidn/obscure/tarball/1.0.1", "Homepage": "https://www.github.com/jidn/obscure/" }, "release_url": "https://pypi.org/project/obscure/1.0.1/", "requires_dist": null, "requires_python": null, "summary": "Stop leaking information by obscuring sequential ID numbers", "version": "1.0.1" }, "last_serial": 2017794, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "025102b4cdc1217b47a2219633cb4c95", "sha256": "d3b0b335f98d4f5114497c096fb3508375ffff17df99d94eb5f6b95759367406" }, "downloads": -1, "filename": "obscure-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "025102b4cdc1217b47a2219633cb4c95", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 5935, "upload_time": "2016-03-21T02:05:29", "url": "https://files.pythonhosted.org/packages/67/7a/f519bb32f30e3c44722c77a122f49db71f55eecad91689c515c199275fdb/obscure-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bcb64360900c6199b30ea7cb932b0e71", "sha256": "fd757f651b606a27542c21c3ab69198719a4d24a36626b32f02c641e8738ef6e" }, "downloads": -1, "filename": "obscure-1.0.0.tar.gz", "has_sig": false, "md5_digest": "bcb64360900c6199b30ea7cb932b0e71", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4544, "upload_time": "2016-03-21T02:05:21", "url": "https://files.pythonhosted.org/packages/b4/95/d91d3f70e72190b83fd880d5792aea1c5ef14ebd30f97da4500410c9342d/obscure-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "95f6779b24b011554bb337359310e935", "sha256": "c7b2d6a83299ca62a55fe71d859528102d188d11230768b534f8d079e31f4535" }, "downloads": -1, "filename": "obscure-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "95f6779b24b011554bb337359310e935", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 5948, "upload_time": "2016-03-21T02:16:31", "url": "https://files.pythonhosted.org/packages/92/97/517442fc79453b409e5c1f145f84bf29d96af6b0551812a8027419de1336/obscure-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "79626472114a6dff7221baca77f24421", "sha256": "66457aa705553eff182729bdc3a5efc74286d033b61cbee5f87dab22b5bed395" }, "downloads": -1, "filename": "obscure-1.0.1.tar.gz", "has_sig": false, "md5_digest": "79626472114a6dff7221baca77f24421", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4558, "upload_time": "2016-03-21T02:16:16", "url": "https://files.pythonhosted.org/packages/ce/7b/ebedf560068174b3c4a7c3835ea07ee5d86baaf89c2158a217c12a23f379/obscure-1.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "95f6779b24b011554bb337359310e935", "sha256": "c7b2d6a83299ca62a55fe71d859528102d188d11230768b534f8d079e31f4535" }, "downloads": -1, "filename": "obscure-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "95f6779b24b011554bb337359310e935", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 5948, "upload_time": "2016-03-21T02:16:31", "url": "https://files.pythonhosted.org/packages/92/97/517442fc79453b409e5c1f145f84bf29d96af6b0551812a8027419de1336/obscure-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "79626472114a6dff7221baca77f24421", "sha256": "66457aa705553eff182729bdc3a5efc74286d033b61cbee5f87dab22b5bed395" }, "downloads": -1, "filename": "obscure-1.0.1.tar.gz", "has_sig": false, "md5_digest": "79626472114a6dff7221baca77f24421", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4558, "upload_time": "2016-03-21T02:16:16", "url": "https://files.pythonhosted.org/packages/ce/7b/ebedf560068174b3c4a7c3835ea07ee5d86baaf89c2158a217c12a23f379/obscure-1.0.1.tar.gz" } ] }