rfernet


Namerfernet JSON
Version 0.3.2 PyPI version JSON
download
home_page
SummaryFast Fernet bindings for Python
upload_time2024-02-01 10:45:33
maintainer
docs_urlNone
authorAviram Hassan <aviramyhassan@gmail.com>
requires_python>=3.7
licenseMIT
keywords fast fernet
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # rfernet
Python extension for Fernet encryption/decryption, faster than other alternatives.
This library uses the rust library `fernet-rs` https://github.com/mozilla-services/fernet-rs.

CI & Building wheels copied from `cryptography` and `orjson`

# Benchmark
Compared to cryptography's Fernet (CPU):
```
In [2]: from cryptography.fernet import Fernet as cFernet

In [3]: from rfernet import Fernet as rFernet

In [4]:

In [4]: plain = b"asd" * 1000

In [5]: key = rFernet.generate_new_key()

In [7]: r_fernet = rFernet(key)

In [8]: c_fernet = cFernet(key)

In [9]: %timeit r_fernet.encrypt(plain)
18.4 µs ± 117 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

In [10]: %timeit c_fernet.encrypt(plain)
77.7 µs ± 921 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
```
Memory:
```
# rfernet
[ Top 10 ]
<frozen importlib._bootstrap>:219: size=4444 B, count=38, average=117 B
test2.py:4: size=576 B, count=1, average=576 B
<frozen importlib._bootstrap_external>:59: size=156 B, count=1, average=156 B
test2.py:6: size=93 B, count=1, average=93 B
<frozen importlib._bootstrap>:371: size=80 B, count=1, average=80 B
<frozen importlib._bootstrap>:105: size=72 B, count=1, average=72 B
<frozen importlib._bootstrap_external>:1352: size=56 B, count=1, average=56 B
<frozen importlib._bootstrap_external>:606: size=56 B, count=1, average=56 B
test2.py:7: size=48 B, count=1, average=48 B
<frozen importlib._bootstrap_external>:1030: size=40 B, count=1, average=40 B

# cryptography's Fernet
[ Top 10 ]
<frozen importlib._bootstrap_external>:525: size=3134 KiB, count=31814, average=101 B
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/cryptography/hazmat/bindings/openssl/binding.py:91: size=449 KiB, count=3169, average=145 B
<frozen importlib._bootstrap>:219: size=404 KiB, count=3384, average=122 B
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/abc.py:126: size=146 KiB, count=717, average=209 B
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/cryptography/hazmat/bindings/openssl/binding.py:89: size=119 KiB, count=1773, average=69 B
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/abc.py:127: size=68.7 KiB, count=447, average=157 B
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/inspect.py:2793: size=46.8 KiB, count=282, average=170 B
<frozen importlib._bootstrap_external>:59: size=41.7 KiB, count=265, average=161 B
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/abc.py:135: size=40.8 KiB, count=339, average=123 B
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/idna/idnadata.py:826: size=36.7 KiB, count=3, average=12.2 KiB
```
Memory test source code:
```
import tracemalloc

tracemalloc.start()
from cryptography.fernet import Fernet as cFernet
plain = b"asd" * 1000
key = cFernet.generate_key()
c_fernet = cFernet(key)
c_fernet.encrypt(plain)

snapshot = tracemalloc.take_snapshot()
top_stats = snapshot.statistics('lineno')

print("[ Top 10 ]")
for stat in top_stats[:10]:
    print(stat)
```


            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "rfernet",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": "",
    "keywords": "fast,fernet",
    "author": "Aviram Hassan <aviramyhassan@gmail.com>",
    "author_email": "Aviram Hassan <aviramyhassan@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/63/ac/5fd5461457a9802f44e7957ce929b080777a7fc1e931fcd46b67421442fa/rfernet-0.3.2.tar.gz",
    "platform": null,
    "description": "# rfernet\nPython extension for Fernet encryption/decryption, faster than other alternatives.\nThis library uses the rust library `fernet-rs` https://github.com/mozilla-services/fernet-rs.\n\nCI & Building wheels copied from `cryptography` and `orjson`\n\n# Benchmark\nCompared to cryptography's Fernet (CPU):\n```\nIn [2]: from cryptography.fernet import Fernet as cFernet\n\nIn [3]: from rfernet import Fernet as rFernet\n\nIn [4]:\n\nIn [4]: plain = b\"asd\" * 1000\n\nIn [5]: key = rFernet.generate_new_key()\n\nIn [7]: r_fernet = rFernet(key)\n\nIn [8]: c_fernet = cFernet(key)\n\nIn [9]: %timeit r_fernet.encrypt(plain)\n18.4 \u00b5s \u00b1 117 ns per loop (mean \u00b1 std. dev. of 7 runs, 100000 loops each)\n\nIn [10]: %timeit c_fernet.encrypt(plain)\n77.7 \u00b5s \u00b1 921 ns per loop (mean \u00b1 std. dev. of 7 runs, 10000 loops each)\n```\nMemory:\n```\n# rfernet\n[ Top 10 ]\n<frozen importlib._bootstrap>:219: size=4444 B, count=38, average=117 B\ntest2.py:4: size=576 B, count=1, average=576 B\n<frozen importlib._bootstrap_external>:59: size=156 B, count=1, average=156 B\ntest2.py:6: size=93 B, count=1, average=93 B\n<frozen importlib._bootstrap>:371: size=80 B, count=1, average=80 B\n<frozen importlib._bootstrap>:105: size=72 B, count=1, average=72 B\n<frozen importlib._bootstrap_external>:1352: size=56 B, count=1, average=56 B\n<frozen importlib._bootstrap_external>:606: size=56 B, count=1, average=56 B\ntest2.py:7: size=48 B, count=1, average=48 B\n<frozen importlib._bootstrap_external>:1030: size=40 B, count=1, average=40 B\n\n# cryptography's Fernet\n[ Top 10 ]\n<frozen importlib._bootstrap_external>:525: size=3134 KiB, count=31814, average=101 B\n/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/cryptography/hazmat/bindings/openssl/binding.py:91: size=449 KiB, count=3169, average=145 B\n<frozen importlib._bootstrap>:219: size=404 KiB, count=3384, average=122 B\n/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/abc.py:126: size=146 KiB, count=717, average=209 B\n/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/cryptography/hazmat/bindings/openssl/binding.py:89: size=119 KiB, count=1773, average=69 B\n/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/abc.py:127: size=68.7 KiB, count=447, average=157 B\n/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/inspect.py:2793: size=46.8 KiB, count=282, average=170 B\n<frozen importlib._bootstrap_external>:59: size=41.7 KiB, count=265, average=161 B\n/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/abc.py:135: size=40.8 KiB, count=339, average=123 B\n/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/idna/idnadata.py:826: size=36.7 KiB, count=3, average=12.2 KiB\n```\nMemory test source code:\n```\nimport tracemalloc\n\ntracemalloc.start()\nfrom cryptography.fernet import Fernet as cFernet\nplain = b\"asd\" * 1000\nkey = cFernet.generate_key()\nc_fernet = cFernet(key)\nc_fernet.encrypt(plain)\n\nsnapshot = tracemalloc.take_snapshot()\ntop_stats = snapshot.statistics('lineno')\n\nprint(\"[ Top 10 ]\")\nfor stat in top_stats[:10]:\n    print(stat)\n```\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Fast Fernet bindings for Python",
    "version": "0.3.2",
    "project_urls": null,
    "split_keywords": [
        "fast",
        "fernet"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "67bca07603adce4a06c4d5091f613ff2f7110b21289ff057dc81cf4361a8c9e5",
                "md5": "03d3ef574c1daa0b13450c5403ed409d",
                "sha256": "d37a2ea0d095da4b2800aa5bbcf466344ec8044b504036a048365e7cc6e045d2"
            },
            "downloads": -1,
            "filename": "rfernet-0.3.2-cp310-cp310-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "03d3ef574c1daa0b13450c5403ed409d",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 218920,
            "upload_time": "2024-02-01T10:46:45",
            "upload_time_iso_8601": "2024-02-01T10:46:45.611125Z",
            "url": "https://files.pythonhosted.org/packages/67/bc/a07603adce4a06c4d5091f613ff2f7110b21289ff057dc81cf4361a8c9e5/rfernet-0.3.2-cp310-cp310-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c4a68b36400e6c368866256b276e7f7090e255121689eb6a7e0822e2c55d257d",
                "md5": "5697e01c0117802b3d36075fb53027f1",
                "sha256": "4d6d6c4cbf01712bd57cd0e904a4d0e75186f988569b2a540de1404bd61d7224"
            },
            "downloads": -1,
            "filename": "rfernet-0.3.2-cp310-cp310-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "5697e01c0117802b3d36075fb53027f1",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 1921092,
            "upload_time": "2024-02-01T10:46:45",
            "upload_time_iso_8601": "2024-02-01T10:46:45.919377Z",
            "url": "https://files.pythonhosted.org/packages/c4/a6/8b36400e6c368866256b276e7f7090e255121689eb6a7e0822e2c55d257d/rfernet-0.3.2-cp310-cp310-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fe8cae7de15be3e6aa6f2c0c2ed984ecb4835c3c71e8c56ae15c2c8d3d54b712",
                "md5": "fdda947729b8168437eecbc7862e183b",
                "sha256": "2119936e84abe2899e8b6da5e3ec554ecd5080ca8def7a2e733da5d80e382a55"
            },
            "downloads": -1,
            "filename": "rfernet-0.3.2-cp311-cp311-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "fdda947729b8168437eecbc7862e183b",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 219025,
            "upload_time": "2024-02-01T10:47:32",
            "upload_time_iso_8601": "2024-02-01T10:47:32.572797Z",
            "url": "https://files.pythonhosted.org/packages/fe/8c/ae7de15be3e6aa6f2c0c2ed984ecb4835c3c71e8c56ae15c2c8d3d54b712/rfernet-0.3.2-cp311-cp311-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c542c21e88320a6fea08a6a18c79c6a416adbeba1c4ac26a2e16ca94ce2032fa",
                "md5": "20815b4cacb5c1ad26b8bffc57c92cb4",
                "sha256": "a1d9a47a87cd1d8d03d2dfed0b482c5c86b0db72bc873130104453739013c1ad"
            },
            "downloads": -1,
            "filename": "rfernet-0.3.2-cp311-cp311-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "20815b4cacb5c1ad26b8bffc57c92cb4",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 1921137,
            "upload_time": "2024-02-01T10:46:43",
            "upload_time_iso_8601": "2024-02-01T10:46:43.279680Z",
            "url": "https://files.pythonhosted.org/packages/c5/42/c21e88320a6fea08a6a18c79c6a416adbeba1c4ac26a2e16ca94ce2032fa/rfernet-0.3.2-cp311-cp311-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ff2dd2a828c0503ede1d906efa026ff577bfb138e7012f28a65ebaa5965a7ee3",
                "md5": "bb8e096aa21d24c2ab210cff20b43cb8",
                "sha256": "fd596ca0b321adf666619a9b448454553fbe94315831d82564e222c6f2b178e4"
            },
            "downloads": -1,
            "filename": "rfernet-0.3.2-cp37-cp37m-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "bb8e096aa21d24c2ab210cff20b43cb8",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 219086,
            "upload_time": "2024-02-01T10:47:01",
            "upload_time_iso_8601": "2024-02-01T10:47:01.422809Z",
            "url": "https://files.pythonhosted.org/packages/ff/2d/d2a828c0503ede1d906efa026ff577bfb138e7012f28a65ebaa5965a7ee3/rfernet-0.3.2-cp37-cp37m-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b66b16ae43302b2bf10cfd80582500d88ac0f819684801451c31559627ce7c7d",
                "md5": "6e3c3f817c140b2b1cac83272d8d5a98",
                "sha256": "8fce20166964c142d549d62daca03fdc1379a9efdff13c7d1187bfe9592dfeba"
            },
            "downloads": -1,
            "filename": "rfernet-0.3.2-cp37-cp37m-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6e3c3f817c140b2b1cac83272d8d5a98",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 1920650,
            "upload_time": "2024-02-01T10:46:43",
            "upload_time_iso_8601": "2024-02-01T10:46:43.484805Z",
            "url": "https://files.pythonhosted.org/packages/b6/6b/16ae43302b2bf10cfd80582500d88ac0f819684801451c31559627ce7c7d/rfernet-0.3.2-cp37-cp37m-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "45559ca881a6f5ebb70919cbb10b0d562494c9cde41f944cce5a54851fbad02d",
                "md5": "ff39ed3758a9d24a674725328e259de0",
                "sha256": "6d8cd4682e853506d15ee53ee4b8959fb467284fa3936ae9074c0770398ffdb3"
            },
            "downloads": -1,
            "filename": "rfernet-0.3.2-cp38-cp38-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ff39ed3758a9d24a674725328e259de0",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 219142,
            "upload_time": "2024-02-01T10:46:35",
            "upload_time_iso_8601": "2024-02-01T10:46:35.692185Z",
            "url": "https://files.pythonhosted.org/packages/45/55/9ca881a6f5ebb70919cbb10b0d562494c9cde41f944cce5a54851fbad02d/rfernet-0.3.2-cp38-cp38-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "71ffb5cb4626e1191fad729178cb06aec010b7e91bf35017c0b8abf9ca7083fe",
                "md5": "06786a35fad38a2642c6aca0749336f4",
                "sha256": "cfdbfe0fc2cfbb6953883b96d9407ab5d76d7f3ac3db6c26ed880d0f2bf0f5b6"
            },
            "downloads": -1,
            "filename": "rfernet-0.3.2-cp38-cp38-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "06786a35fad38a2642c6aca0749336f4",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 1920602,
            "upload_time": "2024-02-01T10:46:41",
            "upload_time_iso_8601": "2024-02-01T10:46:41.187071Z",
            "url": "https://files.pythonhosted.org/packages/71/ff/b5cb4626e1191fad729178cb06aec010b7e91bf35017c0b8abf9ca7083fe/rfernet-0.3.2-cp38-cp38-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1c2ae5896782cf224b1c95550b887ebf61f7e4574e46bc0e2c29489968f709de",
                "md5": "7c810f05e88756818db9115efb3aaa03",
                "sha256": "6c46fe9dff8d2e26bf34b4ed900d62fd1b2fc0cf50fe40863fddb3548470d60a"
            },
            "downloads": -1,
            "filename": "rfernet-0.3.2-cp39-cp39-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7c810f05e88756818db9115efb3aaa03",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 219617,
            "upload_time": "2024-02-01T10:47:21",
            "upload_time_iso_8601": "2024-02-01T10:47:21.727957Z",
            "url": "https://files.pythonhosted.org/packages/1c/2a/e5896782cf224b1c95550b887ebf61f7e4574e46bc0e2c29489968f709de/rfernet-0.3.2-cp39-cp39-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "25b193d0d9136a18d1c2187a95ce6a38b5ba271441b0cdf4a40fb771b9c7b840",
                "md5": "7fad7a8f8647ef34a3d6aa0a6aebd380",
                "sha256": "cf5c9189baf8d568c7e765d2dd34a34dca69f190d2808dfc0ba0684ac79a5a2a"
            },
            "downloads": -1,
            "filename": "rfernet-0.3.2-cp39-cp39-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7fad7a8f8647ef34a3d6aa0a6aebd380",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 1921620,
            "upload_time": "2024-02-01T10:46:41",
            "upload_time_iso_8601": "2024-02-01T10:46:41.916181Z",
            "url": "https://files.pythonhosted.org/packages/25/b1/93d0d9136a18d1c2187a95ce6a38b5ba271441b0cdf4a40fb771b9c7b840/rfernet-0.3.2-cp39-cp39-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "63ac5fd5461457a9802f44e7957ce929b080777a7fc1e931fcd46b67421442fa",
                "md5": "7379197d83a87299d463df0f7fada435",
                "sha256": "857e2a722d4a8ad3749b19ca25b343a2874ea4146574237ff5625b02573f7451"
            },
            "downloads": -1,
            "filename": "rfernet-0.3.2.tar.gz",
            "has_sig": false,
            "md5_digest": "7379197d83a87299d463df0f7fada435",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 6837,
            "upload_time": "2024-02-01T10:45:33",
            "upload_time_iso_8601": "2024-02-01T10:45:33.113602Z",
            "url": "https://files.pythonhosted.org/packages/63/ac/5fd5461457a9802f44e7957ce929b080777a7fc1e931fcd46b67421442fa/rfernet-0.3.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-02-01 10:45:33",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "rfernet"
}
        
Elapsed time: 0.17452s