Reference and CUDA research implementations of CBC and Galois/Counter Mode (GCM) using the Korean LEA block cipher.
gcm/reference/lea_gcm.cpp— portable C++ reference implementation and small demonstration drivergcm/cuda/parallel_lea_gcm.cu— CUDA prototype comparing reference, 4-bit table, 8-bit table, and parallel GHASH pathscbc/src— C++ implementation of LEA-128-CBC and vector-file drivercbc/vectors— KAT, MCT, and MMT input vectors used by the CBC experiment
The CUDA source and CBC implementation were originally developed in the separate GPU_Parallel_GCM and LEA_cbc repositories. Both Git histories are preserved here.
Build the reference program with a C++17 compiler:
make gcm-reference
./build/lea_gcm_referenceBuild and run the CBC vector driver:
make cbc
./build/lea_cbc katThe driver accepts kat, mct, or mmt. Generated binary outputs are written under build/ and are not tracked.
Build the CUDA experiment with an NVIDIA CUDA Toolkit installation:
make gcm-cuda CUDA_ARCH=sm_86
./build/lea_gcm_cudaOverride CXX, NVCC, or CUDA_ARCH as needed. The CUDA experiment uses compile-time workload constants in its source; review them before running on a memory-constrained GPU.
This is educational and research code. The reference program prints comparison values but is not a maintained conformance test suite. The implementations have not been audited for production cryptographic use.