[[Vorlage(Getestet, general)]]

{{{#!vorlage Wissen
[:Terminal: Ein Terminal öffnen]
}}}
[[Inhaltsverzeichnis(2)]]

[[Bild(Wiki/Icons/terminal.png, 48, align=left)]]
Mit dem Befehl '''md5sum''' kann man die MD5-Prüfsumme für eine Datei berechnen oder Dateien mit existierenden Prüfsummen überprüfen. Nützlich ist dies insbesondere bei großen Dateien wie z.B. den [:Downloads:offiziellen Installationsmedien] von Ubuntu. Damit kann vermieden werden, dass man einen fehlerhaften Download auf CD bzw. DVD brennt.
Mit [:GtkHash:] steht alternativ ein grafisches Programm zur Berechnung einer Vielzahl von Hashfunktionen zur Verfügung.

{{{#!vorlage Hinweis
Die mathematischen Grundlagen sowie Stärken und Schwächen sind im Artikel [:Hashfunktionen:] beschrieben.
Zur Sicherheit und Angriffsvektoren ist insbesondere [:Hashfunktionen/#Angriffe-gegen-MD5-und-SHA-1:] zu beachten. Im Zweifelsfall sollte man die Alternative SHA-256 oder größer verwenden.
}}}

= Funktionsweise =
Die [wikipedia:Message-Digest_Algorithm_5:MD5-Prüfsumme] ist ein generierter Hashwert für eine bestimmte Datei. Diese 32-stellige Hexadezimalzahl besteht aus den Ziffern 0 bis 9 sowie a bis f. Der Hashwert wird oft bei aus dem Internet herunterladbaren '''*.iso'''-Dateien von Linux-Distributionen und anderen Downloads angegeben. Damit lässt sich überprüfen, ob die Datei beim Download korrekt übertragen oder beschädigt wurde bzw. ob das Brennen des ISO-Images auf CD erfolgreich war. Alternativ steht ein Selbsttest auf den Ubuntu-Installations-DVDs bzw. -CDs zur Verfügung, mit dem man bei Problemen aber nur feststellen kann, dass man einen Rohling verbrannt hat...

Auch für Windows gibt es mehrere kostenlose Programme, die heruntergeladene '''*.iso'''-Dateien mit Hilfe eines MD5-Schlüssels überprüfen können (siehe [#Links Links]). Unter Mac OS X hilft der Befehl `md5 DATEI.iso` weiter.

= Installation =
Das Programm ist im Paket

 * '''coreutils'''

von Ubuntu enthalten und ist deshalb auf jedem System vorinstalliert.

= Aufruf =
{{{#!vorlage Befehl
md5sum [OPTION] DATEI
}}}

{{{#!vorlage Tabelle
<rowclass="kopf"> Option (kurz)
Option (lang)
Beschreibung
+++
`-b`
`--binary`
Binärmodus
+++
`-c`
`--check`
Überprüfen einer Prüfsumme aus einer Datei
+++
`-t`
`--text`
Textmodus (Standard)
}}}


= Beispiele =
In den folgenden Beispielen wird davon ausgegangen, dass man mit der Shell im entsprechenden Verzeichnis der zu überprüfenden Dateien arbeitet.

== Ermitteln der Prüfsumme einer Datei ==

{{{#!vorlage Befehl
md5sum DATEI
}}}

{{{
d41d8cd98f00b204e9800998ecf8427e  DATEI
}}}
Es ist auch möglich, mehrere Dateien anzugeben oder mit dem Platzhalter `*` alle Dateien anzugeben. 

Um eine heruntergeladene ISO-Datei zu prüfen, wechselt man in das Verzeichnis, in dem es abgelegt wurde. Dort öffnet man ein Terminal-Fenster und gibt den folgenden Befehl ein:

{{{#!vorlage Befehl
md5sum ubuntu-14.04-desktop-amd64.iso
}}}
und bestätigt mit [[Vorlage(Tasten, enter)]]. Danach wird die Md5sum generiert und ausgegeben. Nun gleicht man die generierte Md5sum mit der offiziellen [ubuntu_doc:community/UbuntuHashes:Liste] {en} ab. Die Prüfsumme des ISO-Abbilds muss mit der selbst ermittelten exakt übereinstimmen.

== Ermitteln der Prüfsumme einer CD/DVD ==
Diese Prüfsumme dient dazu, um CDs/DVDs untereinander zu vergleichen.

{{{#!vorlage Befehl
md5sum /dev/sr0
}}}

{{{
d41d8cd98f00b204e9800998ecf8427e  /dev/sr0
}}}

Ggf. muss '''/dev/sr0''' angepasst werden ('''/dev/sr1`, `/dev/cdrom'''). Den passenden Pfad bekommt man im Terminal nach der Eingabe von `mount` angezeigt. 

== Ermitteln der Prüfsumme und Umleiten der Ausgabe in oder mehrere Dateien ==
Ermitteln der Prüfsumme und gleichzeitiges Umleiten der Ausgabe in eine Datei namens '''MD5SUM''': 

{{{#!vorlage Befehl
md5sum * > MD5SUM
}}}

Inhalt der erstellten Datei: 

{{{
d41d8cd98f00b204e9800998ecf8427e  datei1
aee97cb3ad288ef0add6c6b5b5fae48a  datei2
24203bc91c4dbc45f2aea18eca89b18f  datei3
}}}

Ermitteln der Prüfsumme einzelner Dateien (z.B. mehrere CD-Images, Firmwares) und gleichzeitiges Umleiten der Ausgabe in jeweils eine Datei mit der Endung '''.md5''': 


{{{#!vorlage Befehl
for file in *bin; do md5sum "$file" > "$file".md5; done
}}}

Inhalt der erstellten Dateien: 
 - `datei1.bin.md5` {{{
d41d8cd98f00b204e9800998ecf8427e  datei1
}}}
 - `datei2.bin.md5` {{{
aee97cb3ad288ef0add6c6b5b5fae48a  datei2
}}}
 - `datei3.bin.md5` {{{
24203bc91c4dbc45f2aea18eca89b18f  datei3
}}}

== Ermitteln der Prüfsumme von Dateien in Unterverzeichnissen ==
Mittels 

{{{#!vorlage Befehl
find . -type f -print0 | xargs -0 md5sum > /tmp/MD5SUM; mv /tmp/MD5SUM ./MD5SUM
}}}

können auch für Dateien in Unterverzeichnissen die Prüfsummen berechnet werden. Die Datei wird hier in '''/tmp''' angelegt und später verschoben. Dies ist nötig, da md5sum ansonsten die Datei selbst während des Vorgangs berechnen - aber im Nachhinein nochmal verändern würde, was beim späteren Überprüfen natürlich einen Fehler verursacht. Der Inhalt der erstellten Datei ist dann entsprechend: 

{{{
d3b07384d113edec49eaa6238ad5ff00  ./datei1
c157a79031e1c40f85931829bc5fc552  ./datei2
ceb8d811a6e225e8d1608f403dc8cbe1  ./dir/datei3
5bb062356cddb5d2c0ef41eb2660cb06  ./dir/datei4
}}}

=== Ermittelt die Prüfsumme einer Zeichenkette oder eines Textes ===
Ermittelt die Prüfsumme der Zeichenkete 'gewinner'

{{{#!vorlage Befehl
echo -n 'gewinner' | md5sum
}}}

{{{
39e8c8f7eeec9f73f7627154fb50f128  -
}}}

In diesem Beispiel ist die Option `-n` sehr wichtig, da diese das Anhängen der neuen Zeile verhindert.

== Überprüfen von Prüfsummen ==
Überprüfen von Dateien anhand der Prüfsummen, die Prüfsummen werden dabei aus der Datei '''MD5SUM''' gelesen. 

{{{#!vorlage Befehl
md5sum -c MD5SUM
}}}

Ausgabe:
{{{
datei1: Ok
datei2: Ok
datei3: Fehlschlag
md5sum: WARNING: 1 of 3 computed checksums did NOT match
}}}

Spätestens wenn viele Dateien überprüft werden, kann zusätzlich die Option `--quiet` nützlich sein. Dadurch werden intakte Dateien nach deren Überprüfung nicht aufgelistet, sondern nur Problemfälle. Im obigen Beispiel also nur `datei3` und am Ende der Warnhinweis.

Ausgaben wie beispielsweise  

{{{
md5sum: ubuntu-14.04-desktop-amd64.iso: No such file or directory
ubuntu-14.04-desktop-amd64.iso: Fehlschlag bei open oder read
}}}

bedeuten, dass in der MD5SUM-Datei für dieses '''*.iso'''-Image eine Prüfsumme aufgeführt ist, die Datei aber nicht am angegebenen Ort aufgefunden wurde. Erinnert man sich, die Datei gelöscht zu haben o.ä., könnte die entsprechende Zeile mit einem beliebigen [:Editor:] aus der MD5SUM-Datei entfernt werden. Ist die Datei unerklärlich verschwunden, sollte man sich Gedanken über mögliche [:Hardware/Problembehebung/:Hardwareprobleme] machen.

Um die Prüfsumme zu generieren und im gleichen Zug zu prüfen, verwendet man folgenden Befehl (ohne spitze Klammern):

{{{#!vorlage Befehl
echo "<MD5-Summe> <Dateiname>" | md5sum -c -
# oder auch
echo "<SHA1-Summe> <Dateiname>" | sha1sum -c -
}}}

= Links =
 * [:Thunar/Benutzerdefinierte_Aktionen#Pruefsumme-mit-md5sum-berechnen:] -- md5sum mit dem Dateimanager Thunar berechnen
 * Freeware für Windows (ohne Installation nutzbar):
  * paehl.de: [http://www.paehl.de/#features FASTMD5] {de}
  * [http://www.md5summer.org/ MD5Summer] {en}
 * [:Shell/Befehlsübersicht:] {Übersicht} Übersicht über verschiedene Shell-Befehle

# tag: Shell, Prüfsumme, Checksumme