{"id":16916881,"url":"https://github.com/aviramha/rfernet","last_synced_at":"2025-04-11T16:24:53.078Z","repository":{"id":38336640,"uuid":"232415980","full_name":"aviramha/rfernet","owner":"aviramha","description":"Python extension for Fernet encryption/decryption, faster than other alternatives.","archived":false,"fork":false,"pushed_at":"2024-10-15T13:45:19.000Z","size":40,"stargazers_count":6,"open_issues_count":1,"forks_count":5,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-25T12:22:26.317Z","etag":null,"topics":["cryptography","decryption","fernet","fernet-encryption","pyo3","python","python-extension","rfernet","rust"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aviramha.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-07T20:57:19.000Z","updated_at":"2024-12-30T22:24:45.000Z","dependencies_parsed_at":"2025-02-19T19:34:12.956Z","dependency_job_id":"bc2259a7-79ad-4947-a2aa-cd6e4d0fb301","html_url":"https://github.com/aviramha/rfernet","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aviramha%2Frfernet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aviramha%2Frfernet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aviramha%2Frfernet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aviramha%2Frfernet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aviramha","download_url":"https://codeload.github.com/aviramha/rfernet/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248439090,"owners_count":21103536,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cryptography","decryption","fernet","fernet-encryption","pyo3","python","python-extension","rfernet","rust"],"created_at":"2024-10-13T19:30:45.761Z","updated_at":"2025-04-11T16:24:53.056Z","avatar_url":"https://github.com/aviramha.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 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 \u0026 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 µs ± 117 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)\n\nIn [10]: %timeit c_fernet.encrypt(plain)\n77.7 µs ± 921 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n```\nMemory:\n```\n# rfernet\n[ Top 10 ]\n\u003cfrozen importlib._bootstrap\u003e:219: size=4444 B, count=38, average=117 B\ntest2.py:4: size=576 B, count=1, average=576 B\n\u003cfrozen importlib._bootstrap_external\u003e:59: size=156 B, count=1, average=156 B\ntest2.py:6: size=93 B, count=1, average=93 B\n\u003cfrozen importlib._bootstrap\u003e:371: size=80 B, count=1, average=80 B\n\u003cfrozen importlib._bootstrap\u003e:105: size=72 B, count=1, average=72 B\n\u003cfrozen importlib._bootstrap_external\u003e:1352: size=56 B, count=1, average=56 B\n\u003cfrozen importlib._bootstrap_external\u003e:606: size=56 B, count=1, average=56 B\ntest2.py:7: size=48 B, count=1, average=48 B\n\u003cfrozen importlib._bootstrap_external\u003e:1030: size=40 B, count=1, average=40 B\n\n# cryptography's Fernet\n[ Top 10 ]\n\u003cfrozen importlib._bootstrap_external\u003e: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\u003cfrozen importlib._bootstrap\u003e: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\u003cfrozen importlib._bootstrap_external\u003e: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","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faviramha%2Frfernet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faviramha%2Frfernet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faviramha%2Frfernet/lists"}