Exemple de programme qui renvoie la valeur de hachage d'un fichier en Java

Ceci est un exemple de programme qui renvoie la valeur de hachage d'un fichier avec java.

SampleMain.java


package test;

public class SampleMain {

	public static void main(String[] args) {
		System.out.println(SampleHash
				.getfileHash("glassfish-5.0.1.zip", SampleHash.SHA_512));
	}
}

SampleHash.java


package test;

import java.io.BufferedInputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.security.DigestInputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class SampleHash {

	/**Algorithme MD2*/
	public static final String MD2 = "MD2";
	/**Algorithme MD5*/
	public static final String MD5 = "MD5";
	/** SHA-1 algorithme*/
	public static final String SHA_1 = "SHA-1";
	/** SHA-256 algorithmes*/
	public static final String SHA_256 = "SHA-256";
	/** SHA-512 algorithme*/
	public static final String SHA_512 = "SHA-512";

	/**
	 *Renvoie la valeur de hachage (chaîne de caractères) du fichier
	 * @param filePath Chemin du fichier
	 * @algorithme param algorithmName
	 * @renvoie la valeur de hachage (chaîne de caractères)
	 */
	public static String getfileHash(String filePath, String algorithmName) {

		Path path = Paths.get(filePath);

		byte[] hash = null;

		//Acquisition d'algorithmes
		MessageDigest md = null;
		try {
			md = MessageDigest.getInstance(algorithmName);
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}

		try (
				//Génération de flux d'entrée
				DigestInputStream dis = new DigestInputStream(
						new BufferedInputStream(Files.newInputStream(path)), md)) {

			//Lire le fichier
			while (dis.read() != -1) {
			}

			//Calcul de la valeur de hachage
			hash = md.digest();

		} catch (IOException e) {
			e.printStackTrace();
		}

		//Convertit la valeur de hachage (octet) en chaîne de caractères et retourne
		StringBuilder sb = new StringBuilder();
		for (byte b : hash) {
			String hex = String.format("%02x", b);
			sb.append(hex);
		}
		return sb.toString();
	}
}

J'utilise java.security.DigestInputStream et java.security.MessageDigest pour obtenir la valeur de hachage. La valeur de hachage acquise (octet) est convertie en chaîne de caractères et renvoyée.


c'est tout

Recommended Posts

Exemple de programme qui renvoie la valeur de hachage d'un fichier en Java
Un programme qui compte le nombre de mots dans une liste
Exemple de code pour attribuer une valeur dans le fichier de propriétés à un champ du type attendu
Obtenez l'URL publique du fichier privé de Flickr en Java
[Java] Renvoie un fichier de nom japonais dans le nom de fichier dans l'en-tête HTTP
Un programme (Java) qui génère la somme des nombres pairs et impairs dans un tableau
L'histoire de l'oubli de fermer un fichier en Java et de l'échec
Mesurer la taille d'un dossier avec Java
Un fichier bat qui utilise Java dans Windows
Création d'un exemple de programme en utilisant le problème d'un spécialiste des bases de données dans DDD Improvement 2
[Java] Récupère le fichier dans le fichier jar quel que soit l'environnement
[Java] Informations entières des caractères du fichier texte acquises par la méthode read ()
Une explication rapide des cinq types de statique Java
Activez la cellule A1 de chaque feuille de fichier Excel avec Java
Décompressez le fichier zip en Java
Un exemple simple de rappels en Java
Ordre de traitement dans le programme
J'ai essayé de créer un programme en Java qui résout le problème du voyageur de commerce avec un algorithme génétique
Créons une application TODO en Java 5 Changer l'affichage de TODO
Formulaire qui reçoit la valeur de l'élément répétitif dans Spring MVC
Exemple de code utilisant JMustache, le moteur de modèles Moustache en Java
Comment obtenir la longueur d'un fichier audio avec Java
Comment incrémenter la valeur de Map sur une ligne en Java
Obtenez le résultat de POST en Java
L'histoire de l'écriture de Java dans Emacs
Exemple pour décompresser le fichier gz en Java
Augmenter dynamiquement le nombre d'éléments dans un tableau bidimensionnel Java (tableau multidimensionnel)
Déclarez une méthode qui a une valeur de retour Java avec le type de données de valeur de retour
Une collection de phrases qui impressionne le "sentiment différent" de Java et de JavaScript
Étapes pour rendre Spring Boot capable de faire référence à la valeur dans le fichier de propriétés
Mémo: [Java] Si un fichier se trouve dans le répertoire surveillé, traitez-le.
Ceci et cela de la mise en œuvre du jugement en temps réel des dates en Java
Comment savoir quelle version Java d'un fichier de classe a été compilée
Comment changer la valeur d'une variable à un point d'arrêt dans intelliJ
Comment obtenir le chemin absolu d'un répertoire s'exécutant en Java
[Java] Implémenter une fonction qui utilise une classe implémentée dans le modèle Builder
J'ai essayé de créer un exemple de programme en utilisant le problème du spécialiste des bases de données dans la conception pilotée par domaine
java qui génère un fichier au format vmg au format eml
J'ai créé un programme de jugement des nombres premiers en Java
[Java] Gestion des Java Beans dans la chaîne de méthodes
L'histoire de la fabrication d'un Othello ordinaire à Java
Lire une chaîne dans un fichier PDF avec Java
À propos de l'idée des classes anonymes en Java
Une histoire sur le JDK à l'ère de Java 11
Exemple de code source pour trouver le multiple commun minimum de plusieurs valeurs en Java
Ressentez le passage du temps même à Java
J'ai écrit un programme de jugement des nombres premiers en Java
[Java] Lire les fichiers dans src / main / resources
Un examen rapide de Java appris en classe
Code pour supprimer tous les fichiers du préfixe spécifié dans AWS S3 (Java)
Valider le jeton d'ID d'un utilisateur authentifié par AWS Cognito en Java
J'ai écrit un programme de factorisation prime en Java
Importer des fichiers de la même hiérarchie en Java
Une histoire sur l'exécution d'un programme qui copie des fichiers en Java à partir d'un fichier chauve-souris pour rendre le travail quotidien un peu plus efficace
Exemple de code pour obtenir les valeurs de type SQL clés dans Java + MySQL 8.0
Je veux trouver la somme de contrôle MD5 d'un fichier en Java et obtenir le résultat sous forme de chaîne de caractères en notation hexadécimale.
L'histoire du port devenant inutilisable dans l'exemple de programme Spring Boot
Remarque (exemple de code) qui a ajouté un bloc végétal comme Sweet berry de 1.14 dans Minecraft 1.12.2