Skip to main content

A pure-python implementation of the Damm Algorithm in Base 32.

Project description

Damm32

Tests

Python implementation of the Damm Algorithm in Base 32

By default, it uses an alphabet as specified in RFC 4648 which contains 32 alphanumeric characters, with similar looking characters removed. The padding symbol is not included.

Installation

The package is available on PyPI and can be installed using pip: pip install damm32

It is also available on the Arch User Repository as python-damm32.

Alternatively, you can clone the repository and use the module.

Usage

The module contains a single class called Damm32, this class implements the methods for the checksum.

from damm32 import Damm32

d32 = Damm32()

digit = d32.calculate("HELLO")

d32.verify("HELLO" + digit)

You can also pass an list of length 32 to the constructor for the class to specify your alphabet.

from damm32 import Damm32

d32 = Damm32(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '2', '3', '4', '5', '6', '7'])

How it works

This is an implementation of the Damm Algorithm for use in Base 32 systems.

It will detect all occurrences of the two most frequently appearing types of transcription errors, namely altering one single digit, and transposing two adjacent digits (including the transposition of the trailing check digit and the preceding digit).

Since prepending leading zeros does not affect the check digit, variable length codes should not be verified together since, e.g., 0, 01, and 001, etc. produce the same check digit. However, all checksum algorithms are vulnerable to this.

The implementation uses a bitmask from Table of Low-Weight Binary Irreducible Polynomials to enable calculation of the check digit without constructing the quasigroup.

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

damm32-1.2.1.tar.gz (4.4 kB view details)

Uploaded Source

Built Distribution

damm32-1.2.1-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

Details for the file damm32-1.2.1.tar.gz.

File metadata

  • Download URL: damm32-1.2.1.tar.gz
  • Upload date:
  • Size: 4.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.8 CPython/3.9.6 Linux/5.10.56-1-lts

File hashes

Hashes for damm32-1.2.1.tar.gz
Algorithm Hash digest
SHA256 b101d4b537ce48a684c688a2aa6f58e5917809230118af66de05eecb26a01597
MD5 626dd72aeea268be587f136d0b205aa7
BLAKE2b-256 91d86d1983933af307d2754556b5a1992583c0a60237fae20465c1b3fbafef98

See more details on using hashes here.

File details

Details for the file damm32-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: damm32-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 4.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.8 CPython/3.9.6 Linux/5.10.56-1-lts

File hashes

Hashes for damm32-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 63840db7ec4ae8e9945e289e81d6c58341ce1b44ca8ca6485f2696cd58e4df9a
MD5 b470e79e7e52915e754d8e6c49549465
BLAKE2b-256 c0e0ac720a9651a4047741a65f98b9e333ec39bcad1272693e3b672d040525c7

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page