Skip to content

benmandrew/tiber

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AES (Advanced Encryption Standard) Symmetric Block Cipher

Coverage

AES is a symmetric block cipher. It is symmetric because it uses the same key to encrypt and decrypt, and is a block cipher because it operates on individual, independent blocks of data. It is typically used for encryption and decryption.

Usage

Encryption

Full, end-to-end encryption of plaintext to ciphertext.

$ cat aes.key
-my-16-byte-key-
$ echo 'Hello, world!' | tiber --output-hex encrypt --key aes.key
b1a4cd8fc4d3544b5c51623be45f1fc9

Decryption

Full, end-to-end decryption of ciphertext to plaintext.

$ echo 'b1a4cd8fc4d3544b5c51623be45f1fc9' | tiber --input-hex decrypt --key aes.key
Hello, world!

Individual Steps

Apply a particular step of the AES algorithm: one of sub-bytes, shift-rows, mix-columns, or add-round-key.

$ echo 'Hello, world!' | tiber shift-rows
H,l or lo lw!e d

Web Interface

The cipher can be interacted with through a web interface, by running the following command and opening localhost:8080.

$ docker run -p 8080:80 benmandrew/tiber

Tiber web interface

Build

$ make

Documentation

Code docs are located online at benmandrew.com/docs/tiber/tiber/, or can be generated locally with

$ cargo doc --no-deps --open

Fuzzing

Fuzz test inputs to the cipher with

$ docker run benmandrew/tiber:fuzz

Each input is encrypted and decrypted to check idempotence, and the binary is built with ASan to detect memory errors.

About

AES symmetric block cipher implementation, for data encryption

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors