Git Product home page Git Product logo

ige's Introduction

ige

GoDoc Go Report Card Coverage

IGE block cipher mode for Go.

about

IGE is a block cipher mode usually used with AES. It's most notably used in Telegram's MTProto Protocol. It can be defined as the following function:

c_i = f_k(p_i ^ c_{i-1}) ^ p_{i-1}
  • c_i is ciphertext of the i block
  • p_i is plaintext of the i block
  • f_k is the block cipher function with k as the key

Here is a diagram of the above function:

Note that c_0 and m_0 in the diagram represent the initilization vectors. This implementation requires an initialization vector of two blocks. The first block is used as c_0. The second block is used as m_0.

testing

I'm using the test vectors described in the official OpenSSL IGE paper. You can execute the tests yourself by running:

$ go test

test vector 1

key

00010203 04050607 08090A0B 0C0D0E0F

initialization vector

00010203 04050607 08090A0B 0C0D0E0F
10111213 14151617 18191A1B 1C1D1E1F

plaintext

00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000

ciphertext

1A8519A6 557BE652 E9DA8E43 DA4EF445
3CF456B4 CA488AA3 83C79C98 B34797CB

test vector 2

key

54686973 20697320 616E2069 6D706C65

initialization vector

6D656E74 6174696F 6E206F66 20494745
206D6F64 6520666F 72204F70 656E5353

plaintext

99706487 A1CDE613 BC6DE0B6 F24B1C7A
A448C8B9 C3403E34 67A8CAD8 9340F53B

ciphertext

4C2E204C 65742773 20686F70 65204265
6E20676F 74206974 20726967 6874210A

ige's People

Contributors

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