This is a Rust implementation of the AES-128 whitebox encryption scheme, inspired by the Chow scheme. This implementation provides a command-line tool for performing white-box AES-128 encryption and decryption on a given input file.
Note: This project was developed as a university project, so be aware of potential bugs and limitations.
- AES-128 whitebox encryption and decryption.
- Command-line tool for easy operation.
- Support for both white-box and classic AES-128 modes.
Before you can use this tool, ensure that you have the following prerequisites installed:
- Rust: Make sure you have Rust installed on your system.
-
Clone the repository:
git clone https://github.com/SandBlastX/aes-128-whitebox.git
-
Change to the project directory:
cd aes-128-whitebox
-
Build the project:
cargo build --release
To change the AES-128 key, you can modify it in the player/build.rs
let key: [u8; 16] = [
0x34, 0x45, 0xf3, 0x19, 0x5e, 0x27, 0x89, 0x63, 0x96, 0x90, 0x38, 0x41, 0x77, 0x5c, 0xcc,
0xcf,
];
To use the AES-128 whitebox encryption tool, you can run the following command:
./player --mode MODE --action ACTION --file FILE
Replace the placeholders with the following values:
MODE
: The mode of operation. Choose fromwhite_box
orclassic
.ACTION
: The action to perform. Choose fromencrypt
ordecrypt
.FILE
: The path to the file you want to operate on.
For example, to encrypt a file using the white-box mode, you can run:
./player --mode white_box --action encrypt --file input.txt