IIS Cryptographic Implementation Using C++
Domains
Tech Stack
Project Summary
Abstract
This Information and System Security project implements core public-key cryptography workflows in C++ instead of treating encryption as a black-box library call. The repository contains six standalone programs covering RSA, ElGamal, elliptic-curve cryptography, and their corresponding digital signature variants.
The implementation uses NTL for arbitrary-precision integers, prime generation, modular inverses, and modular exponentiation, with OpenSSL SHA-1 used to convert arbitrary messages into signed digests. Each program demonstrates the full lifecycle: parameter generation, key generation, encryption or signing, decryption or verification, and altered-signature rejection.
The ECC work goes deeper than API usage by implementing point addition, point doubling, scalar multiplication, message-to-curve mapping, and encryption/decryption on a 192-bit NIST-style curve.
What I Built
- The repository implemented full RSA, ElGamal, and ECC workflows instead of wrapping prebuilt library calls.
- Signature verification on authentic and tampered messages validated both success and failure paths in the cryptographic pipeline.
- The ECC implementation went deep into point arithmetic, scalar multiplication, and message-to-curve handling.
Impact
- Shows low-level security engineering and algorithmic understanding in a way that higher-level app projects cannot.
- Adds strong systems credibility through reproducible C++ builds and explicit cryptographic primitives.
Page Info
Public-Key Encryption
Built standalone RSA, ElGamal, and elliptic-curve encryption programs using NTL for prime generation, modular arithmetic, and big-integer operations.
Digital Signature Workflows
Extended the primitives into RSA, ElGamal, and ECC signature verification flows by hashing messages with OpenSSL SHA-1 and validating altered-signature failure cases.
Build-Level Systems Work
Organized six C++ programs under a Makefile that links NTL, GMP, libm, pthread, and OpenSSL crypto for reproducible command-line execution.