139 votes

Hash Code et Checksum - quelle est la différence?

D'après ce que je comprends, code de hachage et somme de contrôle sont des éléments similaires: une valeur numérique, calculée pour un bloc de données, relativement unique.

C'est-à-dire que la probabilité que deux blocs de données produisent la même valeur de hachage / somme de contrôle numérique est suffisamment faible pour pouvoir être ignorée aux fins de l'application.

Alors avons-nous deux mots pour la même chose ou existe-t-il des différences importantes entre les codes de hachage et les sommes de contrôle?

89voto

Zach Scrivena Points 15052

Je dirais qu'une somme de contrôle est nécessairement un hashcode. Cependant, pas tous les hashcodes faire de bonnes sommes.

Une somme de contrôle a un but spécial --- il vérifie ou vérifie l'intégrité des données (certains peuvent aller au-delà en permettant à correction d'erreur). La "bonne" les sommes de contrôle sont faciles à calculer, et peut détecter de nombreux types d'altérations de données (par exemple, un, deux, trois bits erronés).

Un hashcode décrit simplement une fonction mathématique que les cartes de données à une certaine valeur. Lorsqu'il est utilisé comme un moyen d'indexation dans le cadre des structures de données (par exemple une table de hachage), une faible probabilité de collision est souhaitable.

45voto

Rafał Dowgird Points 16600

Il y a un but différent derrière chacun d'eux:

  • Code de hachage - conçu pour être le hasard dans l'ensemble de son domaine (pour minimiser les collisions dans les tables de hachage). De hachage cryptographique codes sont également conçus pour être mathématiquement impossible à renverser.
  • Somme de contrôle - conçu pour détecter les erreurs les plus courantes dans les données et, souvent, pour être le plus rapide à calculer (pour l'efficacité de la somme de contrôle rapide des flux de données).

Dans la pratique, les mêmes fonctions sont souvent bons pour les deux. En particulier, un fort niveau de chiffrement le code de hachage est une bonne somme de contrôle (il est presque impossible qu'une erreur aléatoire cassent une forte fonction de hachage), si vous pouvez vous permettre le coût de calcul.

25voto

Michael Borgwardt Points 181658

Il y a en effet quelques différences:

  • Sommes juste besoin d'être différent lorsque l'entrée est différente (autant que possible), mais il est presque aussi important qu'ils sont rapides à calculer.
  • Des codes de hachage (pour une utilisation dans les tables de hashage) ont les mêmes exigences, et en outre, ils doivent être répartis uniformément à travers le code de l'espace, en particulier pour les entrées qui sont similaires.
  • Des empreintes cryptographiques ont le beaucoup plus strictes, de l'exigence que la donnée d'une table de hachage, vous ne pouvez pas construire une entrée qui produit ce hash. Des temps de calcul vient en second.

9voto

Jon Skeet Points 692016

Wikipedia l'explique bien:

Somme de contrôle les fonctions sont liées à de hachage les fonctions, les empreintes digitales, la randomisation fonctions, et de hachage cryptographique fonctions. Cependant, chacun de ces concepts a différentes applications et donc différents objectifs de conception. Les chiffres de contrôle et les bits de parité sont cas particuliers de sommes de contrôle, approprié pour de petits blocs de données (comme les numéros de Sécurité Sociale, de la banque les numéros de compte, ordinateur de mots, les octets, etc.). Certains codes de correction d'erreur sont basées sur spécial sommes que non seulement détecter les erreurs courantes, mais aussi permettre à l' origine des données récupérées à des certains cas.

4voto

Steven Robbins Points 18791

Ces jours-ci, ils sont interchangeables, mais jadis, une somme de contrôle était une technique très simple: vous ajoutiez toutes les données (généralement en octets) et en collant un octet à la fin avec cette valeur en .. puis, espérons-le savoir si certaines des données d'origine ont été corrompues. Semblable à un bit de contrôle, mais avec des octets.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X