MD5 (Message Digest Algorithm), une fonction de hachage cryptographique largement utilisée, peut produire une valeur de hachage de 128 bits (16 octets) (valeur de hachage) pour garantir l'intégrité de la transmission d'informations cohérente. Le chiffre 5 après est dû au fait qu'il a été inventé pour remplacer le MD4. Simple compréhension, sa fonction est de donner au fichier un identifiant unique. Si on modifie l'extension d'un fichier, le fichier risque de ne pas être ouvert, mais pour MD5, il n'y a pas de changement. Donc pour un fichier, tout changement de nom est inutile pour la vérification md5.
Voici quelques-unes des applications les plus fréquentes que j'ai vues.
Étant donné que le réseau n'est pas parfait, des erreurs peuvent survenir lors du téléchargement de fichiers volumineux (les petits fichiers peuvent également le faire, mais généralement plus le fichier est volumineux, plus le risque est grand). Il s'agit d'un phénomène normal. normale. Par conséquent, certains fichiers JAR ou outils de développement fournissent généralement en plus la valeur md5 d'un fichier à télécharger (car il est très petit, il est généralement considéré comme sans erreur) pour que les utilisateurs puissent vérifier si le fichier est téléchargé de manière incorrecte. Mais maintenant, le réseau s’améliore de plus en plus et il n’y a pratiquement aucune erreur. Par conséquent, si l'état du réseau de l'utilisateur est mauvais, assurez-vous de le vérifier après le téléchargement pour éviter les erreurs. )
En revanche, la gamme d'applications de téléchargement de fichiers avec une valeur md5 est plus large. L'objectif principal ici est la déduplication et le filtrage des fichiers.
Nous savons que les fichiers téléchargés par les utilisateurs comportent généralement de nombreux doublons, tels que des films, des séries télévisées, des jeux ou d'autres ressources populaires récemment populaires. En fait, ils occupent une grande partie des fichiers téléchargés par les utilisateurs, donc pour une même ressource, une seule copie doit être stockée. Imaginez que 10 000 utilisateurs (probablement moins de 10 000) téléchargent le même film de 4 Go, la capacité totale du disque requise est alors : 4*10 000 Go. Si vous ne téléchargez qu'une seule copie, pour les téléchargements d'autres utilisateurs, la valeur md5 du fichier est calculée localement. Si elle est la même, il est considéré comme le même fichier, et alors seulement 4 Go d'espace suffisent (bien sûr, la taille de l'espace pour l'enregistrement des informations est ignorée ici. Mais par rapport à la taille du fichier lui-même, cette information est encore très petite). Vous pouvez imaginer à quel point ce gain de place est énorme.
Tout le monde devrait l'utiliser souvent dans sa vie quotidienne. Le téléchargement d'un gros fichier de plusieurs Go peut être réalisé en quelques secondes. Cependant, toute personne ayant une petite connaissance d'Internet sait que le taux de téléchargement du réseau est inférieur au taux de téléchargement. (ceci est uniquement destiné aux utilisateurs finaux) , la vitesse de téléchargement ne peut pas être atteinte et le téléchargement est même impossible. Par conséquent, il doit simplement effectuer un processus de calcul de la valeur md5 du fichier. Selon le résultat du calcul, s'il y en a un, il ne sera pas téléchargé. Il enregistrera simplement que l'utilisateur est propriétaire du fichier. Sinon, téléchargez-le honnêtement. Bien sûr, ce processus est généralement très lent.
Ainsi, les utilisateurs doivent respecter les politiques et réglementations des plateformes concernées.
Modifiez la valeur MD5 du fichierGénéralement, tant que le contenu binaire du fichier est modifié, la valeur md5 du fichier changera définitivement. Il existe généralement un moyen de compresser et de télécharger plusieurs fichiers en utilisant des fichiers compressés. De cette manière, la valeur md5 des fichiers compressés changera également. Cependant, certaines plates-formes peuvent également décompresser des fichiers, ce n'est donc pas une panacée. Cependant, il est relativement facile de modifier et de restaurer les données binaires du fichier via un programme. Vous pouvez utiliser le flux Java pour effectuer presque toutes les opérations sur le fichier (par exemple, chiffrer chaque octet du fichier, ce qui rend sa restauration difficile). le fichier, ou C'est également une bonne méthode pour simplement crypter une section ou créer d'abord un fichier, écrire un numéro fixe dans le fichier, puis écrire les données du fichier associé). Pour les fichiers, nous pouvons simplement les considérer comme une série de flux binaires continus (logiquement). Les fusionner (augmenter) ou les tronquer (diminuer) est une opération très simple. Voici un processus simple impliquantfichiers et IO Les flux de connaissances . .
Un programme simple pour calculer md5Ce programme est celui ci-dessus dansJava Network Programming Le fil est supprimé ici et l'opération est simplifiée. Quoi qu'il en soit, il n'est utilisé que pour calculer la valeur md5 et n'en nécessite pas d'autre. opérations de l’utilisateur.
import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.security.DigestInputStream; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import javax.xml.bind.DatatypeConverter; public class TestMD5 { public static void main(String[] args){ for (String filepath : args) { String md5 = computeMD5(new File(filepath)); System.out.println(md5); } } private static String computeMD5(File file) { DigestInputStream din = null; try { MessageDigest md5 = MessageDigest.getInstance("MD5"); //第一个参数是一个输入流 din = new DigestInputStream(new BufferedInputStream(new FileInputStream(file)), md5); byte[] b = new byte[1024]; while (din.read(b) != -1); byte[] digest = md5.digest(); StringBuilder result = new StringBuilder(file.getName()); result.append(": "); result.append(DatatypeConverter.printHexBinary(digest)); return result.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (din != null) { din.close(); } } catch (IOException e) { e.printStackTrace(); } } return null; } }
Voici deux images, fusionnez-les. Notez que la fusion que j'ai ici n'est pas la fusion de fichiers habituelle (comme la fusion d'une image de grille de neuf carrés), mais. la fusion Fusion de données binaires de fichiers.
Calculez d'abord la valeur md5 du fichier. Notez que le Ahusky.jpeg ci-dessous est un nom du husky.jpeg ci-dessus. On peut voir qu'il n'y a aucun changement dans la valeur md5, donc c'est la même chose. déposer.
Puis fusionnez les fichiers.
Calculez la valeur md5 du fichier fusionné
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!