Bon choix pour un algorithme de checksum léger?

Je me retrouve à avoir besoin de générer une somme de contrôle pour une chaîne de données, à des fins de cohérence. L'idée générale est que le client peut se régénérer à la somme de contrôle basé sur la charge utile qu'il reçoit, et donc de détecter toute corruption qui a eu lieu en transit. Je suis vaguement au courant qu'il existe toutes sortes de principes mathématiques derrière ce genre de chose, et qu'il est très facile pour des erreurs de rendre l'ensemble de l'algorithme inefficace si vous essayez de rouler vous-même.

Donc je suis à la recherche pour obtenir des conseils sur un hachage/algorithme de somme de contrôle avec les critères suivants:

  • Il sera généré par Javascript, doit donc être relativement légère par le calcul.
  • La validation se fait en Java (si je ne vois pas ce réellement un problème).
  • Il faudra saisir un texte (URL-encodé en Unicode, ce qui je crois est en ASCII) d'une longueur modérée, généralement autour de 200 à 300 caractères et dans tous les cas en dessous de 2000.
  • La sortie doit être en texte ASCII, et la plus courte, il peut être le mieux.

Je suis principalement intéressé par quelque chose de léger, plutôt que d'obtenir l'absolu le plus petit risque de collisions possibles. Serais-je naïf de croire qu'un enfant de huit caractères serait approprié pour cela? Je tiens également à préciser que ce n'est pas la fin du monde si la corruption n'est pas repris à l'étape de validation (et je n'ai conscience que ce ne sera pas fiable à 100%), si le reste de mon code est nettement moins efficace pour tous les corrompus de l'entrée, qui se glisse à travers.

Edit - merci à tous ceux qui ont contribué. Je suis allé avec le Adler32 option et étant donné qu'il a été pris en charge nativement en Java, très facile à mettre en œuvre en Javascript, rapide à calculer, à ses deux extrémités et de 8 octets de sortie, c'était exactement à mes besoins.

(Notez que je me rends compte que le réseau de transport est peu probable d'être responsable des erreurs de corruption et de ne pas être le pliage mes bras sur cette question; cependant, l'ajout de la somme de contrôle de validation enlève un point de défaillance et les moyens que nous puissions nous concentrer sur d'autres domaines si cela devait se reproduire.)

source d'informationauteur Andrzej Doyle