Giter Club home page Giter Club logo

aes's Introduction

AES

C++ AES(Advanced Encryption Standard) implementation

Build Status

Usage

This class is very simple to use:

...
unsigned char plain[] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }; //plaintext example
unsigned char key[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }; //key example
unsigned int plainLen = 16 * sizeof(unsigned char);  //bytes in plaintext

AES aes(AESKeyLength::AES_128);  ////128 - key length, can be 128, 192 or 256
c = aes.EncryptECB(plain, plainLen, key);
//now variable c contains plainLen bytes - ciphertext
...

Or for vectors:

...


vector<unsigned char> plain = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }; //plaintext example
vector<unsigned char> key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }; //key example

AES aes(AESKeyLength::AES_128);
c = aes.EncryptECB(plain, key);
//now vector c contains ciphertext
...

ECB, CBC, CFB modes are supported.

Padding

This library does not provide any padding because padding is not part of AES standard. Plaintext and ciphertext length in bytes must be divisible by 16. If length doesn't satisfy this condition exception will be thrown

Links

Development:

  1. git clone https://github.com/SergeyBel/AES.git
  2. docker-compose build
  3. docker-compose up -d
  4. use make commands

There are four executables in bin folder:

  • test - run tests
  • debug - version for debugging (main code will be taken from dev/main.cpp)
  • profile - version for profiling with gprof (main code will be taken from dev/main.cpp)
  • speedtest - performance speed test (main code will be taken from speedtest/main.cpp)
  • release - version with optimization (main code will be taken from dev/main.cpp)

Build commands:

  • make build_all - build all targets
  • make build_test - build test target
  • make build_debug - build debug target
  • make build_profile - build profile target
  • make build_speed_test - build speedtest target
  • make build_release - build release target
  • make style_fix - fix code style
  • make test - run tests
  • make debug - run debug version
  • make profile - run profile version
  • make speed_test - run performance speed test
  • make release - run release version
  • make clean - clean bin directory

aes's People

Contributors

sergeybel avatar markusfisch avatar mrdcvlsc avatar puche avatar elnormous avatar shatur avatar sunt-ing avatar leeys888 avatar aynur-safin 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.