| **Algorithme** | **Description** | **Taille de sortie** | **Usages courants** | **Avantages** | **Limites** |
|-----------------|-------------------------------------------------------------------------------------------------------|-------------------------------|----------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------|
| **MD5** | Algorithme de hachage largement utilisé dans le passé, désormais considéré comme obsolète en raison de vulnérabilités aux collisions. | 128 bits (16 octets) | - Empreintes numériques<br>- Sommes de contrôle<br>- Vérifications d'intégrité (non sécurisées) | - Rapide à calculer<br>- Bon pour les vérifications d'intégrité de fichiers non critiques. | - Vulnérable aux collisions (deux données différentes produisant le même hash)<br>- Considéré comme non sécurisé. |
| **SHA-1** | Algorithme plus sécurisé que MD5 mais également obsolète en raison de vulnérabilités aux collisions découvertes. | 160 bits (20 octets) | - Anciennement utilisé pour les signatures numériques et les certificats SSL | - Légèrement plus sécurisé que MD5<br>- Encore utilisé dans des contextes non sensibles. | - Vulnérable aux attaques par collision depuis 2017.<br>- Remplacé par SHA-2 et SHA-3 pour des usages sécurisés. |
| **SHA-256** | Partie de la famille SHA-2, algorithme de hachage sécurisé largement utilisé aujourd'hui. | 256 bits (32 octets) | - Certificats SSL<br>- Signatures numériques<br>- Stockage sécurisé des mots de passe<br>- Blockchain | - Très sécurisé contre les collisions et les attaques de préimage. | - Plus lent à calculer que MD5 ou SHA-1, mais avec un meilleur niveau de sécurité. |
| **SHA-512** | Variante plus sécurisée et plus large de SHA-256, avec une sortie de 512 bits. | 512 bits (64 octets) | - Applications nécessitant un niveau de sécurité très élevé<br>- Stockage de mots de passe | - Offre une très grande résistance contre les attaques cryptographiques.<br>- Efficace même avec de très grands fichiers. | - Consomme plus de ressources que SHA-256.<br>- Peut être excessif pour des applications standards. |
| **SHA-3** | Nouvelle génération de SHA, basée sur une approche différente de SHA-2 (Keccak). | Variables (224, 256, 384, 512) | - Sécurité avancée<br>- Utilisé dans des systèmes de cryptographie moderne et pour des applications post-quantum. | - Plus sécurisé que SHA-2, résistant aux attaques post-quantum<br>- Flexible en termes de taille de sortie. | - Moins adopté que SHA-2 pour l'instant, mais en expansion. |
| **RIPEMD-160** | Algorithme de hachage moins courant, développé en Europe, conçu pour être similaire à SHA-1 mais plus sécurisé. | 160 bits (20 octets) | - Utilisé dans certaines applications de cryptographie comme Bitcoin. | - Sécurisé et non vulnérable aux attaques trouvées dans MD5 et SHA-1. | - Moins utilisé et supporté que les algorithmes de la famille SHA.<br>- SHA-2 est généralement préféré. |
| **Whirlpool** | Algorithme de hachage conçu pour fonctionner sur 512 bits, basé sur AES. | 512 bits (64 octets) | - Systèmes de cryptographie nécessitant une sécurité accrue. | - Taille de sortie de 512 bits, haute sécurité<br>- Conçu pour les systèmes de stockage et les signatures numériques. | - Moins largement adopté que SHA-2 ou SHA-3. |
| **BLAKE2** | Successeur du BLAKE (un finaliste de la compétition SHA-3), rapide et sécurisé, conçu pour être une alternative à MD5 et SHA-2. | Variables (256, 512 bits) | - Applications nécessitant un hachage rapide et sécurisé. | - Très rapide par rapport à SHA-2 et SHA-3, tout en restant sécurisé.<br>- Flexible avec des tailles de sortie. | - Encore peu utilisé en dehors de certaines communautés de développeurs. |
| **Argon2** | Algorithme de dérivation de clé et de hachage de mot de passe, gagnant du Password Hashing Competition (PHC) en 2015. | Variables | - Stockage sécurisé de mots de passe (hashing) | - Conçu pour résister aux attaques par force brute sur les mots de passe.<br>- Paramétrable (mémoire, temps, etc.). | - Nécessite plus de configuration que des algorithmes comme SHA-256. |
| **bcrypt** | Algorithme de hachage conçu spécifiquement pour le stockage sécurisé des mots de passe. | Variable (généralement 184 bits)| - Stockage de mots de passe dans les systèmes modernes | - Utilise un facteur de coût ajustable, augmentant le temps de calcul pour résister aux attaques par force brute. | - Relativement plus lent que SHA-256 ou SHA-512, ce qui est intentionnel pour renforcer la sécurité. |
| **scrypt** | Algorithme de hachage de mot de passe conçu pour être coûteux en termes de calcul et de mémoire, empêchant les attaques par matériel spécialisé (ASIC). | Variable | - Stockage de mots de passe<br>- Cryptomonnaies (ex: Litecoin). | - Résistant aux attaques par force brute et aux attaques matérielles.<br>- Peut être ajusté en termes de consommation mémoire. | - Plus complexe à implémenter que bcrypt ou Argon2. |
| **Tiger** | Algorithme de hachage rapide souvent utilisé dans des environnements contraints, comme les systèmes embarqués. | 192 bits (24 octets) | - Vérifications d'intégrité<br>- Hachage dans des environnements limités en ressources. | - Conçu pour être rapide sur des architectures 64 bits.<br>- Bon pour des contextes de faible performance. | - Moins sécurisé et moins adopté que SHA-2.<br>- Vulnérable à certaines attaques cryptographiques. |
| **HAVAL** | Algorithme de hachage configurable, il permet de choisir la taille de sortie et le nombre de passes de hachage. | Variables (128, 160, 192, 224, 256 bits) | - Utilisé dans des systèmes qui nécessitent un hachage flexible. | - Très flexible (nombre de passes, taille de sortie).<br>- Peut augmenter la sécurité par plusieurs passes. | - Peu utilisé aujourd'hui.<br>- Moins sécurisé que SHA-2 ou SHA-3 en termes de résistance aux attaques. |
| **FNV (Fowler-Noll-Vo)** | Algorithme de hachage non cryptographique très rapide, utilisé dans des contextes de hachage de données (ex: tables de hachage). | 32, 64, 128 bits | - Tables de hachage<br>- Algorithmes de recherche. | - Très rapide et simple à implémenter.<br>- Bien adapté pour des structures de données non sécurisées. | - Non sécurisé pour des usages cryptographiques.<br>- Vulnérable aux attaques de collision délibérées. |
| **GOST** | Algorithme de hachage développé en Russie, utilisé dans certaines normes locales. | 256 bits | - Utilisé principalement dans des applications russes et post-soviétiques. | - Reconnu pour sa sécurité dans certains systèmes réglementés. | - Moins adopté à l'international.<br>- Moins documenté et audité par la communauté internationale. |
| **CRC32** | Algorithme de hachage non cryptographique utilisé principalement pour la vérification d'intégrité des données (contrôle de redondance cyclique). | 32 bits | - Vérification d'intégrité<br>- Sommes de contrôle pour détecter des erreurs dans des fichiers ou des paquets. | - Très rapide et efficace pour détecter les erreurs de transmission. | - Non cryptographique : vulnérable aux collisions intentionnelles.<br>- Inadapté pour des contextes de sécurité. |