Pour ces deux façons de calculer un hachage sha1, en ce qui concerne temps efficacité, sont-ils les mêmes?L'efficacité du calcul de hachage python sha1
(1) diviser la chaîne de petits morceaux et mettre à jour le hachage plusieurs fois
import hashlib
...
...
sha1 = hashlib.sha1()
sha1.update(chunk1)
sha1.update(chunk2)
...
(2) Passer la chaîne complète à la fonction de hachage et de calculer le hachage une seule fois
import hashlib
...
...
sha1 = hashlib.sha1()
sha1.update(the_complete_string)
...
Je suppose que c'est le temps linéaire par rapport au nombre total d'octets hachés, donc ce serait la même chose. Mais je suis curieux aussi, si quelqu'un peut le prouver. –
** 1 ** Notez que dans Python 3 vous ne pouvez pas passer une chaîne de texte aux fonctions de hachage hashlib, vous devez passer un objet bytes (ou un objet bytearray). ** 2 ** Si vous n'allez pas hacher l'objet en morceaux, évitez les appels '.update' et passez simplement les octets au constructeur, par exemple' sha1 = hashlib.sha1 (b'some octets »). –
** 3 ** Sauf si vous avez besoin d'utiliser sha1 pour la rétrocompatibilité, vous devriez probablement l'éviter puisque [SHA-1 n'est plus considéré comme sûr contre les adversaires bien financés] (https://en.wikipedia.org/wiki/SHA -1). Au lieu de cela, utilisez un hachage de famille SHA plus grand comme sha256, ou l'une des fonctions les plus récentes trouvées dans [hashtab Python 3] (https://docs.python.org/3/library/hashlib.html), par exemple un hachage SHA3, ou BLAKE. –