Je suis en train de construire un système qui doit être capable de trouver si les blobs d'octets ont été mis à jour . Plutôt que de stocker l'ensemble du blob (qui peut atteindre 5 Mo), je pense que je devrais calculer une somme de contrôle de celui-ci, le stocker et calculer la même somme de contrôle un peu plus tard, pour voir si le blob a été mis à jour.
L'objectif est de minimiser les éléments suivants (dans cet ordre) :
- taille de la somme de contrôle
- temps de calcul
- probabilité de collisions (2 sommes de contrôle identiques se produisent même si le contenu a été modifié).
Il est acceptable pour notre système que la collision ne soit pas supérieure à 1/1 000 000. La préoccupation n'est pas la sécurité, mais simplement la détection des mises à jour/erreurs, donc les rares collisions sont acceptables. (C'est pourquoi je l'ai placé en dernier dans les choses à minimiser).
De plus, nous ne pouvons pas modifier nous-mêmes les blocs de texte.
Bien sûr, md5
, crc
o sha1
me viennent à l'esprit, et si je voulais une solution rapide, je la choisirais. Cependant, plus qu'une solution rapide, je cherche à savoir ce qui pourrait être une comparaison des différentes méthodes ainsi que leurs avantages et inconvénients .
0 votes
Quelle est votre préoccupation, ici ? Vérifiez-vous simplement si vos blocs de données ont changé depuis un certain temps, ou essayez-vous de détecter une altération malveillante ?
0 votes
J'essaie juste de voir s'il y a eu des mises à jour.
1 votes
Si vous n'êtes pas préoccupé par la possibilité d'une altération malveillante mais que vous voulez simplement suivre les modifications, et si (comme vous le dites ailleurs) vous pouvez vivre avec une probabilité de collision accidentelle d'une sur un million, alors optez pour le CRC - il est plus rapide que MD5 ou SHA et la probabilité de collisions est bien dans le cadre de vos spécifications.
1 votes
Je recommande le CRC-64. Il est beaucoup plus rapide que les hachages cryptographiques et devrait répondre à vos exigences en matière de probabilité de collision.