Git Product home page Git Product logo

obsolete-cryptography's Introduction

obsolete-cryptography

Toolbox for exploring various obsolete ciphers and hash algorithms. Based on mcrypt and mhash.

WARNING: A lot of algorithms provided by this package are no longer considered secure. DO NOT use obsolete ciphers or hash algorithms when designing new secure systems. You might want cryptography for a secure, validated and easy to use crypto library that is suitable for new designs.

Building

Only tested on Linux.

This project uses the new PEP-517 source tree format.

To manually build the wheel, first make sure you have working C compiler, make and libtool (usually provided by the distro development package group like build-essential) and the PEP-517 builder build is installed, then run

python -mbuild --wheel

under the project directory. The wheel will be built under the dist/ directory after it's built successfully.

Notes on the design

Under the hood, this library is essentially a Cython binding to libmcrypt and mhash. Both libraries are included and are statically linked to the binding to simplify the building and installation process.

The libmcrypt included is based on libmcrypt 2.5.8 and has patches that enable out-of-tree building (required by meson) and enable the original SAFER algorithm that was previously disabled due to a bug. The mhash library is just a stock mhash 0.9.9.9 for now.

obsolete-cryptography's People

Contributors

dogtopus avatar

Watchers

 avatar  avatar

obsolete-cryptography's Issues

Take memoryview at places that take bytes

Currently places that accept bytes won't take memoryviews at all. Find a way to let those accept a C contiguous memoryview as a direct buffer. If the memoryview is not C contiguous, reformat (copy) them and pass the copy.

Setup cibuildwheel

Build wheels for windows, macos and manylinux. Do this before next release.

Port mcrypt and mhash to meson build system

Autoconf and automake don't play well with Windows (and potentially macOS) without installing extra dependencies, which complicates the build process for these platforms.

PEP-247 and PEP-272 style constructor

Those require the "algorithm module" objects that contain several attributes about the algorithm and a new() method that actually creates the context object.

This should be possible by mostly just adding wrappers to the __init__.py. Only minimal changes to the Cython modules are necessary.

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.