Comment utiliser Java pour calculer la valeur MD5 d'un fichier modifié
Qu'est-ce que MD5 ?
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.
Applications de MD5
Voici quelques-unes des applications les plus fréquentes que j'ai vues.
Vérification des fichiers de téléchargement
É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. )
Téléchargement de fichiers
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.
Déduplication de 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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Java est un langage de programmation populaire qui peut être appris aussi bien par les développeurs débutants que par les développeurs expérimentés. Ce didacticiel commence par les concepts de base et progresse vers des sujets avancés. Après avoir installé le kit de développement Java, vous pouvez vous entraîner à la programmation en créant un simple programme « Hello, World ! ». Une fois que vous avez compris le code, utilisez l'invite de commande pour compiler et exécuter le programme, et « Hello, World ! » s'affichera sur la console. L'apprentissage de Java commence votre parcours de programmation et, à mesure que votre maîtrise s'approfondit, vous pouvez créer des applications plus complexes.
