Giter Club home page Giter Club logo

rainbowtables's Introduction

Rainbow Tables

A prototype implementation of a rainbow table.

A Rainbow Table is a data structure to improve efficency of using precomputed lookup tables to find the preimages of functions. In particular, rainbow tables are used to aid in reversing hash functions like SHA-1, MD5, etc... Rainbow tables are useful when we have a specific subset of values that we want to precompute our table over (i.e: 8 character alphanumeric string). The rainbow table has parameters that enable a user to choose their desired balance between storage of the table and lookup time within the table.

rainbow table
Fig.1 - A figure from the original paper on Rainbow Tables; Demonstrates the origin on the term 'Rainbow'

This implementation is done in Python as a prototype. As such, it lacks many optimizations as well as the natural speed up of using a lower level language. However, this tradeoff was made for learning purposes as the main goal of implementing the rainbow table was to get a better understanding of the technique, rather than squeeze out optimal performance. It focuses on the MD5 hash but could easily be extended to any other hash function.

Features

Some features included in this prototype:

  • Ability to tune parameters such as chain lengths and number of chains to have greater control over storage size and search time.
  • Ability to set a custom alphabet set and a custom preimage string length.
  • Ability to save generated rainbow tables as files and load them later to allow for reuse for future hash lookups.

Goals

Some goals for future work:

  • Add multiple chain generation phases to reduce merged chains from wasting time and space.
  • Add optimizations to reduction functions to decrease runtime.
  • Write the project in a lower level language such as Rust to try and push performance.
  • Write a full algorithmic description about how the rainbow table works for this README.

rainbowtables's People

Contributors

ikhaliq15 avatar

Watchers

 avatar Daniel Zhu 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.