Hey,
unter dem Projekt "FoxCrypt" möchte ich verschiedene Verschlüsselungs- und Hashalgorithmen als alleinstehende C++-Klassen implementieren und veröffentlichen.
Den Anfang mache ich hier mit AES, zu dem ich leider keine wirklich alleinstehende Klasse für C++ finden konnte.
Meine AES-Klasse implementiert lediglich blockweise-Verschlüsselung, die anderen Modes (CBC, CFB, CTR, OFB etc.) folgen später. Das ganze ist natürlich noch etwas optimierungswürdig und unterstützt z.B. noch kein AES-NI, aber auch darum möchte ich mich später noch kümmern. Primärziel war hier für mich erst mal, eine übersichtliche und leicht anpassbare AES-Implementation in C++ zu haben und die möchte ich auch mit euch teilen.
FoxAES.cpp: [Only registered and activated users can see links. Click Here To Register...]
FoxAES.h: [Only registered and activated users can see links. Click Here To Register...]
GitHub Repository: [Only registered and activated users can see links. Click Here To Register...]
Die Verwendung ist sehr einfach, hier mal Beispielcode aus meiner Testanwendung:
Gruß, Nico
unter dem Projekt "FoxCrypt" möchte ich verschiedene Verschlüsselungs- und Hashalgorithmen als alleinstehende C++-Klassen implementieren und veröffentlichen.
Den Anfang mache ich hier mit AES, zu dem ich leider keine wirklich alleinstehende Klasse für C++ finden konnte.
Meine AES-Klasse implementiert lediglich blockweise-Verschlüsselung, die anderen Modes (CBC, CFB, CTR, OFB etc.) folgen später. Das ganze ist natürlich noch etwas optimierungswürdig und unterstützt z.B. noch kein AES-NI, aber auch darum möchte ich mich später noch kümmern. Primärziel war hier für mich erst mal, eine übersichtliche und leicht anpassbare AES-Implementation in C++ zu haben und die möchte ich auch mit euch teilen.
FoxAES.cpp: [Only registered and activated users can see links. Click Here To Register...]
FoxAES.h: [Only registered and activated users can see links. Click Here To Register...]
GitHub Repository: [Only registered and activated users can see links. Click Here To Register...]
Die Verwendung ist sehr einfach, hier mal Beispielcode aus meiner Testanwendung:
Code:
FoxCrypt::AES ctx;
ctx.SetEncryptionKey(aesKey, FoxCrypt::AES_128);
for (uint32_t i = 0; i < blockCount; i++) {
memcpy(decBlock, buffer, 16);
ctx.EncryptBlock(decBlock, encBlock);
memcpy(buffer, encBlock, 16);
buffer += 16;
}
ctx.SetDecryptionKey(aesKey, FoxCrypt::AES_128);
for (uint32_t i = 0; i < blockCount; i++) {
memcpy(encBlock, buffer, 16);
ctx.DecryptBlock(encBlock, decBlock);
memcpy(buffer, decBlock, 16);
buffer += 16;
}