Longueur maximale pour l'entrée / sortie MD5


Réponses:


240

MD5 traite un message de longueur arbitraire en une sortie de longueur fixe de 128 bits, généralement représentée comme une séquence de 32 chiffres hexadécimaux.


95
Note à moi-même: longueur de hachage MD5 = 128 bits= 16 bytes=32 hex digits
somme de contrôle

2
[Une modification normale] 32 chiffres hexadécimaux et la chaîne ne contient que des mots de «az» et des chiffres de «0-9»
v1h5

1
J'ai remarqué une petite erreur dans les commentaires précédents. Le texte doit être entre guillemets :) "32 chiffres hexadécimaux et la chaîne ne contient que des lettres de 'az' et des chiffres de '0-9'"
Remis B

2
@Shafizadeh Comme l'indique la réponse, l'entrée a une longueur arbitraire. Cela signifie que le paramètre peut avoir n'importe quelle longueur dont vous avez besoin.
kdojeteri

1
@Peping Une petite correction: L'entrée peut être aussi longue que le type de données utilisé dans le langage de programmation utilisé. Exemple: les chaînes de Java utilisent un tableau en interne, par conséquent, une chaîne ne peut contenir que (2 ^ 31) -1 caractères (ou moins, selon la taille du tas). Ce serait également votre entrée maximale pour la fonction MD5 en Java. Mais en théorie pure, la fonction MD5 pourrait effectivement traiter une entrée de longueur arbitraire. ;)
RicoBrassers

38

Ajouter la longueur

Une représentation 64 bits de b (la longueur du message avant l'ajout des bits de remplissage) est ajoutée au résultat de l'étape précédente. Dans le cas peu probable où b est supérieur à 2 ^ 64, seuls les 64 bits de poids faible de b sont utilisés.

  • Le hachage est toujours de 128 bits. Si vous l'encodez sous forme de chaîne hexdécimale, vous pouvez encoder 4 bits par caractère, soit 32 caractères.
  • MD5 n'est pas un cryptage. Vous ne pouvez pas en général "décrypter" un hachage MD5 pour obtenir la chaîne d'origine.

En savoir plus ici .


La longueur du message est illimitée , que voulez-vous dire par message ? Est-ce une entrée? Ma question estMD5("how many characters exactly?");
Shafizadeh

@Shafizadeh Votre entrée peut être aussi longue que possible dans votre langage de programmation actuel, en Java ce serait (2 ^ 31) -1 caractères dans une chaîne. Et oui, le "message" est l'entrée.
RicoBrassers

@Shafizadeh ... ou à partir d'un fichier, l'entrée peut être aussi grande que le stockage disponible.
ToolmakerSteve

9

Vous pouvez avoir n'importe quelle longueur, mais bien sûr, il peut y avoir un problème de mémoire sur l'ordinateur si l'entrée String est trop longue. La sortie est toujours de 32 caractères.


4
Si la chaîne d'entrée est trop longue, elle n'existerait pas dans le système en premier lieu, à moins qu'elle ne soit dans un fichier, auquel cas vous pouvez passer des blocs à la fonction digest au fur et à mesure de leur lecture, en d'autres termes, vous n'avez besoin que de pour avoir des blockoctets de l'entrée disponibles à la fois.
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳

6

L'algorithme a été conçu pour prendre en charge une longueur d'entrée arbitraire. Ie vous pouvez calculer des hachages de gros fichiers comme l'ISO d'un DVD ...

S'il y a une limitation pour l'entrée, cela peut provenir de l'environnement dans lequel la fonction de hachage est utilisée. Disons que vous voulez calculer un fichier et que l'environnement a une limite MAX_FILE.

Mais la chaîne de sortie sera toujours la même: 32 caractères hexadécimaux (128 bits)!


4

Un hachage MD5 de 128 bits est représenté par une séquence de 32 chiffres hexadécimaux.


4

Vous voudrez peut-être utiliser SHA-1 au lieu de MD5 , car MD5 est considéré comme cassé.

Vous pouvez en savoir plus sur les vulnérabilités MD5 dans cet article de Wikipedia .


5
ce n'est rien de plus qu'une rumeur. MD5 est assez bon pour la plupart des tâches de développement Web habituelles
Votre bon sens

11
Son créateur, ainsi que Bruce Schneier et Homeland Security sont d'accord pour dire qu'il est cassé ... Combien de "rumeurs" supplémentaires avez-vous besoin pour vous convaincre qu'il est réellement cassé depuis un certain temps? Le fait est qu'il est arbitrairement facile de trouver une entrée qui génère un hachage spécifique. Bien sûr, vous pouvez atténuer ce risque en salant vos intrants, en utilisant des sels suffisamment gros. Sur une note latérale: SHA-1 est considéré comme tout aussi cassé. Si vous conseillez aux gens de mettre à niveau, conseillez-leur de passer à SHA-2, s'il vous plaît.
kander

3
@kander oh j'ai besoin de très peu. Un exemple. Étant donné un hachage, apporterez-vous une chaîne source? Pas un lien vers un excellent article, pas l'opinion de quelqu'un mais juste une chaîne source?
Votre bon sens

2
Personne n'a vraiment mentionné ce qu'ils signifient vraiment sous le terme «cassé». Bien que @YourCommonSense ait du sens.
JSmyth

4
Vous parlez des utilisations sécuritaires de MD5. Mais MD5 (ou toute autre technique de hachage) a une tonne d'autres utilisations. Pour ma part, je veux l'utiliser pour renommer un fichier par son hachage. Je ne suis sûrement pas préoccupé par la résistance aux collisions du MD5. Tout ce que vous avez posté est toujours vrai, juste mes 2 cents.
tfrascaroli

3

Il n'y a pas de limite à l'entrée de md5 que je connaisse. Certaines implémentations nécessitent que l'entrée entière soit chargée en mémoire avant de la passer dans la fonction md5 (c'est-à-dire que l'implémentation agit sur un bloc de mémoire, pas sur un flux), mais ce n'est pas une limitation de l'algorithme lui-même. La sortie est toujours de 128 bits. Notez que md5 n'est pas un algorithme de cryptage, mais un hachage cryptographique. Cela signifie que vous pouvez l'utiliser pour vérifier l'intégrité d'un morceau de données, mais vous ne pouvez pas inverser le hachage. Notez également que md5 est considéré comme cassé, vous ne devez donc pas l'utiliser pour quoi que ce soit lié à la sécurité (il est toujours bon de vérifier l'intégrité des fichiers téléchargés et autres).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.