{ "info": { "author": "Akagi201", "author_email": "akagi201@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Environment :: Console :: Curses", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Topic :: Security", "Topic :: System :: Networking", "Topic :: System :: Systems Administration", "Topic :: Utilities" ], "description": "# xor_string\n\n![PyPI downloads](https://img.shields.io/pypi/dm/xor_string.svg) ![PyPI version](https://img.shields.io/pypi/v/xor_string.svg) ![PyPI python version](https://img.shields.io/pypi/pyversions/xor_string.svg)\n\nPython doesn't support (natively) XOR on everything else than int, and this is annoying.\n\n```\n>>> 'hello' ^ 'world'\nTraceback (most recent call last):\n File \"\", line 1, in \nTypeError: unsupported operand type(s) for ^: 'str' and 'str'\n```\n\nFortunately, Python has the (amazing) itertools module.\n\n## unit tests\n* `nosetests -v`\n\n## Explanations\n\nFor those who are not familiar with python:\n\n* cycle(key) returns an iterator that produces an infinite concatenation of key's content\n* izip(a, b) returns an iterator that aggregates elements from each of the iterables. It stops on the shortest input sequence (here, our message, since cycle(key) is infinite\n* ord(a) and chr(57) return (respectively) the integer representing the given char and the char represented by the given integer.\n* ''.join() (roughly) concatenate every items of the list passed in argument in a string", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/Akagi201/xor_string/tarball/0.2.3", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Akagi201/xor_string", "keywords": "xor,string,itertools,python", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "xor_string", "package_url": "https://pypi.org/project/xor_string/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/xor_string/", "project_urls": { "Download": "https://github.com/Akagi201/xor_string/tarball/0.2.3", "Homepage": "https://github.com/Akagi201/xor_string" }, "release_url": "https://pypi.org/project/xor_string/0.2.3/", "requires_dist": null, "requires_python": null, "summary": "Elegant xor encryption in Python", "version": "0.2.3" }, "last_serial": 1797001, "releases": { "0.1.6": [ { "comment_text": "", "digests": { "md5": "569d91daf38cb0dfb234dde75f318284", "sha256": "20fca4175efc16e75043a7ab70dfd4310c7aa56b8db33a60e1ac2bf36362943b" }, "downloads": -1, "filename": "xor_string-0.1.6.tar.gz", "has_sig": false, "md5_digest": "569d91daf38cb0dfb234dde75f318284", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1230, "upload_time": "2015-11-02T07:32:21", "url": "https://files.pythonhosted.org/packages/eb/55/5d184af683af8b7159c38d729176592b389ae3a73ea87cb7392b5c1f71d2/xor_string-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "8a86a3296c75ad58eb3351fe3f9405f1", "sha256": "d91da7f4b88fe2f7de66a25417ee6f8054c4739a2464a6cbde9621d2d4d06638" }, "downloads": -1, "filename": "xor_string-0.1.7.tar.gz", "has_sig": false, "md5_digest": "8a86a3296c75ad58eb3351fe3f9405f1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1231, "upload_time": "2015-11-02T12:17:29", "url": "https://files.pythonhosted.org/packages/12/85/14ecbb5cf33902b15b63328e0b8ae57af404b78c926a563391eccd394322/xor_string-0.1.7.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "9ea0562ea8b1e15b37743a83f7cff22d", "sha256": "37db50b490012e3ef29a9e28859b4976cae38679e1dc9259b577334954293a38" }, "downloads": -1, "filename": "xor_string-0.2.0.tar.gz", "has_sig": false, "md5_digest": "9ea0562ea8b1e15b37743a83f7cff22d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1232, "upload_time": "2015-11-02T12:20:22", "url": "https://files.pythonhosted.org/packages/65/b3/1b86e7516c3dfc2bd1f9edbea400cf3307c6e805f8eb58547decbc70e8d8/xor_string-0.2.0.tar.gz" } ], "0.2.1": [], "0.2.2": [ { "comment_text": "", "digests": { "md5": "76f07d5135e074fb80ee17f46cde2e17", "sha256": "b07f67e6754551e74150b3923d5f1fc96a4ce49079c6195faabc7ed882969ab2" }, "downloads": -1, "filename": "xor_string-0.2.2.tar.gz", "has_sig": false, "md5_digest": "76f07d5135e074fb80ee17f46cde2e17", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3060, "upload_time": "2015-11-02T12:53:33", "url": "https://files.pythonhosted.org/packages/78/48/42c48b03a3b046b5e5677d337376f23a6e4b276db8907507e9110086b8b6/xor_string-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "8726b3cdb65d062288e7c8707b452947", "sha256": "07e579f265411c1b3845ca43c999fdf6c9763f591967e79761743e2f16b601a2" }, "downloads": -1, "filename": "xor_string-0.2.3.tar.gz", "has_sig": false, "md5_digest": "8726b3cdb65d062288e7c8707b452947", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2985, "upload_time": "2015-11-02T12:57:37", "url": "https://files.pythonhosted.org/packages/69/6a/dd961117f0bcf1299c1c898229308f3c135c231a3662a6ab1768e5f59c05/xor_string-0.2.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8726b3cdb65d062288e7c8707b452947", "sha256": "07e579f265411c1b3845ca43c999fdf6c9763f591967e79761743e2f16b601a2" }, "downloads": -1, "filename": "xor_string-0.2.3.tar.gz", "has_sig": false, "md5_digest": "8726b3cdb65d062288e7c8707b452947", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2985, "upload_time": "2015-11-02T12:57:37", "url": "https://files.pythonhosted.org/packages/69/6a/dd961117f0bcf1299c1c898229308f3c135c231a3662a6ab1768e5f59c05/xor_string-0.2.3.tar.gz" } ] }