2012-04-03 4 views

Répondre

1

Non. Le point d'un algorithme de hachage est qu'il produira des résultats différents pour des entrées similaires. S'il était vrai que la somme des hashs pouvait produire le hash de la finale, il serait trivial de récupérer la valeur d'une chaîne hachée en calculant les hashes de chaque lettre et en retraversant la somme. Un bon algorithme de hachage produit des résultats très différents pour tout changement (petit ou grand) dans l'entrée, et produit des changements qui sont impossibles à relier au changement.

SHA1 est meilleur que MD5 à cet égard. MD5 n'est plus vraiment considéré comme sécurisé.

+1

merci pour vos réponses. pour affiner ma question je veux faire ce qui suit: j'ai le md5hash de "je ne sais pas" mais pas la chaîne. j'ai cependant la chaîne "comme le travail". est-il possible de générer le hachage final de "je n'aime pas travailler" en utilisant seulement le md5sum de la première partie et la chaîne "like work"? je ne sais pas si Adam a déjà répondu à cette question. C'est comme le code de la première réponse seulement que je commence à la ligne 5, et mettre le résumé actuel à la md5sum de la première partie. – user1309165

+0

Non. Le hachage ne fonctionne pas de cette façon. –

+0

donc l'algorithme de hachage MD5 a plus dans sa mémoire que le hachage actuel lors de la digestion d'un flux? afin de reprendre le résumé à un moment ultérieur, je devrais enregistrer toutes les tables de la mémoire et pas seulement le hachage md5 correct? – user1309165

0

Je pense que la réponse aux deux est non, mais pourquoi ne pas simplement le tester vous-même?

+2

mieux comme un commentaire, vous ne pensez pas? –

0

Vous pouvez faire quelque chose comme ça en python, mais dans les coulisses, c'est juste concaténer toutes les chaînes pour vous.

import md5 

m = md5.new() 
m.update("I dont ") 
m.update("like working") 
print m.hexdigest() # b436bd6442ee000b4778bdbc8bee71d9 

m = md5.new() 
m.update("I dont like working") 
print m.hexdigest() # b436bd6442ee000b4778bdbc8bee71d9 
+0

ne profite-t-il pas des blocs? vous pourriez pousser de nouvelles parties de cordes jusqu'à ce qu'un bloc soit plein, alors il supprimerait simplement tout le contenu de la chaîne qui a servi à calculer ce bloc, car il a été digéré. cela mettrait une limite à la mémoire max utilisée. Imaginez mettre à jour quelques gigaoctets de contenu de chaîne à partir de la diffusion de données sur disque. –