human
Je cherche à utiliser Java pour obtenir la somme de contrôle MD5 d'un fichier. Comment cela se fait-il
gpt
L'API com.google.common.hash offre :

* Une API conviviale et unifiée pour toutes les fonctions de hachage
* Des implémentations de murmur3 de 32 et 128 bits pouvant être initialisées
* Des adaptateurs md5(), sha1(), sha256(), sha512(), changez simplement une ligne de code pour passer de l'un à l'autre, ainsi que de murmur.
* goodFastHash(int bits), pour quand vous ne vous souciez pas de l'algorithme que vous utilisez
* Utilitaires généraux pour les instances de HashCode, comme combineOrdered / combineUnordered

Lisez le guide de l'utilisateur (IO Explained, Hashing Explained).
Pour votre cas d'utilisation, ```Files.hash()``` calcule et renvoie la valeur de hachage pour un fichier.
Par exemple, un calcul de hachage sha-1 (remplacez SHA-1 par MD5 pour obtenir le hachage MD5)
```HashCode hc = Files.asByteSource(file).hash(Hashing.sha1());
"SHA-1: " + hc.toString();
```
Notez que crc32 est beaucoup plus rapide que md5, utilisez donc crc32 si vous n'avez pas besoin d'une somme de contrôle cryptographiquement sécurisée. Notez également que md5 ne doit pas être utilisé pour stocker des mots de passe et similaires car il est trop facile à forcer par la méthode de la force brute, utilisez plutôt bcrypt, scrypt ou sha-256 pour les mots de passe.
Pour une protection à long terme avec des hachages, un schéma de signature de Merkle ajoute à la sécurité et le groupe d'étude sur la cryptographie post-quantique parrainé par la Commission européenne recommande l'utilisation de cette cryptographie pour une protection à long terme contre les ordinateurs quantiques (réf).
Notez que crc32 a un taux de collision plus élevé que les autres. Quelle partie de Files.hash, comme indiqué ci-dessus, ne couvre pas Files.hash ?