Library with popular cryptographic algorithms implemented from scratch.
Implementation for modes of operation involves template metaprogramming. It is a metaprogramming technique in which templates are used by a compiler to generate temporary source code, which is merged by the compiler with the rest of the source code and then compiled.
- Installed
g++
compiler - Installed
OpenSSL
library - Installed
GMP
library
The project can be compiled using g++
compiler with the following flags:
-
OpenSSL
library-lssl -lcrypto
-
GMP
library-lgmp -lgmpxx
DES in CTR mode
Message:
00112233445566778899aabbccddeeff
Encrypted message:
7d26047d03b91842f5ae8cf58b3190ca
Decrypted message:
00112233445566778899aabbccddeeff
Triple DES in OFB mode
Message:
00112233445566778899aabbccddeeff
Encrypted message:
ffed24f4243e5bb95473c046a1c8ee8d
Decrypted message:
00112233445566778899aabbccddeeff
AES-128 in CBC mode
Message:
00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff
Encrypted message:
a686e9470065c013d237932b55db169762c9f3c77668db2bdd3600b07370828d
Decrypted message:
00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff
SHA-256 input str:
Testing input for the SHA256. Hash will be produced from this string.
is:
13db07605a6413446825ed281e73ba132c7e951f67df7ea879754b5463eaee36