Fast Luhn algorithm
Project description
Luhn-algorithm. Generate and validate strings of numbers. It is used for account number validation, credit card validation, data verification, cryptography, decoding, etcetera. Rust realization for speed-up python code. Thread-safe. See benchmark for details.
- Author:
Matt Stroganov
- Version:
0.1.5
Installation
Install with pip:
$ pip install fast-luhn
Usage
Import package:
>>> import fast_luhn as fl
Validate
Check if string is valid by luhn algorithm. Return bool.
>>> fl.validate("471629309440")
False
Digit
Calculate next digit for string of numbers. Return int.
>>> fl.digit("47162930944")
7
Complete
Add luhn-check digit to string of numbers. Return string.
>>> fl.complete("2398560146")
'23985601469'
Generate
Generate luhn-valid string of numbers with length. Return string.
>>> fl.generate(50)
'58126333877729238938910323395262199130041545367401'
Build
Install from sources:
$ git clone https://github.com/cybermatt/fast-luhn $ cd fast-luhn $ pip install -r requirements-dev.txt $ python ./setup.py develop
Benchmark
Pure python realization (from here) was very slow.
Comparison with popular python Luhn modules:
method lib |
fast-luhn |
||
---|---|---|---|
validate |
4.65 µs |
13.3 µs |
0.2 µs |
generate |
48.1 µs |
94.4 µs |
3.17 µs |
Environment:
CPU i5-6500 3.20GHz, 16gb RAM
Linux 4.19
Python 3.7.3
Tests
$ pytest -v tests.py
License
This project is licensed under the MIT License - see the LICENSE.txt file for details
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Hashes for fast_luhn-0.1.5-cp39-cp39-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b58be3816ee851b3845535caa2af51071a381cb02d099c24f83d52218105f179 |
|
MD5 | 543825b69613c1aee6281661d4c535d6 |
|
BLAKE2b-256 | bac29baf17a042bdeada3224129e67ee3fdf48790eab41092f9d97fbf6b6212f |
Hashes for fast_luhn-0.1.5-cp38-cp38-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1008ebac277babb4fdf0b4fe38946f58caa754453759c235ee96aaf77b320ea4 |
|
MD5 | a1a7af542f8d7838735d0874a20374c0 |
|
BLAKE2b-256 | 315313d7345077276f46b485a4724083c568086504d7f39dac456521f9101ef8 |
Hashes for fast_luhn-0.1.5-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | de54483db117743b74901ea06229cbf4e47c853e940add9fcc7d241ad7f8bd8c |
|
MD5 | 70216e38605509e7eb62aef71ea2d15d |
|
BLAKE2b-256 | 4d770bab6d3ef11d89300a4ec3c9cf854f3a45535cf5caaaabde10cea704c317 |
Hashes for fast_luhn-0.1.5-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f0a8cfda573b01bd1fee21c4828861af03e21b1dc71cb6dda9e11cda1d1d8da0 |
|
MD5 | 42476e654735113019a292b2b7f4a5a5 |
|
BLAKE2b-256 | ef2b338040c64fbdc892b2b9ec90c0059c168d66e8f3a2b410b5dc3ba2241b63 |
Hashes for fast_luhn-0.1.5-cp35-cp35m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c2029459ac42149767d42e14ec96979259be62976e82889b8e14e5b6f14be43d |
|
MD5 | fa30f44fed8042c62eba139de5e1d039 |
|
BLAKE2b-256 | dfd80354494db5cf34b1078aa8535dcaa1b860eba5ec27a92fdca645cf04368f |