Coder Social home page Coder Social logo

discretelog's Introduction

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

discretelog's People

Contributors

gilcu3 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.