Maison  >  Article  >  Java  >  Comment utiliser Java pour calculer la valeur MD5 d'un fichier modifié

Comment utiliser Java pour calculer la valeur MD5 d'un fichier modifié

WBOY
WBOYavant
2023-05-29 08:16:451932parcourir

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.

Filtrage de fichiers
Certains fichiers sont liés aux droits d'auteur et à la politique, et les utilisateurs ne sont pas autorisés à les télécharger. Par conséquent, les fichiers téléchargés par l'utilisateur seront également vérifiés, puis comparés à la liste noire en arrière-plan (cela devrait être le cas si la correspondance réussit, alors le fichier ne peut pas être téléchargé ou le fichier téléchargé a été traité). Cette méthode est très efficace et les opérations de changement de nom dites aléatoires effectuées par les utilisateurs sont généralement totalement inutiles.

Ainsi, les utilisateurs doivent respecter les politiques et réglementations des plateformes concernées.

Modifiez la valeur MD5 du fichier

Gé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 impliquant

fichiers et IO Les flux de connaissances . .

Un programme simple pour calculer md5
Ce programme est celui ci-dessus dans

Java 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;
	}
}

Résultats d'exécution

Comment utiliser Java pour calculer la valeur MD5 dun fichier modifié

Modifier la valeur MD5

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.

Comment utiliser Java pour calculer la valeur MD5 dun fichier modifié

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.

Comment utiliser Java pour calculer la valeur MD5 dun fichier modifié

Puis fusionnez les fichiers.

Comment utiliser Java pour calculer la valeur MD5 dun fichier modifié

Calculez la valeur md5 du fichier fusionné

Comment utiliser Java pour calculer la valeur MD5 dun fichier modifié

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer