Abrufen der MD5-Prüfsumme einer Datei in Java
Ich bin auf der Suche zu verwenden Java, um die MD5-Prüfsumme einer Datei. Ich war wirklich überrascht, aber ich habe nicht in der Lage gewesen, irgendetwas zu finden, dass zeigt, wie man die MD5-Prüfsumme einer Datei.
Wie wird es gemacht?
InformationsquelleAutor der Frage Jack | 2008-11-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es einen input-stream decorator
java.security.DigestInputStream
so dass Sie berechnen den digest während der Verwendung des input-Streams, wie Sie normalerweise würde, anstatt einen zusätzlichen Durchlauf über die Daten.InformationsquelleAutor der Antwort erickson
Verwenden DigestUtils von Apache-Commons-Codec Bibliothek:
InformationsquelleAutor der Antwort Leif Gruenwoldt
Es ist ein Beispiel, bei Real ' s Java How-to mit der MessageDigest Klasse.
Überprüfen Sie, dass die Seite für Beispiele mit CRC32 und SHA-1.
InformationsquelleAutor der Antwort Bill the Lizard
Den com.google.common.hash API bietet:
Lesen Sie die Bedienungsanleitung (IO ErklärtHashing Erklärt).
Für Ihren Anwendungsfall
- Dateien.hash()
berechnet und gibt den digest-Wert für eine Datei.Beispielsweise ein sha-1 digest-Berechnung (änderung SHA-1, MD5 zu bekommen MD5-digest)
Beachten Sie, dass crc32 wesentlich schneller als md5so verwenden Sie crc32 wenn Sie nicht brauchen eine kryptografisch sichere Prüfsumme. Beachten Sie auch, dass md5 sollte nicht verwendet werden, zum speichern von Passwörtern und dergleichen, da es einfach zu brute-force, für Passwörter bcryptscrypt oder sha-256 statt.
Für den langfristigen Schutz mit hashes ein Merkle signature scheme fügt, um die Sicherheit und Die Post-Quanten-Kryptographie Studiengruppe gefördert durch die Europäische Kommission empfohlen hat, die Nutzung dieser Kryptographie für den langfristigen Schutz gegen Quantencomputer (ref).
Beachten Sie, dass crc32 hat einen höheren kollisionsrisiko als die anderen.
InformationsquelleAutor der Antwort oluies
Mit nio2 (Java 7+) und keine externen Bibliotheken:
Vergleichen das Ergebnis mit der erwarteten Prüfsumme:
InformationsquelleAutor der Antwort assylias
Guave bietet jetzt einen neuen, konsistenten hashing-API, die ist viel benutzerfreundlicher als die unterschiedlichen Hash-APIs zur Verfügung gestellt, in das JDK. Sehen Hashing Erklärt. Für eine Datei, kann man die MD5-Summe, CRC32 (mit version 14.0+) oder viele andere hashes einfach:
InformationsquelleAutor der Antwort ColinD
Eine einfache Lösung ohne Drittanbieter-Bibliotheken, die mit Java 7
Wenn Sie drucken müssen dieses byte-array. Verwenden Sie, wie unten
Wenn Sie brauchen hex-string, der aus diesem verdauen. Verwenden Sie, wie unten
wo DatatypeConverter ist javax.xml.binden.DatatypeConverter
InformationsquelleAutor der Antwort sunil
Ok. Ich hatte Sie auf hinzufügen. Ein line-Implementierung für diejenigen, die bereits Spring und Apache Commons Abhängigkeit oder sind in Planung:
Für und Apache commons einzige option (credit @duleshi):
Hoffe, das jemand hilft.
InformationsquelleAutor der Antwort MickJ
Ich vor kurzem hatte, dies zu tun, nur für einen dynamischen string, der
MessageDigest
darstellen kann, die hash-auf vielfältige Weise. Um die Signatur der Datei, wie Sie erhalten würden, mit der md5sum Befehl, den ich hatte, etwas zu tun, wie die diese:Dies natürlich nicht die Antwort auf Ihre Frage, wie es zu tun, speziell für eine Datei, die obige Antwort befasst sich mit dem stillen gut. Ich verbrachte eine Menge Zeit, um die Summe zu schauen, wie die meisten Anwendung anzuzeigen, und dachte, dass du vielleicht in den gleichen Schwierigkeiten.
InformationsquelleAutor der Antwort Brian Gianforcaro
Oder Sie bekommen mehr info
http://www.asjava.com/core-java/java-md5-example/
InformationsquelleAutor der Antwort Jam
Waren wir mit code ähnelt dem code, der oben in einem früheren post mit
Jedoch, watch out für Verwendung
BigInteger.toString()
hier, wie es schneidet führende Nullen...(für ein Beispiel, versuchen Sie
s = "27"
, Prüfsumme sollte"02e74f10e0327ad868d138f2b4fdd6f0"
)Ich zweiten den Vorschlag, Apache Commons Codec, ersetzte ich unsere eigenen code.
InformationsquelleAutor der Antwort user552999
InformationsquelleAutor der Antwort F.X
Sehr schnell & sauber-Java-Methode, die sich nicht auf externe Bibliotheken:
(Ersetzen Sie einfach mit MD5, SHA-1, SHA-256, SHA-384 oder SHA-512, wenn Sie wollen diese)
InformationsquelleAutor der Antwort David Onter
Anderen Implementierung: Schnelle MD5-Implementierung in Java
InformationsquelleAutor der Antwort Lukasz R.
Standard-Java-Runtime-Umgebung Art und Weise:
Das Ergebnis ist gleich der linux md5sum Dienstprogramm.
InformationsquelleAutor der Antwort gotozero
InformationsquelleAutor der Antwort Ravikiran kalal
Hier ist eine einfache Funktion, die wickelt sich um Sunil - code, so dass es dauert, eine Datei als parameter. Die Funktion benötigt keine externen Bibliotheken, aber es erfordert Java 7.
Beispiel-Ausgabe:
InformationsquelleAutor der Antwort stackoverflowuser2010
Wenn Sie mit ANT zu bauen, diese ist tot-ganz einfach. Fügen Sie den folgenden, um Ihre build.xml:
Wo (jar-Datei) ist das GLAS, das Sie möchten, zum erzeugen der MD5-gegen, und toDir ist das Verzeichnis, das Sie möchten, legen Sie die MD5-Datei.
Mehr info hier.
InformationsquelleAutor der Antwort Matt Brock
Google guava bietet eine neue API. Finden Sie die folgenden :
InformationsquelleAutor der Antwort Balaji Boggaram Ramanarayan
InformationsquelleAutor der Antwort XXX