Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
tiny-AES-c — Small portable AES128/192/256 in C | Kitploit
Strumenti/GitHubGitHub/kokke/tiny-aes-c
Embedded Systems SecurityEncryption/Decryption ToolsCryptography
GitHubkokke/tiny-aes-c

tiny-AES-c

Small portable AES128/192/256 in C

Vedi Repository
5.0k1.4k1 anno faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CI

Tiny AES in C

Questa è un'implementazione piccola e portabile degli algoritmi di cifratura AES ECB, CTR e CBC scritta in C.

Puoi sostituire la dimensione predefinita della chiave di 128 bit con 192 o 256 bit definendo i simboli AES192 o AES256 in aes.h.

L'API è molto semplice e si presenta così (sto usando tipi annotati in stile C99 <stdint.h>):

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);

Note importanti:

  • Non è fornito alcun padding, quindi per CBC ed ECB tutti i buffer devono essere multipli di 16 byte. Per il padding è consigliabile PKCS7.
  • La modalità ECB è considerata non sicura per la maggior parte degli usi e non è implementata in modalità streaming. Se hai bisogno di questa modalità, chiama la funzione per ogni blocco di 16 byte che devi cifrare. Vedi l'articolo di Wikipedia su ECB per maggiori dettagli.
  • Questa libreria è progettata per dimensioni del codice ridotte e semplicità, pensata per i casi in cui una piccola dimensione del binario, un basso consumo di memoria e la portabilità sono più importanti delle prestazioni elevate. Se la velocità è un problema, puoi provare librerie più complesse, ad esempio Mbed TLS, OpenSSL ecc.

Puoi scegliere di utilizzare una o tutte le modalità operative, definendo i simboli CBC, CTR o ECB in aes.h (leggi i commenti per chiarimenti).

Gli utenti C++ dovrebbero #include aes.hpp invece di aes.h

Non è presente alcun controllo degli errori integrato né protezione dagli errori di accesso alla memoria fuori dai limiti derivanti da input malevoli.

Il modulo utilizza meno di 200 byte di RAM e 1-2K di ROM quando viene compilato per ARM, ma i risultati possono variare a seconda delle modalità abilitate.

È una delle implementazioni in C più piccole che abbia mai visto finora, ma contattami se conosci qualcosa di più piccolo (o hai miglioramenti per il codice qui).

Ho usato con successo il codice su piattaforme x86 a 64 bit, ARM a 32 bit e AVR a 8 bit.

Output delle dimensioni GCC quando viene compilata solo la modalità CTR per ARM:

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

.. e compilando per il set di istruzioni THUMB, si scende ben al di sotto di 1K in termini di dimensione del codice.

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

Sto usando il compilatore ARM GCC della 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.

Questa implementazione è verificata rispetto ai dati contenuti in:

National Institute of Standards and Technology Special Publication 800-38A 2001 ED Appendice F: Vettori di esempio per le modalità operative dell'AES.

Le altre appendici del documento sono preziose per i dettagli implementativi, ad esempio su padding, generazione di IV e nonce in modalità CTR, ecc.

Un sentito ringraziamento a tutte le belle persone che hanno contribuito a questo progetto.

Tutto il materiale in questo repository è di pubblico dominio.

Scarica lo strumento