Fast Fernet bindings for Python
Project description
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)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
rfernet-0.3.0.tar.gz
(6.8 kB
view hashes)
Built Distributions
Close
Hashes for rfernet-0.3.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a46f2383e3fa6a0f63a01cc183e7c18a7483259051a761220e3427c676523110 |
|
MD5 | 93101b78cfc477cd20cd8112ec13b86f |
|
BLAKE2b-256 | 8e51148376f1f17cd1101811b793761cbb06a5ffbe5d423d75c315aee780a536 |
Close
Hashes for rfernet-0.3.0-cp311-cp311-macosx_10_7_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 65a70f337d881d8bfef5cbcc4cedba4462738846864070a54028a2dca8bcd754 |
|
MD5 | 57772d64489b893c7837c2c55527f9a9 |
|
BLAKE2b-256 | 3e3473a038238db539ba7dff1cdbddd5be3c45da2182a6eb3b54fbc7c7872233 |
Close
Hashes for rfernet-0.3.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 35a3b50405df64fcb5a8ef001b06b098bb6bdda7bf197a8eb06ca61310c2b5af |
|
MD5 | bff997096ebe8b29ccf850a54267e9b5 |
|
BLAKE2b-256 | 5eb7c1a6d9c06d28c9fe94118bd869a9f4bee7666dd5768ec30ac105ba8b3462 |
Close
Hashes for rfernet-0.3.0-cp310-cp310-macosx_10_7_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8ec980a9015ab3669faea175699ac7b4b6b61a96534b131b9335cdb5250c26c5 |
|
MD5 | ca3315e8c3e555e3427f4cd45d15d14f |
|
BLAKE2b-256 | e5b7b849d6e5750b0a5f7177a35d2d07ba186663b55822db9bb2e82eaecef2c4 |
Close
Hashes for rfernet-0.3.0-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a039fc87187ed01b5d9d3ec4ed6ef090d0e39ddb8c49d0a17e74bb6cb2012b83 |
|
MD5 | 2c37912b2b341aed32f03e55f8258b9e |
|
BLAKE2b-256 | 606b8219c0e070faaafb1151c684ebaf884e1aaad40e64ff401962078124b4b6 |
Close
Hashes for rfernet-0.3.0-cp39-cp39-macosx_10_7_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b848cba10ac58592c4b86259df78e9a59a77b8066b0a1f7eb2667fb9945c4873 |
|
MD5 | 352043bfbd01042adf368571c3f1e850 |
|
BLAKE2b-256 | 5e831459cb060ab2d383b6abb5b203c18c8490dcc8d349d68331eb0265d70caa |
Close
Hashes for rfernet-0.3.0-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3f4407ae36d9bd53681bd85a9345133961603a7c770a17af8cec3264bb47cfdb |
|
MD5 | 9608753e4a7a496c7ab729447dd9d9ff |
|
BLAKE2b-256 | 96d28d48e627387d1aaf8ad0e8474074f4aa02b0ac110d774ffde4973531c8de |
Close
Hashes for rfernet-0.3.0-cp38-cp38-macosx_10_7_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 24465dceb4fa0d703dd22eefc9343fac317aa193f40a2c6fbebe8021dc333df7 |
|
MD5 | b75f29d7927f0b89f002f7ef3986dc49 |
|
BLAKE2b-256 | 063e3733da0c0ebb0d265ee6c79f84fb2419ccff2ced337dfda42c8eaf5a4387 |
Close
Hashes for rfernet-0.3.0-cp37-cp37m-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 13fa24f4a67098cd46baa535406265f2333f1b5559506301849637bd7189b93e |
|
MD5 | 31a07746131a15c5401bdf96800c8414 |
|
BLAKE2b-256 | 74a21721c9f0acdcd6b4b2f201c1435ce47f24f5490ca5f1e4816071726ee79e |
Close
Hashes for rfernet-0.3.0-cp37-cp37m-macosx_10_7_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5d10ec8377fb007cb5c9b5eb6136553f216033c9d6bc723419715828857318d4 |
|
MD5 | 77c61ed372f736225e9cfd9388db26e6 |
|
BLAKE2b-256 | 046338570080f84384c794e7168ffadd12bbfc214946f1cef16b33c72aa19224 |