Skip to main content

Discrete logarithms in the ring of integers modulo n

Project description

discretelog

A pure python package to compute discrete logs in the ring of integers modulo n. It aims to provide relatively performant code with simple implementations of well-known algorithms, inspired by the popular primefac library.

Usage

To find the discrete log of v=641629670911834423534 modulo n=1540571422742786915303 with base g=25:

python -m discretelog 25 641629670911834423534 1540571422742786915303

Installation

The library is available in pypi, therefore can be installed with:

python -m pip install discretelog

Building from source

Using poetry to generate a wheel file:

git clone https://github.com/gilcu3/discretelog
cd discretelog
poetry build

Status

This is a work in progress. Several issues will be worked on in the future:

  • Looking at a similar library within Pari/GP, probably better performance can be achieved
  • Several parts can be trivially made parallel
  • For the moment documentation is missing
  • The library should either fail gracefully or continue computing indefinitly in case of big inputs. At the moment it simply crashes

Discrete log algorithms implemented

  • Baby steps giant steps
  • Pollard rho
  • Pohlig Hellman
  • Naive index calculus
  • Linear sieve index calculus

External tools

For large inputs the library uses external c++ implementations of state of the art algorithms. In order to use them the user needs to install them separately. See docs/external.md for details

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

discretelog-0.1.1.tar.gz (17.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

discretelog-0.1.1-py3-none-any.whl (18.8 kB view details)

Uploaded Python 3

File details

Details for the file discretelog-0.1.1.tar.gz.

File metadata

  • Download URL: discretelog-0.1.1.tar.gz
  • Upload date:
  • Size: 17.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.12.3 Linux/6.8.7-arch1-2

File hashes

Hashes for discretelog-0.1.1.tar.gz
Algorithm Hash digest
SHA256 5604bb650b4bb39b10d351ac2c16c2e68371a327d9a624e3ddb543af99aaf249
MD5 91cc8b93f2beb0ae5a163735176fee08
BLAKE2b-256 ab2afde1c635c2e00a812940401c6e8d6a8929396da0ebe05599278c5be54728

See more details on using hashes here.

File details

Details for the file discretelog-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: discretelog-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 18.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.12.3 Linux/6.8.7-arch1-2

File hashes

Hashes for discretelog-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bd1db4a4833f659c2bea749e3f7dcbb07288886bf906c0762b6e82dae9d8f585
MD5 acfa80807c9ce8db1ebcbd3ad587e785
BLAKE2b-256 5c805312c8e09aa1a07791fd950ae779e774c2a4dddcdf8eff3f8a74714c2074

See more details on using hashes here.

Supported by

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