A modular Python implementation of AES featuring customizable transformations and comprehensive JSON dataflow logging for cryptographic analysis.
Project description
Warning: This implementation is intended for analysis and educational purpose and should not be used for real-world security.
About
- Author: shrimp2845
- Version: 0.4.0
- License: MIT
A pure Python implementation of the Advanced Encryption Standard (AES) algorithm with support for multiple key sizes, configurable internal transformations, detailed logging, and multiple cipher modes of operation.
Features
- AES-128/AES-192/AES-256 support
- ECB/CBC/CTR modes
- PKCS#7 padding
- Custom AES transformation configuration
- Custom S-Box support
- Encryption/decryption logging
Project Structure
project_AES/
├── __init__.py
├── block_utils.py
├── configs.py
├── project_AES.py
└── aes_core/
├── __init__.py
├── cipher.py
├── core_utils.py
├── key_expansion.py
├── math_utils.py
└── round.py
Installation
Requires Python 3.10+
pip install project-aes
or
pip install tqdm
git clone https://github.com/shrimp2845-tw/project_AES.git
cd project_AES
Quick Start
from project_AES import AES
key = b"0123456789abcdef"
plaintext = b"hello world"
cipher = AES(key)
ciphertext = cipher.encrypt(plaintext)
print(ciphertext)
Docs
class initialize
----------------------
from project_AES import AES
aes = AES(key, mode='ECB', config=None)
key -> bytes (16, 24 or 32 bytes)
Required. AES key for 128/192/256-bit encryption.
mode -> str (optional)
Block cipher mode of operation.
Supported: 'ECB', 'CBC', 'CTR'
Default: 'ECB'
config -> AESConfig (optional)
Advanced configuration. Default is AESConfig()
methods
----------------------
encrypt(data: bytes) -> bytes
decrypt(data: bytes) -> bytes
→ Encrypt/decrypt bytes data
encrypt_block(block: bytes) -> bytes
decrypt_block(block: bytes) -> bytes
→ single block (16 bytes) encryption/decryption
Examples
This project includes three example scripts demonstrating different functionalities of the module:
1.File Cipher: A script for encrypting and decrypting files using AES with various operation modes (ECB, CBC, CTR).
2.Avalanche Observation: A script to observe the avalanche effect by testing how bit-flips in plaintext affect the ciphertext under different configurations.
3.Differential: A script constructs Difference Distribution Tables (DDT) to analyze the cryptographic strength of the S-Box (both standard and user defined).
Samples
1.File Cipher:
You can try to decrypt these examples by your self
-
hina.png -> encrypt(key=gehenna, mode=ECB) -> hina.bin
-
kayoko.jpg -> encrypt(key=cat, mode=CBC) -> kayoko.bin
-
r18.gif -> encrypt(key=give you up, mode=CTR) -> r18.bin
(I originally wanted to use a picture of Shiina Mahiru, but I couldn’t find any good images under a cc license QAQ)
2.Avalanche Observation:
Disclaimer
This implementation is intended for analysis and educational purposes only.
It does not guarantee cryptographic security or production-level performance efficiency.
Do not use this project in any environment that requires strong security assurances.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file project_aes-0.4.0.tar.gz.
File metadata
- Download URL: project_aes-0.4.0.tar.gz
- Upload date:
- Size: 12.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
131d88bcd660bedc1d88654b85e53d6ea3dd42c413d1fd354f3781da579f7065
|
|
| MD5 |
685cf3af92af7a237a7f63ae0bedbc23
|
|
| BLAKE2b-256 |
0608034142c8c685111f2de50fed96fb09d8377e1ab849f95b1d6f06dc2b42db
|
File details
Details for the file project_aes-0.4.0-py3-none-any.whl.
File metadata
- Download URL: project_aes-0.4.0-py3-none-any.whl
- Upload date:
- Size: 13.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f0c6a9c40f5105d6fa1b2d561af202b91e67f875dc870aeeb1f3dd1863ca408
|
|
| MD5 |
c4f69bd7581384373ded93a936b49221
|
|
| BLAKE2b-256 |
5d5805b65281db0ffccca83d91b5c4cbb2fa33cdc1299688081988c222c99281
|