Google vient d'annoncer FarmHash, une nouvelle famille de fonctions de hachage de chaînes de caractères. FarmHash est le successeur de CityHash, duquel il hérite beaucoup d'astuces et de techniques. FarmHash a de nombreux objectifs, et prétend améliorer CityHash sur de nombreux points.
D'après Geoff Pike, Ingénieur logiciel à Google et co-auteur de la librairie avec Jyrki Alakuijala, bien que le développement de FarmHash ait été influencé par les types de CPU présents dans les centres de données de Google, l'un des objectifs de la bibliothèque est qu'elle soit véloce et utilisée aisément par les développeurs sur les téléphones, les tablettes et les PCs. Cela a conduit à l'amélioration des implémentations de hachage 32 et 64 bits.
Une autre amélioration par rapport à CityHash est la mise en place d'une interface au dessus des multiples implémentations spécifiques à une plateforme, ajoute Geoff. De cette manière, FarmHash traite également du cas où un développeur veut simplement une fonction de hachage rapide et robuste pour table de hachage, qui ne soit pas nécessairement la même pour chaque plateforme.
Pour cela, FarmHash comprend uniquement des fonctions de hachage de tableaux d'octets sur les plateformes 32, 64 et 128 bits. Les développements futurs prévoient de supporter les entiers, les tuples et d'autres types de données.
On a découvert que l'algorithme de hachage de CityHash était vulnérable aux attaques ciblant les faiblesses des algorithmes qui permettent des collisions de hachage multiples (hash flooding). Cela pourrait surcharger rapidement n'importe quelle application qui utiliserait de tels algorithmes de hachage, bien qu'aucune faille ne soit répertoriée pour CityHash . La vulnérabilité a également affecté d'autres implémentations de hachage basées sur MurmurHash. Au moment de la rédaction de l'article, il n'est pas certain que FarmHash soit à l'abri de cette même vulnérabilité.