SHA-1
La cryptographie SHA-1 est une fonction développé par la NSA (agence gouvernemental américain) afin de transmettre de l'information crypté en 160 bits de façon plus sécuritaire. Elle a été définit le 17 avril 1995. Bien qu'avec une attaque Yuval en recherchant par force brute, on obtient un calcul d'une complexité 280 empreintes, depuis 2005, la fonction SHA-1 ne se révèle plus aussi sécuritaire qu'avant, ainsi il est recommandé d'utiliser plutôt une fonction SHA-256 ou Whirlpool.
Encodage
En général, l'algorithme pour de la fonction SHA-1 est le suivant :
MODULE SHA-1(message) * Initialise le contexte h0 ← 67452301h h1 ← EFCDAB89h h2 ← 98BADCFEh h3 ← 10325476h h4 ← C3D2E1F0h ml ← longueur du message en bits * Toujours un multiple du nombre de bits dans un caractère * Traitement préliminaire Ajouter le bit '1' au message, par exemple en ajoutant 80h si la longueur du message est un multiple de 8 bits. Ajouter 0 = k < 512 bits '0', telle que la longueur du message résultant en bits soit congru à -64 = 448 ∩ 511 Ajouter ml, la longueur du message d'origine, sous la forme d'un entier gros-boutiste de 64 bits. Ainsi, la longueur totale est un multiple de 512 bits. * Traitez le message par tranches de 512 bits successives: BOUCLE POUR CHAQUE bloc du message briser un bloc en 16 mots gros-boutiste 32 bits w[i], 0 = i = 15 * Étendez les 16 mots de 32 bits en 80 mots de 32 bits: BOUCLE POUR i ← 16 JUSQU'A 79 w[i] ← (w[i-3] xor w[i-8] xor w[i-14] xor w[i-16]) rotation vers la gauche 1 FIN BOUCLE POUR i * Initialise la valeur haché pour ce morceau : a ← h0 b ← h1 c ← h2 d ← h3 e ← h4 BOUCLE POUR i ← 0 JUSQU'A 79 EVALUER CAS i CASE 0 A 19 : f ← (b ∩ c) U ((¬ b) ∩ d) k ← 5A827999h CASE 20 A 39 : f ← b xor c xor d k ← 6ED9EBA1h CASE 40 A 59 : f ← (b ∩ c) U (b ∩ d) U (c ∩ d) k ← 8F1BBCDCh CASE 60 A 79 : f ← b xor c xor d k ← CA62C1D6h FIN EVALUER CAS temp ← (a décalage vers la gauche 5) + f + e + k + w[i] e ← d d ← c c ← b rotation vers la gauche 30 b ← a a ← temp FIN BOUCLE POUR i * Ajoutez le hachage de cette pièce jusqu'à ce qu'il en résulte: h0 ← h0 + a h1 ← h1 + b h2 ← h2 + c h3 ← h3 + d h4 ← h4 + e FIN BOUCLE POUR CHAQUE * Produisez la valeur de hachage finale (gros-boutiste) sous la forme d'un nombre de 160 bits: RETOURNER (h0 décalage vers la gauche 128) U (h1 décalage vers la gauche 96) U (h2 décalage vers la gauche 64) U (h3 décalage vers la gauche 32) U h4 |
Dernière mise à jour : Samedi, le 18 mai 2019