Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
tiny-AES-c — Petit AES128/192/256 portable en C | Kitploit
Outils/GitHubGitHub/kokke/tiny-aes-c
Sécurité des Systèmes EmbarquésOutils de Chiffrement/DéchiffrementCryptographieTop en Cryptographie n°18Top en Outils de Chiffrement/Déchiffrement n°19
GitHubkokke/tiny-aes-c

tiny-AES-c

Petit AES128/192/256 portable en C

Voir le dépôt
5.0k1.4k21il y a 1 anVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CI

Tiny AES en C

Ceci est une implémentation petite et portable des algorithmes de chiffrement AES ECB, CTR et CBC écrits en C.

Vous pouvez remplacer la taille de clé par défaut de 128 bits par 192 ou 256 bits en définissant les symboles AES192 ou AES256 dans aes.h.

L'API est très simple et ressemble à ceci (j'utilise des types annotés de style C99 <stdint.h>) :

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

Remarques importantes :

  • Aucun bourrage n'est fourni, donc pour CBC et ECB tous les tampons doivent être des multiples de 16 octets. Pour le bourrage, PKCS7 est recommandable.
  • Le mode ECB est considéré comme non sûr pour la plupart des usages et n'est pas implémenté en mode flux. Si vous avez besoin de ce mode, appelez la fonction pour chaque bloc de 16 octets que vous souhaitez chiffrer. Voir l'article de Wikipédia sur ECB pour plus de détails.
  • Cette bibliothèque est conçue pour une taille de code réduite et la simplicité, destinée aux cas où la petite taille du binaire, la faible empreinte mémoire et la portabilité sont plus importantes que les hautes performances. Si la vitesse est un problème, vous pouvez essayer des bibliothèques plus complexes, par exemple Mbed TLS, OpenSSL, etc.

Vous pouvez choisir d'utiliser l'un ou l'ensemble des modes de fonctionnement, en définissant les symboles CBC, CTR ou ECB dans aes.h (lisez les commentaires pour plus de précisions).

Les utilisateurs de C++ devraient #include aes.hpp au lieu de aes.h

Il n'y a pas de vérification d'erreur intégrée ni de protection contre les erreurs d'accès mémoire hors limites résultant d'une entrée malveillante.

Le module utilise moins de 200 octets de RAM et 1-2K de ROM lorsqu'il est compilé pour ARM, mais les résultats peuvent varier selon les modes activés.

C'est l'une des plus petites implémentations en C que j'ai vues jusqu'à présent, mais contactez-moi si vous connaissez quelque chose de plus petit (ou si vous avez des améliorations à apporter au code ici).

J'ai utilisé avec succès le code sur des plateformes x86 64 bits, ARM 32 bits et AVR 8 bits.

Sortie de taille GCC lorsque seul le mode CTR est compilé pour ARM :

$ 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

.. et lors de la compilation pour le jeu d'instructions THUMB, nous aboutissons à bien moins de 1K en taille de code.

$ 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

J'utilise le compilateur ARM GCC de la Free Software Foundation :

$ 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.

Cette implémentation est vérifiée par rapport aux données de :

National Institute of Standards and Technology Special Publication 800-38A 2001 ED Annexe F : Vecteurs d'exemple pour les modes de fonctionnement de l'AES.

Les autres annexes du document sont précieuses pour les détails d'implémentation, par exemple le bourrage, la génération des IV et des nonces en mode CTR, etc.

Un merci sincère à toutes les personnes formidables qui ont contribué à ce projet.

Tout le contenu de ce dépôt est dans le domaine public.

Télécharger l’outil