Projet C axé sécurité/robustesse : gestion rigoureuse de la mémoire et des entrées utilisateur pour éviter failles et crashs.
Telecharger & tester
make (produit libhashtable.a, une table de hachage generique ; bibliotheque statique sans executable principal)
Secured est un projet Epitech de Tek1 (solo) qui cloture le cycle de programmation elementaire en C en faisant construire une bibliotheque statique de table de hachage (libhashtable.a), destinee a proteger des donnees sensibles comme des plans de robot.
La premiere etape consiste a ecrire sa propre fonction de hachage, de signature int hash(char *key, int len) imposee par le fichier hashtable.h fourni, qui doit repondre a quatre criteres de qualite : le resultat depend entierement des donnees en entree, tous les octets de la cle sont utilises dans le calcul, deux cles tres proches produisent des sorties tres differentes (effet avalanche), et les valeurs obtenues se repartissent uniformement dans la table une fois reduites au modulo de sa taille.
La table elle-meme (type opaque hashtable_t, dont la structure interne est laissee libre) est creee par new_hashtable en lui passant la fonction de hachage et la taille voulue, puis manipulee via quatre fonctions imposees : ht_insert, ht_delete, ht_search et ht_dump, qui associent une cle a une valeur textuelle et doivent gerer proprement les cas d'erreur via leurs valeurs de retour.
Les collisions, c'est-a-dire deux cles differentes aboutissant au meme index apres modulo, sont resolues par chainage separe : chaque case du tableau porte une liste des paires cle/valeur qui y ont ete rangees, et l'insertion d'une cle deja presente doit mettre a jour sa valeur plutot que d'en creer un doublon.
Les fonctions autorisees se limitent a write, malloc et free, ce qui exclut printf et impose d'ecrire toute la logique d'affichage et de gestion memoire a la main ; comme pour les projets precedents du module, la structure doit rester performante face a un grand nombre d'entrees.
Projet suivant
