Skip to main content

Some toy cryptographic modules and related tools that should never, ever be used for anything other than demonstation purposes.

Project description

Toy cryptographic utilities

Checked with mypy Ruff Hatch project License: MIT


This is (almost certainly) not the package you are looking for.

The material here is meant for learning purposes only, often my own learning. Do not use it for anything else. And if you do, understand that it focuses on what I am trying to illustrate or learn. It may not always be correct, and it is not coded with safely in mind.

  • Use pyca if you need to use cryptographic tools in Python.
  • Use SageMath, sympy, or primefac if you want to play with some of the mathematics of some things underlying Cryptography in a Python-like environment.

Table of Contents

Motivation

This package is almost certainly not the package you are looking for. Instead, pyca or SageMath will better suite your needs. I created it to meet a number of my own idiosyncratic needs.

  • I don't have the flexibility of Python version that I may want when using SageMath.

    For example, I want to have access to something that behaves a bit like SageMath's factor() or the ability to play with elliptic curves without having do everything in Sage. Perhaps when sagemath-standard quickly becomes available for the latest Python versions, I won't need to have my own (failable and incomplete) pure Python substitutes for some things I need.

  • I sometimes talk about these algorithms for teaching purposes. Having pure Python versions allows me to present these.

    Proper cryptographic packages, like pyca,

    • Correctly obscure the lower level primitives I may wish to exhibit;
    • Correctly prevent use of unsafe parameters such as small keys;
    • Correctly involve a lot of abstractions in the calls to the concealed primitives.

    Those features, essential for something to be used, are not great for expository discussion.

  • Some of these I created or copied for my own learning purposes.

  • I have a number of "good enough" (for my purposes) implementations of things that I want to reuse.

    For example, Birthday collision calculations are things I occasionally want, and I don't want to hunt for wherever I have something like that written or rewrite it yet again. Likewise, I wouldn't be surprised if I'm written the extended GCD algorithm more than a dozen times (not all in Python), and so would like to have at least the Python version in one place

  • I want to use cryptographic examples in Jupyter Notebooks.

    I also want them to be reproducible, which is why I am making this public.

Installation

Don't. If you need to do cryptography in Python use pyca.

If you must

Once I've published this to PyPi, you will be able to install it with

pip install toycrypto

Until this is released on PyPi, you will just have to install from this source.

Usage

This is erratically documented at best, a combination of pydoc and reading the source it what you will need. Documentation is started to appear at https://jpgoldberg.github.io/toy-crypto-math/

The import namespace is toy_crypto

An example might be something like this, using the factor function from the Number Theory (nt) module.

from toy_crypto.nt import factor

c = 9159288649
f = factor(c)

assert f == [(11, 2), (5483, 1), (104243, 1)]
assert str(f) == '11^2 * 5483 * 104243'
assert f.n == c
assert f.phi == 62860010840

License

toy-crypto-math is distributed under the terms of the MIT license.

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

toycrypto-0.1.3.tar.gz (36.6 kB view details)

Uploaded Source

Built Distribution

toycrypto-0.1.3-py3-none-any.whl (22.9 kB view details)

Uploaded Python 3

File details

Details for the file toycrypto-0.1.3.tar.gz.

File metadata

  • Download URL: toycrypto-0.1.3.tar.gz
  • Upload date:
  • Size: 36.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.27.2

File hashes

Hashes for toycrypto-0.1.3.tar.gz
Algorithm Hash digest
SHA256 e11a74bb60fb45d752c5886ec0a48f0e88fe157e28f77b1f27b7b7f5bccaff39
MD5 0826f07d5fbb4c738119d021dfb78d21
BLAKE2b-256 25fe9b21c8aaae86b4970c0af8fe82c971f75c591fe0c5a92ec6e964cf639608

See more details on using hashes here.

File details

Details for the file toycrypto-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: toycrypto-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 22.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.27.2

File hashes

Hashes for toycrypto-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 98deaf3c4cd6c6fc104cc05edc1778c23ec4995acc24d7b00ba1f12ec6c02f80
MD5 a0e827694507dd368905210269470f37
BLAKE2b-256 e03b9b20f5edc6c0db858fe47e579bfddcffa15b68e442ecf2e11976cc5830f7

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