Giter VIP home page Giter VIP logo

pycryptoadapter's Introduction

PyCrypto BlockCipher Adapter

This project shows how to extend PyCrypto with your own ciphers.

In PyCrypto the various ciphering modes are added to a block cipher in two steps. First the basic ciphering modes: CBC, CFB, OFB, CTR, these are added to a cipher in a C file: block_template.c. This only works for the ciphers bundled with PyCrypto.

The more complicated ciphering modes ( CCM, EAX, SIV, OPENPGP, GCM ) are added to a cipher by building upon the simple modes, in Crypto/Cipher/blockalgo.py

So if you want to use blockalgo to add CCM to your own cipher, you will have to make sure it supports the simple ciphering modes first.

You can do this by deriving from the _BlockCipher class offered here. It expects the user to implement only the encrypt_block and decrypt_block methods.

In order to add the more complex modes you can pass the above cipher as the factory class to a BlockAlgo derived object.

Three examples are provided:

  • AESCipher : should behave exactly the same as Crypto.Cipher.AES - for testing.
  • TandemCipher : A Cipher as used in GSMK cryptophone, XORring AES and Twofish.
  • TwofishCipher: wraps the twofish module, adding PyCrypto ciphering modes.
  • Modes.py: For the purpose of testing the CipherAdapter, several wrappers which add a ciphering mode to a cipher, using only it's ECB mode.

Note that in AESCipher and TandemCipher the new factory method is in the top level class, while in the TwofishCipher module the new method is a module level function. These are implemented differently showing two different ways of implementing a cipher.

BUGS

  • For CFB mode currently only segment_size=128 is supported.

Author: Willem Hengeveld [email protected]

pycryptoadapter's People

Contributors

nlitsme avatar

Stargazers

 avatar  avatar  avatar

Watchers

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