Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
tiny-AES-c — Kleines portables AES128/192/256 in C | Kitploit
Tools/GitHubGitHub/kokke/tiny-aes-c
Embedded-System-SicherheitVerschlüsselungs-/EntschlüsselungstoolsKryptographieTop in Kryptographie Nr.18Top in Verschlüsselungs-/Entschlüsselungstools Nr.19
GitHubkokke/tiny-aes-c

tiny-AES-c

Kleines portables AES128/192/256 in C

Repository anzeigen
5.0k1.4k5vor 1 JahrVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CI

Tiny AES in C

Dies ist eine kleine und portable Implementierung der AES-Verschlüsselungsalgorithmen ECB, CTR und CBC, geschrieben in C.

Sie können die Standard-Schlüssellänge von 128 Bit durch die Definition der Symbole AES192 oder AES256 in aes.h auf 192 oder 256 Bit ändern.

Die API ist sehr einfach und sieht wie folgt aus (ich verwende C99-<stdint.h>-Stil mit annotierten Typen):

root@kitploit:~
/* Initialize context calling one of: */
void AES_init_ctx(struct AES_ctx* ctx, const uint8_t* key);
void AES_init_ctx_iv(struct AES_ctx* ctx, const uint8_t* key, const uint8_t* iv);

/* ... or reset IV at random point: */
void AES_ctx_set_iv(struct AES_ctx* ctx, const uint8_t* iv);

/* Then start encrypting and decrypting with the functions below: */
void AES_ECB_encrypt(const struct AES_ctx* ctx, uint8_t* buf);
void AES_ECB_decrypt(const struct AES_ctx* ctx, uint8_t* buf);

void AES_CBC_encrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, size_t length);
void AES_CBC_decrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, size_t length);

/* Same function for encrypting as for decrypting in CTR mode */
void AES_CTR_xcrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, size_t length);

Wichtige Hinweise:

  • Es wird kein Padding bereitgestellt, daher sollten für CBC und ECB alle Puffer Vielfache von 16 Bytes sein. Für Padding ist PKCS7 empfehlenswert.
  • Der ECB-Modus gilt für die meisten Anwendungen als unsicher und ist nicht im Streaming-Modus implementiert. Wenn Sie diesen Modus benötigen, rufen Sie die Funktion für jeden Block von 16 Bytes auf, der verschlüsselt werden soll. Weitere Details finden Sie im Wikipedia-Artikel über ECB.
  • Diese Bibliothek ist auf geringe Codegröße und Einfachheit ausgelegt und richtet sich an Fälle, in denen eine kleine Binary-Größe, ein geringer Speicherverbrauch und Portabilität wichtiger sind als hohe Leistung. Wenn Geschwindigkeit eine Rolle spielt, können Sie komplexere Bibliotheken ausprobieren, z. B. Mbed TLS, OpenSSL usw.

Sie können wahlweise eine oder alle Betriebsarten verwenden, indem Sie die Symbole CBC, CTR oder ECB in aes.h definieren (lesen Sie die Kommentare zur Klarstellung).

C++-Benutzer sollten aes.hpp anstelle von aes.h per #include einbinden.

Es gibt keine eingebaute Fehlerprüfung oder Schutz vor Speicherzugriffsfehlern außerhalb der Grenzen, die durch bösartige Eingaben verursacht werden.

Das Modul benötigt bei der Kompilierung für ARM weniger als 200 Bytes RAM und 1–2 KB ROM, aber das Ergebnis kann je nach aktivierten Modi variieren.

Es ist eine der kleinsten Implementierungen in C, die ich bisher gesehen habe – aber kontaktieren Sie mich gerne, wenn Sie etwas Kleineres kennen (oder Verbesserungen am Code hier haben).

Ich habe den Code erfolgreich auf 64-Bit-x86-, 32-Bit-ARM- und 8-Bit-AVR-Plattformen eingesetzt.

GCC-Größenausgabe, wenn nur der CTR-Modus für ARM kompiliert wird:

root@kitploit:~
$ arm-none-eabi-gcc -Os -DCBC=0 -DECB=0 -DCTR=1 -c aes.c
$ size aes.o
   text    data     bss     dec     hex filename
   1171       0       0    1171     493 aes.o

... und bei der Kompilierung für den THUMB-Befehlssatz liegen wir in der Codegröße deutlich unter 1 KB.

root@kitploit:~
$ arm-none-eabi-gcc -Os -mthumb -DCBC=0 -DECB=0 -DCTR=1 -c aes.c
$ size aes.o
   text    data     bss     dec     hex filename
    903       0       0     903     387 aes.o

Ich verwende den ARM-GCC-Compiler der Free Software Foundation:

root@kitploit:~
$ arm-none-eabi-gcc --version
arm-none-eabi-gcc (4.8.4-1+11-1) 4.8.4 20141219 (release)
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Diese Implementierung wurde anhand der Daten in folgendem Dokument verifiziert:

National Institute of Standards and Technology Special Publication 800-38A 2001 ED Anhang F: Beispielvektoren für die Betriebsarten des AES.

Die anderen Anhänge des Dokuments sind wertvoll für Implementierungsdetails zu z. B. Padding, der Erzeugung von IVs und Nonces im CTR-Modus usw.

Ein herzliches Dankeschön an all die netten Leute, die zu diesem Projekt beigetragen haben.

Das gesamte Material in diesem Repository ist gemeinfrei (Public Domain).

Tool herunterladen