Beispielprogramm, das den Hashwert einer Datei in Java zurückgibt

Dies ist ein Beispielprogramm, das den Hashwert einer Datei mit Java zurückgibt.

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 {

	/**MD2-Algorithmus*/
	public static final String MD2 = "MD2";
	/**MD5-Algorithmus*/
	public static final String MD5 = "MD5";
	/** SHA-1 Algorithmus*/
	public static final String SHA_1 = "SHA-1";
	/** SHA-256 Algorithmen*/
	public static final String SHA_256 = "SHA-256";
	/** SHA-512 Algorithmus*/
	public static final String SHA_512 = "SHA-512";

	/**
	 *Gibt den Hashwert (Zeichenfolge) der Datei zurück
	 * @param filePath Dateipfad
	 * @param algorithmName Algorithmus
	 * @Rückgabe des Hash-Werts (Zeichenfolge)
	 */
	public static String getfileHash(String filePath, String algorithmName) {

		Path path = Paths.get(filePath);

		byte[] hash = null;

		//Algorithmuserfassung
		MessageDigest md = null;
		try {
			md = MessageDigest.getInstance(algorithmName);
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}

		try (
				//Generierung von Eingabestreams
				DigestInputStream dis = new DigestInputStream(
						new BufferedInputStream(Files.newInputStream(path)), md)) {

			//Datei lesen
			while (dis.read() != -1) {
			}

			//Hash-Wert-Berechnung
			hash = md.digest();

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

		//Konvertieren Sie den Hashwert (Byte) in eine Zeichenfolge und geben Sie ihn zurück
		StringBuilder sb = new StringBuilder();
		for (byte b : hash) {
			String hex = String.format("%02x", b);
			sb.append(hex);
		}
		return sb.toString();
	}
}

Ich verwende java.security.DigestInputStream und java.security.MessageDigest, um den Hashwert zu erhalten. Der erfasste Hashwert (Byte) wird in eine Zeichenfolge konvertiert und zurückgegeben.


das ist alles

Recommended Posts

Beispielprogramm, das den Hashwert einer Datei in Java zurückgibt
Ein Programm, das die Anzahl der Wörter in einer Liste zählt
Beispielcode zum Zuweisen eines Werts in der Eigenschaftendatei zu einem Feld des erwarteten Typs
Rufen Sie die öffentliche URL der privaten Datei von Flickr in Java ab
[Java] Gibt eine japanische Namensdatei im Dateinamen im HTTP-Header zurück
Ein Programm (Java), das die Summe von ungeraden und geraden Zahlen in einem Array ausgibt
Die Geschichte, zu vergessen, eine Datei in Java zu schließen und zu scheitern
Messen Sie die Größe eines Ordners mit Java
Eine Bat-Datei, die Java in Windows verwendet
Erstellen eines Beispielprogramms mit dem Problem eines Datenbankspezialisten für DDD-Verbesserung 2
[Java] Holen Sie sich die Datei unabhängig von der Umgebung in das JAR
[Java] Ganzzahlige Informationen von Zeichen in der Textdatei, die mit der Methode read () erfasst wurden
Eine kurze Erklärung der fünf Arten von Java Static
Aktivieren Sie die Zelle A1 jeder Excel-Datei mit Java
Entpacken Sie die Zip-Datei in Java
Ein einfaches Beispiel für Rückrufe in Java
Reihenfolge der Verarbeitung im Programm
Ich habe versucht, ein Programm in Java zu erstellen, das das Problem des Handlungsreisenden mit einem genetischen Algorithmus löst
Lassen Sie uns eine TODO-App in Java 5 erstellen. Schalten Sie die Anzeige von TODO um
Formular, das den Wert des sich wiederholenden Elements in Spring MVC erhält
Beispielcode mit JMustache, der Moustache-Vorlagen-Engine in Java
So ermitteln Sie die Länge einer Audiodatei mit Java
So erhöhen Sie den Wert von Map in einer Zeile in Java
Holen Sie sich das Ergebnis von POST in Java
Die Geschichte des Schreibens von Java in Emacs
Beispiel zum Entpacken einer gz-Datei in Java
Erhöhen Sie dynamisch die Anzahl der Elemente in einem zweidimensionalen Java-Array (mehrdimensionales Array).
Deklarieren Sie eine Methode mit einem Java-Rückgabewert mit dem Rückgabewert-Datentyp
Eine Sammlung von Phrasen, die das "unterschiedliche Gefühl" von Java und JavaScript beeindruckt
Schritte zum Ausführen von Spring Boot beziehen sich auf die Werte in der Eigenschaftendatei
Anmerkung: [Java] Wenn sich eine Datei im überwachten Verzeichnis befindet, verarbeiten Sie sie.
Dies und das der Implementierung der zeitlichen Beurteilung von Daten in Java
So finden Sie heraus, welche Java-Version der Klassendatei kompiliert wurde
So ändern Sie den Wert einer Variablen an einem Haltepunkt in IntelliJ
So ermitteln Sie den absoluten Pfad eines in Java ausgeführten Verzeichnisses
[Java] Implementieren Sie eine Funktion, die eine im Builder-Muster implementierte Klasse verwendet
Ich habe versucht, ein Beispielprogramm mit dem Problem des Datenbankspezialisten für domänengesteuertes Design zu erstellen
Java, das eine Datei im Vmg-Format im EML-Format ausgibt
Ich habe ein Programm zur Beurteilung von Primzahlen in Java erstellt
[Java] Behandlung von Java Beans in der Methodenkette
Die Geschichte eines gewöhnlichen Othello in Java
Lesen Sie eine Zeichenfolge in einer PDF-Datei mit Java
Über die Idee anonymer Klassen in Java
Eine Geschichte über das JDK in der Java 11-Ära
Beispielquellcode zum Ermitteln des minimalen gemeinsamen Vielfachen mehrerer Werte in Java
Spüren Sie den Lauf der Zeit auch in Java
Ich habe ein Programm zur Beurteilung von Primzahlen in Java geschrieben
[Java] Dateien in src / main / resources lesen
Ein kurzer Überblick über Java, das im Unterricht gelernt wurde
Code zum Löschen aller Dateien mit dem angegebenen Präfix in AWS S3 (Java)
Überprüfen Sie das ID-Token eines von AWS Cognito in Java authentifizierten Benutzers
Ich habe ein Primfaktorisierungsprogramm in Java geschrieben
Importieren Sie Dateien derselben Hierarchie in Java
Eine Geschichte über das Ausführen eines Programms, das Dateien in Java aus einer Bat-Datei kopiert, um die tägliche Arbeit ein wenig effizienter zu gestalten
Beispielcode zum Abrufen der wichtigsten SQL-Typwerte in Java + MySQL 8.0
Ich möchte die MD5-Prüfsumme einer Datei in Java finden und das Ergebnis als Zeichenfolge in hexadezimaler Notation erhalten.
Die Geschichte, dass der Port im Spring-Boot-Beispielprogramm unbrauchbar wird
Beachten Sie (Beispielcode), dass in Minecraft 1.12.2 ein Pflanzenblock wie Sweet Berry von 1.14 hinzugefügt wurde