web-dev-qa-db-fra.com

Y a-t-il une limite pour l'entrée sha256?

Lors du hachage d'une chaîne, comme un mot de passe, avec sha256, la longueur de la chaîne que je hachais est-elle limitée? Par exemple, les chaînes de hachage <= 64 caractères sont-elles uniquement "sûres"?

27
Jackson

Il y a techniquement une limite, mais elle est assez grande. Le schéma de remplissage utilisé pour SHA-256 nécessite que la taille de l'entrée (en bits) soit exprimée sous la forme d'un nombre de 64 bits. Par conséquent, la taille maximale est de (264-1)/8 octets ~ = 2'091'752 téraoctets.

Cela rend la limite presque tout à fait théorique, pas pratique. 

La plupart des gens n’ont de toute façon pas assez de mémoire pour stocker la quantité de données, mais même s’ils le faisaient, le traiter en série pour produire un seul hachage prendrait un temps que la plupart des gens considéreraient comme prohibitif.

Un type de calcul rapide en arrière-de-l’enveloppe indique que même avec les SSD d’entreprise les plus rapides actuellement1 répertorié sur le matériel de Tom et en les répartissant sur une largeur de 16 pour améliorer la bande passante, la simple lecture de cette quantité de données prendrait encore environ 220 ans.


1. En avril 2016 .

47
Jerry Coffin

Il n'y a pas de telle limite, autre que la taille maximale du message de 264-1 bits. SHA2 est fréquemment utilisé pour générer des hachages pour les exécutables, qui ont tendance à être beaucoup plus volumineux que quelques dizaines d'octets.

5
Michael Petrotta

La limite supérieure est indiquée dans la norme NIST FIPS 180-4 . La raison de la limite supérieure est le schéma de remplissage. La longueur du message l est enfin ajoutée au message lors du remplissage.

Ajoutez ensuite le bloc de 64 bits égal au nombre l exprimé en utilisant une représentation binaire

Par conséquent, selon la norme NIST, la taille de fichier maximale pouvant être hachée avec SHA-256 est 2 ^ 64.

1
kelalaka