This repository contains cryptographic benchmarking implementations for various AEAD (Authenticated Encryption with Associated Data) algorithms designed for high-performance, both on ARM and Intel CPUs.
- AEGIS-128x2 variants (AES-NI, VAES, ARM)
- AEGIS-128x4 (AVX-512 optimized)
- AES-128-GCM (OpenSSL backend)
- HiAE variants (HiAE, HiAEx2, HiAEx4)
- ROCCA-S cipher
# Build all algorithms (auto-detects architecture)
make all
# Build with optimal performance (recommended)
CC="clang -march=native" make all
# Run all tests
make test
# Run all benchmarks
make benchmark
# Clean all build artifacts
make cleanEach algorithm is in its own directory with consistent build system:
cd <algorithm-directory>
make # Build test and benchmark executables
./<algorithm>_test # Run functionality tests
./<algorithm>_benchmark # Run performance benchmarksPerformance Recommendation: For optimal performance, use clang as your compiler:
CC="clang -march=native" makeClang typically produces faster cryptographic code than GCC due to better optimization of vectorized operations and loop unrolling.
The build system automatically detects your architecture and builds appropriate implementations:
- x86_64/Intel: AEGIS-128x2 (AES-NI, VAES), AEGIS-128x4 (AVX-512), AES-128-GCM, HiAE, HiAEx2, HiAEx4, ROCCA-S
- ARM64: AEGIS-128x2 (ARM crypto extensions), AES-128-GCM, HiAE, HiAEx2, HiAEx4, ROCCA-S
Note: Some implementations require specific CPU features:
- AEGIS-128x2-aesni: AES-NI, AVX
- AEGIS-128x2-vaes: AES-NI, AVX2, VAES
- AEGIS-128x4-avx512: AVX-512F, VAES
- AES-128-GCM: OpenSSL library
Benchmarks test multiple message sizes (16B to 64KB) and measure:
- Throughput (Gbps/Mbps)
- Cycles per byte
- Cross-platform performance characteristics
# Run all benchmarks
make benchmark
# Run individual benchmark
cd <algorithm-directory>
./<algorithm>_benchmark
# Generate CSV output for analysis
./<algorithm>_benchmark > results.csvThe repository includes a Python tool for visualizing benchmark results:
cd benchmark-visualizer
pip install pandas matplotlib numpy # or: uv sync
python plot_performance.py path/to/csv/files/This generates comparative plots for:
- Throughput comparison across algorithms
- Efficiency (cycles per byte) analysis
- Performance trends across message sizes
- C compiler (clang recommended for performance)
- OpenSSL development libraries (for AES-GCM)
- Python 3.x with pandas, matplotlib, numpy (for visualization tools)
When adding new algorithms, follow the existing directory structure and implement the standard AEAD interface defined in crypto_aead.h.





