|
[Beschreibung] [Zweck]
[Features] [Copyright]
[Anforderungen] [Download]
[Was ist neu?] [Installation]
[FAQ] [Handbuch] [Historie]
[Kontakt] [Links]
Jacksum 1.7.0
ein freies, plattformunabhängiges Open Source Projekt
seit 2002
for
English click here
Beschreibung:
Jacksum ist ein freies und plattformunabhängiges Programm
zum Ermitteln und Verifizieren von Prüfsummen, CRCs und Hashes, Message
Digests sowie Zeitstempeln von Dateien. Jacksum ist eine Wortneuschöpfung
aus den Worten JAva and ChecKSUM.
Es unterstützt die bekanntesten 58 Standard Algorithmen
(Adler32, BSD sum, Bzip2's CRC-32, POSIX cksum, CRC-8, CRC-16, CRC-24,
CRC-32 (FCS-32), CRC-64, ELF-32, eMule/eDonkey, FCS-16, GOST R 34.11-94,
HAS-160, HAVAL (3/4/5 passes, 128/160/192/224/256 bits), MD2, MD4, MD5,
MPEG-2's CRC-32, RIPEMD-128, RIPEMD-160, RIPEMD-256, RIPEMD-320, SHA-0,
SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, Tiger-128, Tiger-160, Tiger,
Tiger2, Tiger Tree Hash, Tiger2 Tree Hash, Unix System V sum, sum8, sum16,
sum24, sum32, Whirlpool-0, Whirlpool-1, Whirlpool and xor8).
Jacksum unterstützt das Modell "Rocksoft (tm)
Model CRC Algorithm". Damit lassen sich benutzerdefinierte CRC Algorithmen
berechnen. Jacksum unterstützt außerdem die Kombination von
mehreren Algorithmen.
Jacksum hat seine Sourcen geöffnet und wird unter den Bedingungen
der GNU GPL veröffentlicht. Jacksum ist OSI Certified Open Source
Software. OSI Certified ist ein Zertifizierungszeichen der Open Source
Initiative.
Jacksum ist plattformunabhängig, weil es komplett in Java
geschrieben ist. Die Software läuft unter jeder Plattform, die eine
passende Java Laufzeitumgebung bereitstellt.
Lesen Sie, was Leute rund um den
Globus über Jacksum denken ...
Zweck:
Mit Jacksum können Sie überprüfen, ob ein Dateitransfer
erfolgreich war. Wenn Sie Software oder andere große Datenmengen
(z. B. CD-images, so genannte iso-Dateien) vom Internet herunterladen,
wird oft auch eine Prüfsumme, bzw. ein CRC oder Hashcode angegeben.
Mit Jacksum können Sie eine solche Prüfsumme bzw. einen
solchen Hashcode (Fingerprint) von Ihrer lokalen Kopie berechnen. Wenn
beide Prüfsequenzen übereinstimmen, wissen Sie, daß während
des Dateitransfers alles gut gegangen ist.
Da Jacksum rekursive Dateiverarbeitung unterstützt, können
Sie zwei Verzeichnisbäume miteinander vergleichen. Sie können
damit überprüfen, ob Ihre Kopien und Backups mit der ursprünglichen
Quelle übereinstimmen, sogar wenn Sie keinen gleichzeitigen Zugriff
auf die Datenträger besitzen. Vergleichen Sie beispielsweise den Inhalt
von zwei DVDs mit nur einem einzigen Laufwerk.
Da Jacksum ein plattformunabhängiges und kompatibles Dateiformat
verwendet, kann es Ihnen helfen, gebrannte Daten auf CD-ROMs oder DVDs
sogar nach Jahren noch zu verifizieren.
Jacksum kann Sie unterstützen bei der unidirektionalen
Dateisynchronisation, sogar wenn zwischen beiden Computern keine Verbindung
besteht.
Jacksum kann Ihnen helfen, inkrementelle Backups zu erzeugen.
Wenn Sie Entwickler sind, unterstützt Sie Jacksum bei der
Erstellung
von Patches für Ihre Kunden.
Sie können Jacksum auch für die "intrusion detection"
verwenden, weil Jacksum überprüfen kann, ob und welche
Dateien auf Ihrem System geändert oder gelöscht wurden. Jacksum
kann außerdem nicht nur den Inhalt von Dateien auf Integrität
überprüfen, sondern auch den Zeitstempel jeder Datei.
Für nähere Informationen lesen Sie bitte die Sektion FAQ.
Features:
Wirklich freie Software:
-
Diese Software ist Freie
Software, nur wirklich reine, unverflälschte Free Software
wird im
Free Software Foundation
Directory gelistet
-
Jacksum's Lizenz
garantiert dem Anwender bestimmte Freiheiten, und wenn Sie ein
Projekt auf Jacksum aufbauen wollen, ermutige ich Sie, die GPL
zu respektieren, damit diese Freiheiten gewahrt bleiben
-
Diese Software ist OSI
Certified Open Source Software
-
Diese Software ist kostenlos, sie kostet Sie nicht einen Cent, wenn
Sie etwas Geld übrig haben, spenden Sie bitte an gemeinnützige
Institutionen
-
Diese Software ist werbefrei, Sie dürfen sie aber gerne weiterempfehlen
-
Diese Software ist registrierungsfrei, über Feedback freue
ich mich aber immer, schreiben Sie mir ein paar Zeilen an jonelo@jonelo.de
Multi-Plattform Support:
-
Jacksum ist plattformunabhängig (100 % Java), und läuft
auch in der Praxis unter allen bekannten Betriebssystemen wie Windows (95/98/ME/2000/2003/NT/XP),
Linux (Debian, Fedora, Gentoo, JDS, Knoppix, Linspire, Red Hat, Slackware,
SuSE, Turbolinux, Mandriva, Ubuntu, etc.), Unix (BSD, HP-UX, Mac OS X/PPC,
Mac OS X/x86, Solaris/SPARC, Solaris/x86, etc.) oder jedes andere Betriebssystem
(e.g. OS/2) mit einer Java Laufzeitumgebung (JRE)
-
Hält Kompatibilität mit Java 1.3.1, verwendet alber auch
die Vorteile von Java 1.4.2 oder Java 5.0 falls vorhanden. Sie läuft
auch auf absolut freien Plattformen mit der neuesten Version von gij
oder kaffe
-
Kann in 32 und 64 bit Umgebungen eingesetzt werden. Ja, Jacksum
ist 64 bit ready, Sie brauchen lediglich eine 64 bit JRE.
-
Jacksum ist large file aware, d. h. es können Dateien bis zu
einer Größe von 8 Exabyte (8 Milliarden Gigabyte) verarbeitet
werden - vorausgesetzt Ihr Betriebssystem bzw. ihr Dateisystem ist ebenfalls
in der Lage, solch große Dateien zu verarbeiten.
-
Jacksum ist sich bewusst über Spezialdateien wie FIFOs
und symbolischen Links unter Linux/Unix oder System-Folders unter Windows
-
Arbeitet mit dem SendTo-feature unter Windows zusammen
Generelle Programmerkmale:
-
Es unterstützt die bekanntesten 58 checksum Algorithmen, einschließlich
starker Einweg-Hash-Algorithmen (Adler32, BSD sum, Bzip2's CRC-32,
POSIX cksum, CRC-8, CRC-16, CRC-24, CRC-32 (FCS-32), CRC-64, ELF-32, eMule/eDonkey,
FCS-16, GOST R 34.11-94, HAS-160, HAVAL (3/4/5 passes, 128/160/192/224/256
bits), MD2, MD4, MD5, MPEG-2's CRC-32, RIPEMD-128, RIPEMD-160, RIPEMD-256,
RIPEMD-320, SHA-0, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, Tiger-128,
Tiger-160, Tiger, Tiger2, Tiger Tree Hash, Tiger2 Tree Hash, Unix System
V sum, sum8, sum16, sum24, sum32, Whirlpool-0, Whirlpool-1, Whirlpool and
xor8).
-
Algorithmen sind sehr schnell (vergleichen Sie Jacksum's Performance
ruhig mit anderen Tools)
-
Es ist dank Open Source sehr stabil und wird von vielen Menschen eingesetzt
und getestet
-
Kann Prüfsummen, CRCs und Hashes (fingerprints) berechnen von Dateien,
Text, hexadezimalen und dezimalen Sequenzen
-
Die Rekursive Verarbeitung von Verzeichnissen wird unterstützt
-
Es kann den sowohl den Inhalt als auch Zeitstempel von Dateien verifizieren
-
Jacksum hilft Ihnen, Duplikate von Dateien zu finden
Kompatibilität und Anpassbarkeit:
-
Ausgabe ist 100% kompatibel zu den Unix-Standard-Tools wie sum,
cksum, md5sum und sha1sum.
-
Das Ausgabeformat kann Ihren Wünschen angepasst werden (fügen
Sie beispielsweise die Dateigröße zur MD5 Ausgabe hinzu, erzeugen
Sie SFV Dateien oder erstellen Sie Links im eDonkey-Format)
-
Es unterstützt ein offenes, plattformunabhängiges und kompatibles
Dateiformat, damit es möglich ist, Dateien und Zeitstempel
anhand einer Liste zu überprüfen, sogar nach mehreren Jahren
oder wenn Sie Ihr Betriebssystem gewechselt haben sollten.
-
Mehrere Encodings (hex, BASE 16, BASE 32, BASE 64 und BubbleBabble)
für alle Prüfsummen, CRCs und One-Way-Hashes werden unterstützt
Unterstützung für Entwickler:
-
Es steht ein offenes API zur Verfügng, damit Sie Jacksum in
ihren eigenen freien Projekten verwenden können
-
Javadoc kann von den Sourcen generiert werden
-
Ant-script ist verfügbar und kann am einfachsten mit Netbeans
verwendet werden
Copyright:
Jacksum v1.7.0 Copyright (C) 2002-2006
Dipl.-Inf. (FH) Johann Nepomuk Loefflmann
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General
Public License as published by the Free Software Foundation; either
version 2 of the License, or any later version. This program is distributed
in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the GNU General
Public License for more details.
Anforderungen:
Um Jacksum laufen zu lassen, benötigen Sie eine Java Laufzeitumgebung
(JRE). Diese kann ebenfalls kostenlos heruntergeladen werden. Es ist mindestens
die Version 1.3.1 erforderlich. Empfohlen wird aber JRE 6 oder neuer. Laden
Sie sich ein passenes JRE für Ihr Betriebssystem herunter.
Download:
Jacksum is komplett in Java geschrieben ,
deshalb ist es plattformunabhängig und läuft unter allen Betriebssystemen
mit einer Java Laufzeitumgebung.
Lesen Sie bitte vorher die Abschnitte Anforderungen
und Copyright. Sie müssen den Bedingungen
der
GNU General Public Licence zustimmen,
wenn Sie Jacksum downloaden und benutzen möchten. Die Datei enthält
auch alle Sourcecodes zu Jacksum.
jacksum-1.7.0.zip
(30.07.2006)
MD5:
f1cf99f9e2b68016668dce4c4d51d346
SHA-1:
e3d840fa7b9949003ca731c7ce3e0281c350d821
Size:
446595 bytes |
Optional:
Alle optionalen Pakete enthalten einen betriebssystemspezifischen Installer
und das Jacksum binary.
Ältere Version gibt es auf sourceforge.net
Installation:
1. Besuchen Sie www.java.com
und installieren Sie das neueste Java Runtime Environment, siehe auch Anforderungen.
2. Laden Sie sich die Datei jacksum-1.7.0.zip
herunter und entpacken Sie diese. Wenn Sie Windows-Anwender sind, besuchen
Sie die GnuWin32 Projektwebseite, um ein unzip
Programm kostenlos zu erhalten..
cd Downloadverzeichnis
unzip jacksum-1.7.0.zip
3. Starten Sie Jacksum in einem Terminal
(unter Windows heißt sie "Eingabeaufforderung").
cd Installationsverzeichnis
java -jar jacksum.jar
4. Um das Programm mit mehr Komfort wie
folgt von jedem Verzeichnis heraus aufrufen zu können,
jacksum
müssen Sie die Script- bzw. Batchdatei, die Teil der Distribution
ist, modifizieren und in ein Verzeichnis abspeichern, das von der Betriebssystemvariablen
PATH gefunden wird. Siehe dazu die FAQ "Wie kann ich Jacksum
einfach nur mit 'jacksum' aufrufen?".
FAQ:
Warum soll ich Jacksum verwenden und nicht ... ?
Ihre Daten sind unersetzlich. Jacksum hilft Ihnen, die Kontrolle über
die Datenintegrität Ihrer Daten zu behalten. Jacksum ist zuverlässig
und bietet eine Menge an einzigartigen Merkmalen. Wenn Sie schlau sind,
vergleichen Sie die Merkmale von ähnlichen
Tools mit denen von Jacksum. Dann können sie obige Frage selbstsicher
beantworten ;-)
Gibt es eine graphische Oberfläche für Jacksum?
Zusätzlich zum Kommandozeileninterface unterstützt das Jacksum
Projekt auch die Integration in die berühmten Dateibrowser Windows
Explorer, KDE Konqueror, Gnome
Nautilus und Finder auf Mac OS X.
Mehr und mehr Bestrebungen sind in Gange. Fünf Studenden an der
ETH Zürich in der Schweiz haben an einem SWT basierten GUI Prototypen
für Jacksum gearbeitet. Zusätzlich zu den kontinuierlichen Verbesserungen
der Dateibrowserintegration ist auch ein Swing basiertes GUI geplant, da
SWT nicht auf allen Platformen zur Verfügung steht.
Jacksum's primäre Benutzerschnittstelle ist jedoch nach wie vor
die Kommandozeile. Sie unterstützt die Kompatibilität mit anderen
populären auf der Kommandozeile basierten Programmen unter Unix, wie
cksum, sha1sum, sum oder md5sum. Jacksum wird stets das Kommandozeileninterface
unterstützen, da es den Einsatz des Programms mit Cronjobs und Pipes
ermöglicht und seine Möglichkeiten in Kombination mit anderen
nützlichen kommandozeilenbasierten Tools wie grep, sort, unique oder
zip voll ausspielen kann und eine Integration in Ihrem bevorzugtem Browser
möglich macht.
Jacksum unterstützt auch ein öffentliches API. Es kann von
anderen Projekten und graphischen Benutzeroberflächen benutzt werden.
Siehe auch "Kann
ich Jacksum in meinem Projekt verwenden?" und "Software,
die Jacksum verwendet"
Wie kann ich Jacksum einfach nur mit "jacksum" aufrufen?
Unter UNIX definieren Sie sich einen alias oder schreiben Sie
sich ein script, das folgende zwei Zeilen enthält:
#!/bin/sh
java -jar "/pfad zu jacksum/jacksum.jar"
"$@"
Stellen Sie sicher, dass das Script über die Umgebungsvariable
PATH gefunden wird und die Rechte des Scriptes auf ausführbar gesetzt
sind (man chmod).
Unter Windows schreiben Sie sich eine Batchdatei, die über
die Umgebungsvariable PATH gefunden werden muss:
@echo off
java -jar c:\pfad zu jacksum\jacksum.jar
%*
Unter Linux ist es wie mit UNIX. Wenn Sie z. B. Ubuntu 9.04 verwenden,
können Sie Jacksum ganz einfach installieren mit folgendem Kommando:
sudo apt-get install jacksum
Hier ein Screenshot der Installation unter Ubuntu 9.04. Vielen Dank
an dieser Stelle an all die Unterstützer, die das Debian-Jacksum-Paket
geschnürt haben und es für die Ubuntu-Anwender zur Verfügung
stellen!
Wie kann ich Jacksum im Windows Explorer benutzen?
Laden Sie das Programmpaket für Windows
herunter und rufen Sie den darin enthaltenen Installer auf. Der Installer
stattet den Windows Explorer mit den häufigsten benutzten Funktionen
von Jacksums aus. Während der Installation wird auch ein Uninstaller
erstellt, mit dem Sie die Funktion auch wieder restlos entfernen können.
Der Installer und den Uninstaller lassen die Registry unberührt. Selektieren
Sie alle Dateien im Windows Explorer, deren Prüfsumme sie ermitteln
oder verifizieren wollen, klicken Sie dann auf die rechte Maustaste und
wählen einen Eintrag aus dem "Senden an"-Menü aus.
Wie kann ich Jacksum im KDE Konqueror verwenden?
Laden Sie das Programmpaket für Linux (KDE)
herunter, entpacken und starten es:
bunzip2 < jacksum-*.bz2 | tar xfv -
cd jacksum-file-browser-integration/
./jacksum-file-browser-integration.sh
Das interaktive Skript installiert (und deinstalliert) Jacksum im KDE
Konqueror. Das Bildschirmfoto wurde unter SUSE Linux 10 aufgenommen:
Wie kann ich Jacksum im Gnome Nautilus verwenden?
Laden Sie das Programmpaket für Linux/Unix
(Gnome) herunter, entpacken und starten es:
bunzip2 < jacksum-*.bz2 | tar xfv -
cd jacksum-file-browser-integration/
./jacksum-file-browser-integration.sh
Das interaktive Skript installiert (und deinstalliert) Jacksum in Gnome
Nautilus. Das Skript funktioniert sowohl unter Linux und Solaris. Das Bildschirmfoto
wurde unter Ubuntu Linux 5.10 aufgenommen:
Wie kann ich Jacksum mit dem Finder unter Apple
Mac OS X benutzen ?
Ein komfortabler Installer ist in Bearbeitung, zur Zeit muß das
Setup noch manuell durchgeführt werden.
Aktivieren Sie das Apple Skript-Menü mithilfe des "AppleScript
Dienstprogramms" im Ordner "AppleScript". Siehe auch http://www.apple.com/applescript/scriptmenu/
Verwenden Sie das folgende applescript, um den sha256 hash (Beispiel)
von den Dateien, die Sie zuvor im Finder ausgewählt haben:
tell application "Finder"
set theseItemsto
the selection
end tell
set allFiles to
""
repeat with i from
1 to the count of theseItems
set thisItemto(item
i oftheseItems)
as
alias
set thisFileto
POSIX path of thisItem
set allFilestoallFiles
& " " & thisFile
end repeat
set theCommandto
"jacksum -a sha256 " & allFiles & " > /tmp/jacksum.txt"
do shell script theCommand
property targetURL
: "file:///tmp/jacksum.txt"
open location targetURL |
Beim Versuch mit einem normalen Benutzer
auf jacksum-sendto.bat zuzugreifen, erhalte ich eine Fehlermeldung
C:\Programme\Jacksum Windows Explorer Integration\jacksum-sendto.bat
Auf das angegebene Gerät, bzw. den Pfad oder die Datei kann nicht
zugegriffen werden. Sie verfügen eventuell nicht über ausreichende
Berechtigungen, um auf das Element zugreifen zu können.
Das kann unter NTFS formatierten Systempartitionen passieren. Die Fehlermeldung
sagt, daß der Benutzer nicht die nötigen Rechte besitzt, die
Batch-Datei auszuführen. Als Administrator des Systems können
Sie aber jacksum-sendto.bat die nötigen Lese- und Ausführungsrechte
für normale Benutzer geben. Das geht i. d. R. am einfachsten, wenn
man als Administrator die jacksum-sendto.bat Datei kopiert, die originale
Datei löscht und die Kopie von jacksum-sendto.bat wieder nach jacksum-sendto.bat
umbenennt. Falls das nicht klappt, müssen Sie als Administrator das
NTFS-Rechtemanagement von Windows bemühen.
Warum sollte ich mindestens das JRE 1.4.2 benutzen?
Jacksum läuft mit JRE 1.3.1 und jeder neueren Version. Wenn Sie
mindestens JRE 1.4.2 verwenden, werden Sie mit einem schnelleren Programmstart
belohnt. Außerdem können auch die schnelleren Algorithmen SHA-256,
SHA-384 und SHA-512 von der JRE verwendet werden. Es ist stets empfohlen,
das neueste JRE zu benutzen. Laden Sie es sich herunter von http://java.sun.com/javase.
Wenn Sie das JRE 5.0 verwenden, werden Sie erneut mit einer besseren Performance
für Jacksum belohnt.
Was bedeuten die Werte in der Ausgabe von Jacksum?
z. B.
599770357 23560 irgendein.txt
Die erste Zahl gibt die Prüfsumme an. Die Prüfsumme hängt
ab vom verwendeten Algorithmus (-a) und vom hex-Schalter (-x, bzw. -X).
Die zweite Zahl gibt i. d. R. die Größe der Datei in bytes
an. Ausnahmen sind bsd sum und UNIX system V sum. Sie geben die Größe
der Datei in Blöcken an. Die Größe entfällt gänzlich
bei den Hash-Algorithmen (SHA* oder MD*). Die dritte Spalte (zweite Spalte
bei den Hash-Algorithmen) gibt den Dateinamen mit oder ohne Angabe des
Pfades an. Der Dateiname entfällt, wenn die Standardeingabe gewählt
wurde.
Seit Jacksum 1.3.0 gibt es die Möglichkeit, Zeitstempel von Dateien
mit auszugeben. In diesem Fall erscheint eine zusätzliche Spalte in
jeder Zeile (vor dem Dateinamen). Die Bedeutung des Zeitstempels ist abhängig
vom Format, das mit der Option -t gesetzt werden kann.
599770357 23560 20031027140042
irgendein.txt
Welchen Algorithmen soll ich verwenden?
Mit der Option -a können Sie einen von mehreren Algorithmen wählen.
Wenn Sie eine Datei von einer vertrauenswürdigen Seite heruntergeladen
haben, und Sie wissen wollen, ob der Dateitransfer erfolgreich war, können
viele Algorithmen gewählt werden. Um Ihre Daten jedoch auf Integrität
zu überprüfen (Option -c) ist nicht jeder Algorithmus empfehlenswert,
vor allem bei der Vielzahl von Dateien auf heutigen Festplatten.
Abzuraten:
Vom kryptographischen Standpunkt aus, ist die Verwendung der reinen
Prüfsummenalgorithmen wie sum8, sum16, sum24, sum32 und xor8 abzuraten,
da sie die Reihenfolge der Bytes unberücksichtigt lassen. Gebrochen
wurden bereits auch MD2 und MD4. Auch sie sollten zur Überprüfung
der Datenintegrität nicht mehr verwendet werden (u. a. werden sie
auch von der RSA nicht mehr empfohlen). SHA-0 sollte ebenfalls nicht mehr
verwendet werden, er wurde im Jahr 1995 durch SHA-1 ersetzt.
Bedingt einsetzbar:
Aufgrund ihrer kurzen Bitlänge und ihrer mangelnden mathematischen
Stärke sind CRCs (Adler32, BSD sum, POSIX cksum, CRC-16, CRC-32 (FCS-32),
FCS-16, MPEG-2's CRC-32, CRC-64 und die Unix System V sum) zur Integritätsprüfung
heutiger Datenmengen nur bedingt einsetzbar - Ausnahmen bestätigen
wie immer die Regel. Siehe auch den CRC-Faker
und lesen Sie den Artikel "CRC and how to Reverse it" (der Link http://surf.to/anarchriz
ist nicht mehr gültig, verwenden Sie eine Suchmaschine, um das Dokument
zu finden). Ein Virus könnte Dateien geschickt manipulieren - mit
einem CRC basierten Algorithmus könnten dann solche Anschläge
nicht entdeckt werden. Obwohl Jacksum SFV bei Bedarf erzeugen kann, ist
empfohlen, die Verwendung von SFV-Dateien zu vermeiden. Sie basieren auf
CRC32 Werten und SFV ignoriert die Dateigröße komplett.
Bedingt zu empfehlen:
ELF-32 ist ein einfacher hash-basierter Algorithmus, der jedoch nicht
die Bitstärke hat, um sehr sichere Datenintegrität zu garantieren.
Der Algorithmus ed2k/eMule/eDonkey (basiert auf einem verbesserten MD4)
ist ebenfalls hash-basiert und würde genug Bits haben, jedoch sind
für MD5 und HAVAL_3_128 bereits im August 2004 reale Kollisionen bekannt
worden (http://eprint.iacr.org/2004/199/)
- mit Hilfe einer non-brute force Methode. Das Dokument erwähnt auch
Kollisionen für RIPEMD-128, jedoch generiert das als Hexdump abgedruckte
Beispiel keine Kollision (während alle anderen Beispiele im Dokument
verifiziert werden konnten, scheint das RIPEMD Beispiel einen Tippfehler
zu haben. Beachten Sie, daß RIPEMD-256 so sicher ist wie RIPEMD-128
und deswegen ebenfalls nicht mehr empfohlen werden kann. Tiger/128 und
Tiger/160 sind tatsächlich abgeschnittene Hash-Funktionen von Tiger/192.
Obwohl sie heute als sicher gelten, sind nicht-abgeschnittene Hashes zu
bevorzugen.
SHA-1
Im Februar 2005 veröffentlichte der Sicherheitsspezialist Bruce
Schneier eine von Xiaoyun Wang, Yiqun Lisa Yin, and Hongbo Yu umrissenen
Attacke auf SHA-1. Die Autoren beschreiben, daß Ihre Attacke Kollisionen
in der Vollimplementierung von SHA-1 finden könnte. Diese benötigte
weniger als 269 Operationen (eine Brute-Force Suche würde
280 Operationen erfordern). In der akademischen Kryptographie
wird jede Attacke, die weniger Berechnungsaufwand erfordert als der zu
erwartende Zeitaufwand bei Brute-Force, als "Break" bezeichnet. Diese bedeutet
aber jedoch nicht notwendigerweise, daß eine Attache auch praktisch
durchgeführt werden kann. In der wirklichen Welt ist SHA-1 ist immer
noch sicher, zumindest um Datenintegrität zu überprüfen.
Für die neuesten Erkenntnisse der Kryptoanalyse von SHA-1 empfehle
ich http://en.wikipedia.org/wiki/SHA1#Cryptanalysis_of_SHA-1.
Zu empfehlen:
Vom heutigen kryptographischen Standpunkt aus betrachtet (Oktober 2006),
sind folgende Ein-Wege-Hash-Algorithmen zu empfehlen: HAVAL-{3/4/5}-{160/192/224/256},
RIPEMD-160, RIPEMD-320, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, Tiger,
Tiger2 und Whirlpool.. Jacksum unterstützt alle hier angeführten
Algorithmen. Seit Jacksum 1.5.0 ist SHA-1 der Default-Algorithmus.
Seit Jacksum 1.7.0 können mehrere Algorithmen kombiniert werden.
Ich empfehle mindestens zwei unterschiedliche Techniken für die Dateiintegritätsprüfung
zu verwenden, einen Hash-Algorithmus wie z. B. SHA-1 und einen CRC wie
z. B. CRC32 bilden eine gute Kombination für diesen Zweck. Auch wenn
eine Kollision in der Zukunft für den hash-basierten Algorithmus festgestellt
werden sollte, ist es sehr unwahrscheinlich, daß auch ein CRC identische
Werte zurückliefert.
Warum gibt es alternative Implementierungen für die Algorithmen
?
Einige Algorithmen (adler32, crc32, md5, sha-1) sind fester Bestandteil
des Standard Java API. Andere wiederum (sha-256, sha-384, sha-512) sind
Teil des Standard Java API neuerer Java Laufzeitumgebungen. Wenn ein Algorithmus
von Ihrer Java Laufzeitumgebung unterstützt wird, ruft Jacksum dessen
API auf und verwendet dieses Angebot. Einige Hersteller eines JRE rufen
nativen Code auf, der üblicherweise eine gute Performance bietet.
Beachten Sie jedoch, daß dies die Details der Implementierung der
jeweiligen JRE-Hersteller sind, sie können von Hersteller zu Hersteller
und sogar von Version zu Version unterschiedlich ausfallen. Wegen einer
Vielzahl an Anfragen stelle ich für alle Algorithmen alternative,
in purem Java implementierte Algorithmen zur Verfügung. Unter einigen
Systemen kann eine alternative Implementierung besser performen als die
des JRE-Herstellers (MD5 zum Beispiel), jedoch hängt diese Performance
ab von Ihrem Computer und der Java Laufzeitumgebung, die sie einsetzen.
Gewöhnlich ist es eine gute Idee, die neueste Java Laufzeitumgebung
zu verwenden, und sich auf die Performance zu verlassen, die die JRE bietet.
Tests haben gezeigt, daß je neuer Ihre JRE ist, desto besser die
Performance. In Einzelfällen bringt der Schalter -A bessere Ergebnisse.
Sind CRCs heute nicht überflüssig?
Nein, CRCs werden immer noch in Hardware, Firmware, Protokollen, einfachen
Software-Installern (NSIS zum Beispiel) und modernen Dateisystemen (zfs)
verwendet. In der Regel sind sie sehr schnell (und nicht so komplex wie
ein Einweg-Hash-Algorithmus), sie sind sinnvoll um kleine Dateneinheiten
zu überprüfen. Des weiteren sind sie eine gute Ergänzug
zu hash basierten Algorithmen. Jacksum unterstützt außerdem
das Model "Rocksoft (tm) Model CRC Algorithm",
welches es möglich macht, benutzerdefinierte CRCs zu berechnen.
Wie wird ein CRC berechnet?
Viele Leute haben mich diese Frage bereits gestellt. Es gibt ein paar
gute Webseiten, die genau erklären wie CRC berechnet wird. Besuchen
Sie http://surf.to/anarchriz oder ftp://ftp.rocksoft.com/papers/crc_v3.txt.
Sie könnten auch einen Blick auf den Sourcecode von Jacksum werfen.
Unterstützt Jacksum den CCITT checksum Algorithmus
?
Viele Referenzen definieren den CRC-16/CCITT als
crc:16,1021,FFFF,false,false,0
Die Notation "crc:width,poly,init,refIn,refOut,xorOut" wird
seit Jacksum 1.7.0 verwendet, um einen CRC Algorithmus entprechend dem
"Rocksoft(TM) Model CRC Algorithm" zu definieren.
Verwendet man die Nachricht "123456789", liefert der CRC Algorithmus mit
den obigen Parametern den Wert 0x29B1:
jacksum -q txt:123456789 -X -a crc:16,1021,FFFF,false,false,0
29B1
Andere Quellen behaupten jedoch, daß der entsprechend des CCITT
Standards (siehe oben), einer Nachricht vor der Berechnung zuerst 16 Null-Bits
vorgeschaltet werden müssten. Diese Interpretation des Standards kann
wie folgt ausgedrückt werden:
crc:16,1021,1D0F,false,false,0
Beachten Sie, daß in diesem Fall nur der Initialwert unterschiedlich
ist, da eine 16 Null-Bit Nachricht durch einen CRC mit dem Initialwert
0xFFFF berechnet, die Prüfsumme 0x1D0F zurückliefert, die wiederum
dem Initialwert für die alternative Interpretation des Algorithmus
entspricht.
Verwendet man die Nachricht "123456789" , liefert der CRC Algorithmus
mit den obigen Parametern den Wert 0xE5CC:
jacksum -q txt:123456789 -X -a crc:16,1021,1D0F,false,false,0
E5CC
Es ist nun vollkommen Ihnen überlassen, welchem CCITT Standard
Sie glauben ;)
Jacksum kann beide Algorithmen berechnen (und auch jede andere Interpretation
dieses "Standards").
Ich erhalte den Fehler "java.io.IOException: Datenfehler (CRC-Prüfung)".
Was bedeutet das?
Das ist ein Fehler, den das deutsche Windows (NT basierend) meldet und
er bedeutet, daß Windows nicht mehr in der Lage ist, von Ihrem CD-ROM
oder DVD-Laufwerk eine Date zu lesen. Sie sollten Ihre Dateien auf einen
neuen Datenträger sichern, um weitere Datenverluste zu vermeiden.
Unter Linux heißt der Fehler entsprechend "java.io.IOException: Input/output
error" (Beispiel Red Hat).
Welche Algorithmen werden von Jacksum nicht
unterstützt?
Es gibt einige Algorithmen, die Jacksum (noch) nicht unterstützt.
Dazu gehören Cellhash, Boognish, DHA-256 (relativ neu), FEAL (patentiert),
FFT-hash, FORK-256 (ziemlich neu), Panama (broken), Snefru (broken), DSS1,
MAA (Message Authenticator Algorithm, broken), MDC2 (Patent abgelaufen),
Maelstrom-0, Maelstrom-1, Maelstrom, N-Hash (patentiert und unsicher),
PMD-N, PMD-V, PMD-128, PMD-160, PMD-192, PMD-224, PMD-256 (koreanische
Standards, keine komplette englische Dokumentation vorhanden), VEST-4,
VEST-8, VEST-16, VEST-32 (Patent schwebend), VSH (relativ neu) und die
VMS/VAX checksum (sehr wenig Information verfügbar). Wenn Sie Sourcecode
zu diesen Algorithmen (vorzugsweise in Java) besitzen und mir senden, werde
ich auch diese in Jacksum aufnehmen. Beachten Sie, daß die meisten
dieser Algorithmen schon etwas älter und nicht wirklich kryptographisch
stark sind, für die meisten von ihnen sind bereits Kollisionen bekannt
worden (bzw. lassen sich zu leicht berechnen), jedoch sind die Algorithmen
auf meiner Wunschliste für Lehrzwecke und der Vollständigkeit
halber. Die Implementierung der Algorithmen aus der offiziellen SHA-3-Submission
fehlen ebenfalls noch, da noch nicht klar ist, welche Algorithmen wirklich
hart genug sind, um die SHA-2-Familie auf längere Sicht hin ablösen
zu können.
Mein Freund hat einen PC von dem ich denke, dass er gehackt wurde,
aber ich habe keine andere Maschine, um diese miteinander zu vergleichen
...
Die Prüfsummen der gängigsten UNIX/Linux-Derivate finden Sie
hier:
http://www.knowngoods.org
Für Solaris gibt es den Service von Sun auf http://sunsolve.sun.com/pub-cgi/fileFingerprints.pl
Für Windows habe ich keinen äquivalenten Service gefunden.
Wie kann ich Verzeichnisse synchronisieren?
Mit Hilfe von Jacksum kann eine unidirektionale Synchronisation durchgeführt
werden, d. h. Jacksum kann Veränderungen auf einem Rechner erkennen
und diese Veränderungen rückgängig machen, bzw. diese Veränderungen
auf andere Rechner anwenden. Diese Synchronisation klappt sogar, wenn keine
Verbindung zwischen den beiden Rechnern besteht. Gehen wir davon aus, Sie
haben einen fehlerfreien und einen fehlerhaften Computer.
Beispiel für Windows:
1. Wechseln Sie in das fehlerfreie Verzeichnis auf Ihrem fehlerfreien
Computer und führen Sie folgende Kommandos aus:
cd good
jacksum -a sha1 -m -r . > c:\temp\check.jacksum
2. Die Datei check.jacksum repräsentiert eine Momentaufnahme aller
Dateien des fehlerfreien Computers im fehlerfreien Verzeichnis.
Transferieren Sie die Datei check.jacksum anschliessend
zum fehlerhaften Computer.
3. Wechseln Sie in das fehlerhafte Verzeichnis auf dem fehlerhaften
Computer und führen Sie folgende Kommandos aus:
cd faulty
jacksum -c c:\temp\check.jacksum -l > c:\temp\files.list
4. Die Datei files.list enthält nun eine Liste der Unterschiede
zwischen dem fehlerfreien und dem fehlerhaften Verzeichnis.
Transferieren Sie die Datei files.list
nun zum fehlerfreien Computer.
5. Wechseln Sie in das fehlerfreie Verzeichnis auf Ihrem fehlerfreien
Computer und führen Sie folgende Kommandos aus:
cd good
type list.txt | zip
-@ patch.zip
Für den Fall, daß Sie .tar.bz2 anstelle
von .zip bevorzugen:
cd good
tar
cfv patch.tar -I files.list
bzip2
-9 patch.tar
6. Die Datei patch.zip enthält nun alle Dateien des fehlerfreien
Computers, die auf dem fehlerhaften Computer modifiziert oder gelöscht
wurden. Transferieren Sie die Datei patch.zip zum fehlerhaften
Computer und extrahieren Sie die im zip enthaltenen Dateien ins fehlerhaften
Verzeichnis. Die Dateien im zip überschreiben die Dateien des fehlerhaften
Verzeichnisses und aus dem fehlerhaften Computer wurde ein fehlerfreier
Computer.
Wie erstelle ich einen Patch mit Jacksum?
Als Entwickler könnten Sie Ihren Treuekunden einen Patch für
Ihre Version zur Verfügung zu stellen. Jacksum kann Ihnen hier behilflich
sein.
Beispiel für Unix:
1. Wechseln Sie in das Verzeichnis der neuen Version und führen
Sie folgende Kommandos aus:
cd ~/newversion
jacksum -a sha1 -m -r . > /tmp/check.jacksum
2. Wechseln Sie in das Verzeichnis der alten Version und führen
Sie folgende Kommandos aus:
cd ~/oldversion
jacksum -c /tmp/check.jacksum -l > /tmp/files.list
3. Wechseln Sie erneut in das Verzeichnis der neuen Version und packen
Sie die neuen und überarbeiteten Dateien in die Datei patch.zip
cd ~/newversion
tar cfv patch.tar -T /tmp/files.list (GNU/Linux,
Mac OS X, PC-BSD)
tar cfv patch.tar -I /tmp/files.list (PC-BSD,
Solaris)
bzip2 -9 patch.tar
Für den Fall, daß Sie .zip anstelle von
.tar.gz den Vorzug geben:
cd ~/newversion
cat /tmp/files.list | zip -@ patch.zip (GNU/Linux, Mac
OS X, Solaris)
Vielen Dank an Girish Narang, mit dem ich eine "Patch-Erstell-Lösung"
mit Hilfe von Ant entwickelt habe. Laden Sie das Ant
script und das zugehörige property
file herunter, um Patches mit Jacksum und Ant zu erzeugen.
Ist es möglich, zwei Verzeichnisse zu überprüfen?
Ja, seit Jacksum 1.3.0 können Sie die Option -c benutzen, um Dateien
gegen eine gegebene Liste zu überprüfen. In diesem Fall werden
Sie exakt wissen, welche Dateien modifiziert oder gelöscht wurden.
Sie erzeugen eine solche Liste mit der Option -m. Siehe dazu die Beispiele
in der Dokumentation.
Alternativ dazu, führen Sie die folgende Befehlssequenz bei beiden
zu überprüfenden Verzeichnissen durch. Dabei ist es wichtig,
dass Sie in das jeweilige Verzeichnis mit cd wechseln:
cd <zu überprüfender Verzeichnisbaum>
jacksum -r -f -a sha1 . | jacksum -a sha1 -
Wenn beide Prüfsummen übereinstimmen, wissen Sie, dass beide
Verzeichnisse (einschließlich Unterverzeichnisse) identisch sind.
Mit diesem Trick lässt sich z. B. auch überprüfen, ob eine
gebrannte CD-[R/RW] oder DVD-[R/RW] auch wirklich das enthält, was
man brennen wollte. Erinnern Sie sich, die Option -c gibt eine wesentlich
genauere Auskunft über Veränderungen in einem Dateibaum.
Warum erhalte ich unterschiedliche Fingerprints mit -S, obwohl die
Verzeichnisse wirklich gleich sind?
Es macht einen Unterschied, ob Sie eine Prüfsumme auf beispielsweise
c:\daten oder d:\daten berechnen, weil Jacksum diesen Unterschied mit berücksichtigt.
Wenn Sie nicht wollen, daß Jacksum diese (absolute) Pfadinformation
berücksichtigt, die sie an der Kommandozeile angegeben haben, müssen
Sie das aktuelle Arbeitsverzeichnis erst wechseln. Ich empfehle relative
Pfade wie "daten" (wenn das aktuelle Verzeichnis c:\ ist) oder "." (wenn
das aktuelle Verzeichnis c:\daten is), statt "c:\data" anzugeben. Wenn
Sie auf d: die Berechnung durchführen, müssen Sie die gleichen
Parameter verwenden, wie Sie sie bereits für c: verwendet haben. Siehe
auch Feature Request #1028816.
Falsche Erwartung - alle Prüfsummen werden unterschiedlich sein:
jacksum -a sha1 -S c:\data
jacksum -a sha1 -S d:\data
jacksum -a sha1 -S d:\backup\data
Richtige Verwendung - die Parameter sind bei allen Berechnungen identisch,
alle Prüfsummen werden gleich sein (vorausgesetzt, daß die Verzeichnisse
wirklich gleich sind):
jacksum -a sha1 -S -w c:\data
jacksum -a sha1 -S -w d:\data
jacksum -a sha1 -S -w d:\backup\data
ODER
c:
cd \data
jacksum -a sha1 -S .
d:
cd \data
jacksum -a sha1 -S .
cd \backup\data
jacksum -a sha1 -S .
Warum erhalte ich unterschiedliche Fingerprints mit -S unter Windows
und Linux?
Ich habe eine Share-Partition. Sie ist als FAT32 formatiert, damit ich
auf meine Dateien sowohl von Linux als auch von Windows aus zugreifen kann.
Wenn ich die Option -S benutze, bekomme ich unterschiedliche Prüfsummen
unter Linux und Windows. Was ist da falsch?
Gewöhnlich passiert das, wenn Sie suboptimale Mountoptionen verwenden.
Wenn Ihre Share-Partition als "vfat" unter Linux gemountet ist, sollten
Sie auch die Mountoption namens "shortname" spezifizieren. Sie definiert
das Verhalten für das Erzeugen und die Anzeige von Dateienamen, die
in das 8+3 Zeichenschema passen. Diese Mountoption ist nötig, da Jacksum
bei der Verwendung der Option -S auch die Dateinamen und Verzeichnisse
in die Prüfsequenz mit einrechnet. Für mehr Informationen lesen
Sie "man mount". Alternativ zu -S können Sie auch die Optionen -m
und -c benutzen, um Dateien plattform- und mountoptionunabhängig zu
verifizieren.
Ich erhalte bash: !": event not found
jacksum -a crc32 -q "txt:Hello World!" gibt mir:
bash: !": event not found
Dies ist ein Problem der Bash shell. Das Ausrufezeichen ! in der Bash
hat eine spezielle Bedeutung (die auch geändert werden kann), es symbolisiert
den "history expansion character". Die Störung ist auch mit echo reproduzierbar.
$ echo "!"
bash: !: event not found
$ echo "\!"
\!
$ echo \!
!
Die korrekte Verwendung ist daher
jacksum -a crc32 -q "txt:Hello World"\!
472456355 12
jedoch ist diese Syntax nicht sehr komfortabel. Zum Glück können
einfache Hochkomma verwendet werden, um das Problem elegant zu lösen::
$ echo '!'
!
jacksum -a crc32 -q 'txt:Hello World!'
472456355 12
Siehe auch die Manpage der Bash "Enclosing characters in single quotes
preserves the literal value of each character whithin the quotes".
Kann ich
Jacksum in meinem Projekt verwenden?
Ja, vorausgesetzt Sie respektieren die Freiheit von Feier Open Source
und akzeptieren die Bedingungen der GNU GPL. Es ist untersagt, Jacksum
in properitärer
Software zu verwenden ("kommerziell"
und "proprietär" ist nicht das selbe!), die Arbeit als die Ihre auszugeben
ist ebenfalls untersagt. Machen Sie doch selbst mit bei Freier Open Source,
dann sind sich auch herzlich eingeladen, am Erfolg von Open Source Software
teilzunehmen.
Darf ich den Namen Jacksum für mein
eigenes Projekt verwenden?
Der Name Jacksum ist meine persönliche Wortneuschöpfung und
er existiert seit 2002. Der Name Jacksum ist urheberrechtlich geschützt
und ich bitte das zu respektieren. Jacksum's source code steht hingegen
unter den Bedingungen der freien Open Source Lizenz GPL jedermann zur Verfügung.
Gibt es akademische Puplikationen, die
Jacksum erwähnen?
Ja, vielen Dank dafür!
Software, die die neueste Jacksum
Version verwendet
Diese Sektion enthält Links zu Software, die Jacksum verwendet
oder mit .jacksum files umgehen kann:
Beachten Sie, daß keine der folgenden Anwendungen ALLE Merkmale
unterstützt, die Jacksum auf der Kommandozeile bietet. Sie sind jedoch
extrem hilfreich, wenn Sie ein Freund von graphischen Oberflächen
sind und die Kommandozeile Ihre zweite Wahl ist :)
(Die Liste wurde am 25. Februar 2008 aktualisiert)
-
NumericalChameleon 2.0.0 - (noch nicht veröffentlicht)
- GNU GPL, ein plattformunabhängiger Einheitunumrechner für den
Desktop, wird Jacksum 1.7.0 verwenden
-
Jacksum File Browser Integration - http://sourceforge.net/projects/jacksum
- GNU GPL, die Installer vom 8. Oktober 2006 fügen Jacksum's primäres
Feature den Standarddateibrowsern hinzu, sie sind powered by Jacksum
1.7.0.
-
http://publictimestamp.org - http://publictimestamp.org
- GNU GPL, PublicTimestamp.org offers the free service to timestamp
any publicly available digital document, latest client version is from
April 25, 2007 and it is powered by Jacksum 1.7.0.
-
Hasher GUI - http://sourceforge.net/projects/hashergui
- GNU GPL, a Swing GUI for Jacksum, the latest version is 0.3 from Jan
30, 2007 and it is powered by Jacksum 1.7.0
-
TWCheckSum - http://www.wenzlaff.de/twchecksum.html
- GNU GPL, a Swing GUI powered by Jacksum 1.7.0, the latest
version is 0.9 from Feb 25, 2008
Software, die Jacksum in älteren
Versionen verwendet
-
DuMP3 - http://dump3.sourceforge.net
- GNU GPL, die Software findet Dublikate und ähnliche Dateien, die
neueste Version 0.2.5 alpha ist vom 14. Juli, 2006 und ist powered by
Jacksum 1.6.1.
-
Prevalent Digest Creator - http://www.prevalent.de
- die Software von Jan Kechel erstellt u. a. mehrere kryptographische
Hash-Werte von Dateien und kann an den Prevalent-Server kostenfrei gesendet
werden - GNU GPL, die Version 1.1.0 ist vom 11. Januar 2005 und ist powered
by Jacksum 1.6.1.
-
Serversniff Hash Calculation - http://serversniff.de
- Online-Tool powered by Jacksum 1.6.1 berechnet Hashes zu eingegebenen
Zeichenketten
-
Real Public Radio Network - www.rprn.org
- die Software ist powered
by Jacksum 1.5.1. RPRN ist eine non-profit Organisation, die eine
Internetgemeinschaft ins Leben rufen will, um den Austausch von digitalen
Audio-Inhalten zu unterstützen - die neueste Entwicklerversion ist
from 3. Mai 2005.
-
OntoMedia - http://www.ontomedia.de
- ist ein Multimedia Management System von Bodo Hüsemann der Universität
Münster. Es verwended Jacksum 1.5.0, siehe auch credits
-
MD5 GUI - http://sourceforge.net/projects/md5gui
- die Software von John Brown bringt ein nettes GUI mit (nur der MD5 Algorithmus
ist aus historischen, nicht aus performanctechnischen Gründen von
einem anderen Entwickler) - GNU GPL, die Version 0.97 ist vom 29. Januar
2005 und ist powered by Jacksum 1.5.1
-
xfdu - http://sindbad.gsfc.nasa.gov/xfdu/
- xfdu stands for extensible data packaging format, and it is an implementation
of the Recommendation for Space Data System Standard by the Management
Council of the Consultative Committee for Space Data Systems (CCSDS) which
is a departement of the National Aeronautics and Space Administration (NASA),
and it uses Jacksum 1.4.0 (see also dependencies)
-
Java Mechanic - http://sourceforge.net/projects/javamechanic
- das Projekt kann für Entwickler nütztlich sein - GNU
GPL, die Version 3.0 ist vom 04. April 2004 und ist powered by Jacksum
1.2.0
-
JavaIntegrity - http://sourceforge.net/projects/javaintegrity/
- es ist ein Kommandozeilentool und ist powered by Jacksum 1.1.0.
Features von JavaIntegrity 1.1 sind bereits in neueren Jacksum Versionen
enthalten - GNU GPL, die Version 1.1 ist vom 27. October 2002.
-
TrID - http://mark0.net/soft-trid-e.html
- Marco Pontello's Datei Identifizierer für Windows kennt .jacksum
Dateien
-
file - das file Kommando unter Unix/Linux kann mit .jacksum Dateien
umgehen, wenn Sie das "jacksum.magic" zu Ihrer
/etc/magic anhängen.
Wenn Sie Software entwickelt haben, die auf Jacksum basiert oder verwendet
und einen Link oder eine Beschreibung hier stehen haben möchten, schreiben
Sie eine eMail an jonelo@jonelo.de
Gibt es irgendwelche Codebeispiele wie
man Jacksum in einem anderen Projekt verwenden kann?
Ja, einer der grundlegenden Codeschnipsel ist hier:
import java.io.*;
import java.security.*;
import jonelo.jacksum.*;
import jonelo.jacksum.algorithm.*;
// ...
AbstractChecksum checksum = null;
try {
// select an algorithm
(md5 in this case)
checksum = JacksumAPI.getChecksumInstance("md5");
// On some systems
you get a better performance for particular
// algorithms if
you select an alternate algorithm (see also option -A)
// checksum = JacksumAPI.getChecksumInstance("md5",
true);
} catch (NoSuchAlgorithmException nsae) {
// algorithm doesn't
exist
}
// updates the checksum with
the content of a file
try {
checksum.readFile(filename);
} catch (IOException ioe) {
// ...
}
System.out.println(checksum);
|
Die update-Methoden können verwendet werden, um das Checksum-Objekt
mit bytes oder bytearrays zu aktualisieren:
// reset the object for reuse
(any formatting rules remain)
checksum.reset();
// update the checksum with
a single byte
checksum.update(abyte);
// update the checksum with
a bytearray
checksum.update(bytearray);
// update the checksum with
the first 10 bytes in the bytearray
checksum.update(bytearray, 0, 10);
System.out.println(checksum); |
Um zu erfahren, welche Algorithmen unterstützt werden, verwenden
Sie das folgende Snippet. Wenn Sie JSE 5.0 oder neuer verwendet, können
Sie Generics einsetzten, um Castings zu vermeiden.
Map map = JacksumAPI.getAvailableAlgorithms();
Iterator iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry entry = (Map.Entry)iterator.next();
String description = (String)entry.getValue();
// do
something with the description
// ...
AbstractChecksum checksum =
JacksumAPI.getChecksumInstance((String)entry.getKey());
// do
something with the checksum object
// ...
}
|
Um das Ausgabeformat zu bestimmen, können Methoden auf dem checksum
Objekt angewendet werden:
//
checksum is printed in hex form (see also option -x)
// example: 7d93370d5ef94450151826ca20c6e512
checksum.setEncoding(HEX);
// checksum is printed in uppercase
hex form (see also option -X)
// example: 7D93370D5EF94450151826CA20C6E512
checksum.setEncoding(HEX_UPPERCASE);
// checksum is printed in uppercase
hex and grouped form (see also options -g, -G)
// example: 7D93-370D-5EF9-4450-1518-26CA-20C6-E512
checksum.setEncoding(HEX_UPPERCASE);
checksum.setGrouping(2, '-');
// checksum is printed in Base
64 form (see also option -E)
// There is also BASE16 and
BASE32
// example: fZM3DV75RFAVGCbKIMblEg==
checksum.setEncoding(BASE64);
// checksum is printed in BubbleBabble
form (see also option -E)
// example: xizen-fetab-tilaz-necuh-buhyc-mynys-pemes-kunyc-daxox
checksum.setEncoding(BUBBLEBABBLE);
|
Das Ausgabeformat einer kompletten Zeile kann z. B. mit der format Methode
beeinflußt werden:
// print the checksum, the default
output format depends on the algorithm
System.out.println(checksum);
// print the checksum, the default
output format depends on the algorithm
checksum.setSeparator(";");
System.out.println(checksum);
// print the checksum value only
(see also option -F)
System.out.println(checksum.format("#CHECKSUM"));
// print the checksum value with
a customized format (see also option -F)
System.out.println(checksum.format("<a href=\"ed2k://|file|#FILENAME|#FILESIZE|#FINGERPRINT|\">#FILENAME</a>"));
|
Obiges Beispiele sollen lediglich als kleine Hilfe dienen, die ersten
Hürden zu nehmen. Für detaillierte Informationen über alle
Möglichkeiten mit Jacksum, schauen Sie bitte in den Open Source Code
oder erzeugen Sie sich javadoc mit Hilfe des Ant-Scripts.
Was ist für die nächsten Versionen geplant?
Ich habe immer noch eine Menge an neuen Ideen für Jacksum und einige
brilliante Verbesserungsvorschläge von anderen Leuten rund um den
Globus für das Jacksum Projekt. Keine dieser Ideen wird vergessen
werden, aber es dauert seine Zeit, sie zu implementieren, zu testen, zu
optimieren und sie zu dokumentieren. Die folgende Liste behandelt die Top-Ten
Anfragen, die für die nächsten Versionen geplant sind (unsortiert,
nur englisch):
- Identify extra data (files and/or directories) that have been added
to the target location during a comparison operation,
thanks to John D. for the feature request and thanks to Dipl.-Inf.
(FH) Ralf Kahrl for the reference implementation!
- a new API suggestion which could be used by both the CLI and a GUI.
Thanks to Stephan Classen, Sibylle Dürr, Barbara Keller,
Audrey Lim and Judith Rüesch
for working on it as part of their IT-project at the ETH Zürich,
Switzerland
- A Swing GUI for Jacksum (maybe a separate project)
- HMAC support for the algorithms
- Read files from a list
- Distinguish between missing files versus files that are different
also if option -l is used
- CRCs with 1-7 bit length
- Tree Hash for more algorithms
- Filter for processing particular files only
- Performance support for boxes having multiple CPUs and/or cores
- Filesystem specific file attributes (see also JSR
203)
- New algorithms
Handbuch:
Wenn Sie Informationen von dieser Webseite nach Wikipedia oder einen
anderen öffentlichen Platz im Web stellen, seien Sie fair und setzen
wenigstens einen Referezlink, der zu dieser Seite zurücklinkt.
NAME
Jacksum (JAva ChecKSUM)
VERSION
1.7.0
SYNTAX
java -cp jacksum.jar Jacksum [Optionen]... [Datei]...
oder
java -jar jacksum.jar [Optionen]... [Datei]...
BESCHREIBUNG
Jacksum ist ein freies und plattformunabhaengiges
Programm zum Ermitteln
und Verifizieren von Pruefsummen, CRCs und Message
Digests sowie
Zeitstempeln von Dateien. Jacksum ist komplett
in Java geschrieben.
Eine Java Laufzeitumgebung (JRE), mindestens
in der Version 1.3.1 ist
erforderlich. Es wird mindestens die Version
1.4.2 empfohlen.
Der folgende Parameter wird unterstuetzt:
Datei
Eine Dateiangabe. Wildcards werden unterstuetzt. Diese sind
von der von Ihnen eingesetzten Shell abhaengig. Wenn keine
Datei angegeben wurde, oder fuer die Datei das Zeichen "-"
angegeben wurde, wird die Standardeingabe verwendet.
Die folgenden Optionen werden unterstuetzt:
-a Algo Der
Algorithmus, Default ist sha-1.
Seit Jacksum 1.0.0
Algorithmen koennen mit einem Pluszeichen kombiniert werden,
Beispiele: "sha1+crc32", "bsd+crc24+xor8".
Wenn "-a all" angegeben wird, werden alle unterstuetzten
Algorithmen verwendet, siehe auch -F. Sobald "all" oder ein
Pluszeichen verwendet wird, erfolgt die Ausgabe normalisiert,
die Prüfsumme hexadezimal mit dezimaler Dateigroesse.
Beispiele: "sha1+", "md5+"
Seit Jacksum 1.7.0, siehe auch -A, -F
-A
Alternative. Per Default verwendet Jacksum die vom Java API
zur Verfuegung gestellten Algorithmen - falls verfuegbar,
weil sie vom Hersteller der JVM optimiert sind und
gewoehnlich eine sehr gute Performance erreichen.
Wenn -A gesetzt ist, verwendet Jacksum - falls vorhanden -
alternative Implementierungen der Algorithmen (in purem
Java). Tatsaechlich stehen fuer folgende Algorithmen
alternative Implementierungen zur Verfuegung:
adler32, crc32, md5, sha-1, sha-256, sha-384, sha-512
Seit Jacksum 1.5.0, siehe auch -a
-c Liste Check
list. Ueberprueft die Datenintegritaet anhand einer
Liste. Bei der Liste handelt es sich typischerweise um eine
von Jacksum erzeugte Ausgabe. Idealerweise handelt es sich
um eine Liste, die mit der Option -m erzeugt wurde.
Es koennen aber auch Listen fremder Programme verarbeitet
werden. In diesem Fall sind alle erforderlichen Parameter
anzugeben, die die gleiche Ausgabe erzeugen koennen.
Der Parameter -F wird ignoriert.
Um Dateien von der Ueberpruefung auszuschliessen, koennen
Zeilen in der Liste geloescht werden.
Seit Jacksum 1.3.0, siehe auch -l -I und -m
-d
Directories (nur regulaere). Folge keinen symbolischen Links
unter Linux/Unix. Ein symbolischer Link eines Unter-
verzeichnisses auf ein uebergeordnetes Verzeichnis kann eine
Endlosschleife beim rekursiven Traversieren unter Linux/Unix
verursachen. Mit dieser Option koennen symbolische Links auf
Verzeichnisse ignoriert werden. Die Option wird unter Windows
ignoriert.
Seit Jacksum 1.5.0, siehe auch -r
-e Sequenz Expectation. Erwartet
wird, dass genau die "Sequenz"
berechnet wird. Funktioniert mit einer Datei, der Standard-
eingabe und mit der Option -q. Liefert OK (exit code 0) oder
MISMATCH (exit code 1) zurueck.
Seit Jacksum 1.4.0
Funktioniert auch mit mehreren Dateien oder Verzeichnissen,
um Duplikate zu finden. In diesem Fall werden alle
Fundstellen ausgegeben.
Gross- und Kleinschreibung von "Sequenz" spielt nur eine
Rolle, wenn die Base 64 Kodierung (mit -E) gewaehlt wurde.
Seit Jacksum 1.6.0, siehe auch -a, -q, -E, -x und -X
-E Kodierung Encoding. Die Pruefsumme kann
wie folgt kodiert werden:
bin Binaer
dec Dezimal
oct Oktal
hex Hexadezimal mit
Kleinbuchstaben (wie -x)
hexup Hexadezimal mit Grossbuchstaben
(wie -X)
base16 Base 16 (wie in RFC 3548 definiert)
base32 Base 32 (wie in RFC 3548 definiert)
base64 Base 64 (wie in RFC 3548 definiert)
bb BubbleBabble
(von OpenSSH und SSH2 verwendet)
Seit Jacksum 1.6.0, siehe auch -x und -X
-f
Files. Nur Dateien werden betrachtet, die Meldungen
"... Is a directory" und " ... Is not a regular file" werden
damit unterdrueckt.
Seit Jacksum 1.0.0, siehe auch -V
-F Format Format. Setzt
ein benutzerdefiniertes Ausgabeformat.
#ALGONAME wird durch den Namen des
Algorithmus
ersetzt
#ALGONAME{i} siehe auch #CHECKSUM{i}
#CHECKSUM wird durch den Wert des Hashes,
CRCs, bzw.
der Pruefsumme ersetzt
(abhaengig von -a, -b, -E, -g, -G, -x, -X)
#CHECKSUM{i} Wenn bei Option -a mehrere Algorithmen
durch ein + voneinander getrennt wurden,
wird der Platzhalter mit der Pruefsumme
ersetzt, die durch einen numerischen Index
spezifiziert werden kann. Wird keine Zahl,
sondern der Buchstabe i angegeben, fungiert
er als automatisch laufender Index. (1.7)
#FILENAME wird durch den Dateinamen
und evtl. Pfad
ersetzt (abhaengig von -p und -P)
#FILENAME{NAME} wird nur durch den Dateinamen ersetzt (1.6)
#FILENAME{PATH} wird nur durch den Dateipfad ersetzt (1.6)
#FILESIZE wird durch die Dateigroesse
ersetzt
#FINGERPRINT ist ein Alias fuer #CHECKSUM
#SEPARATOR wird durch den durch -s spezifizierten
Separator ersetzt
#TIMESTAMP wird durch den Zeitstempel der
Datei ersetzt
(abhaengig von -t)
#QUOTE wird durch
ein Gaensefuesschen (") ersetzt
Seit Jacksum 1.5.0, falls nicht anders angegeben,
siehe auch -a, -E, -g, -G, -p, -P, -s, -t, -x, -X
-g Anzahl grouping. Gruppiert
die hexadezimale Ausgabe der
Pruefsumme in "Anzahl" Bytes fuer bessere Lesbarkeit.
Nur gueltig bei hexadezimaler Kodierung.
Die Gruppen werden durch ein Leerzeichen bzw. durch das
mit -G spezifizierte Zeichen voneinander getrennt
Seit Jacksum 1.6.0, siehe auch -E, -G, -x und -X
-G Zeichen group character.
Das Zeichen zum Trennen von Gruppen.
Nur gueltig bei gesetztem Schalter -g und hexadezimaler
Kodierung.
Seit Jacksum 1.6.0, siehe auch -E, -g, -x und -X
-h [Sprache] Hilfe ausgeben, fuer "Sprache"
kann "en" und "de" angegeben
[Sektion] werden, Default
ist "en"; gueltige Werte fuer "Sektion" sind
Zeichenketten wie Sektionsueberschriften oder Optionen. Mehr
Informationen dazu finden Sie im Abschnitt BEISPIELE.
Seit Jacksum 1.0.0, Parameter Sektion seit Jacksum 1.6.0,
Siehe auch -v
-I String Ignorieren.
Beim Erstellen mit -m oder beim Einlesen mit -c
werden alle Zeilen ignoriert, die mit der Zeichenkette
String beginnen.
Seit Jacksum 1.6.0, siehe auch -c und -m
-l
Liste. Zeige nur Dateien, die modifiziert oder geloescht
worden sind. Nur in Kombination mit der Option -c.
Seit Jacksum 1.4.0, siehe auch -c
-m
Metainfo. Gibt vor der eigentlichen Verarbeitung zusaetzliche
Zeilen aus. Sie enthalten u. a. die Information der
verwendeten Programmoptionen. So laesst sich die Ausgabe von
Jacksum spaeter wieder als Eingabe mit Hilfe der Option -c
ohne weitere Parameter spezifizieren zu muessen, verwenden.
Per Default wird der Tabulator als Trennzeichen
fuer die Ausgabe benutzt, Angaben mit -F werden ignoriert.
Seit Jacksum 1.3.0, siehe auch -c
-o Datei Output.
Die Ausgabe erfolgt in einer Datei, statt im
Standardausgabekanal. Das Programm beendet sich, wenn die
Datei bereits existiert. Die Datei, die durch -o spezifiziert
wird, wird vom Verarbeitungsprozess ausgeschlossen.
Seit Jacksum 1.6,0, siehe auch -O, -u und -U
-O Datei Output.
Identisch mit -o, eine bereits existierende Datei
wird jedoch ohne Warnung ueberschrieben.
Seit Jacksum 1.6.0, siehe auch -o, -u und -U
-p
Pfad. Gibt Pfadinformationen in jeder Zeile aus, statt den
Pfad als Ueberschrift fuer jedes Verzeichnis auszugeben,
wenn Verzeichnisse rekursiv abgearbeitet werden (-r).
Mit dieser Option wird die Ausgabe groesser, es wird
aber auch einfacher, Zeilen mit anderen Programmen wie sort
zu sortieren oder mit grep zu filtern.
Seit Jacksum 1.4.0, siehe auch -F, -P, -r und -w
-P Zeichen Pfadzeichen. Per
Default wird das systemabhaengige Trenn-
zeichen fuer Verzeichnisse verwendet. Unter Unix/Linux ist
dies der Slash (/), unter Windows ist es der Backslash (\).
Wenn ein spezielles Ausgabeformat fuer Dateien erforderlich
ist (wie beispielsweise fuer HTML-Links) kann diese Option
verwendet werden, um das Default-Trennzeichen fuer
Verzeichnisse zu spezifizieren.
Seit Jacksum 1.5.0, siehe auch -F und -p
-q [Typ:]Seq Quick sequence. Verarbeiten
einer Sequenz und danach
sofortiges Beenden des Programms. "Typ" kann verwendet
werden, um den Typ der Sequenz (text, hexadezimal oder
dezimal) zu spezifizieren:
txt:Example1
hex:4578616D706C6531
dec:69,120,97,109,112,108,101,49
4578616D706C6531
Wird type nicht angegeben, wird fuer type "hex" angenommen.
Wird type als "txt" spezifiziert, wird der Default-
Zeichensatz der Plattform verwendet, um die Sequenz
seq zu interpretieren.
Seit Jacksum 1.3.0 (nur hex), "Typ" seit Jacksum 1.5.0.
-r
Rekursive Verarbeitung von Verzeichnissen. Ohne einen Datei-
Parameter wird das aktuelle Verzeichnis verwendet.
Seit Jacksum 1.0.0, siehe auch -p und -w
-s Trenner Separator. Benutzerspezifische
Trennzeichenkette
(\t, \n, \r, \", \' und \\ werden uebersetzt), der Default-
wert ist abhaengig vom gewaehlten Algorithmus.
Seit Jacksum 1.0.0, siehe auch -F
-S
Summary. Berechnet nur einen einzigen Wert. Alle Dateien,
die Verzeichnisstrukturen, die Dateinamen und Zeitstempel
(falls gewuenscht) sind Teil dieses Wertes. Siehe auch -w.
Seit Jacksum 1.5.0, siehe auch -r und -w
-t Format Timestamp.
Ein Format fuer den Zeitstempel einer Datei. Es
wird Java's Formatierungsklasse SimpleDateFormat verwendet.
Gueltige Formatierungszeichen sind
G Aera
y Jahr
M Monat des Jahres
w Woche des Jahres (Kalenderwoche)
W Woche des Monats
D Tag des Jahres
d Tag des Monats
F Tag der Woche des Monats
E Wochentag
a Am/pm Marker
H Stunde des Tages (0-23)
k Stunde des Tages (1-24)
K Stunde als am/pm (0-11)
h Stunde als am/pm (1-12)
m Minute der Stunde
s Sekunde der Minute
S Millisekunde
z Zeitzone, generell
Z Zeitzone nach RFC 822
Wenn fuer form das Wort "default" gewaehlt wird, werden
Zeitstempel mit dem Muster "yyyyMMddHHmmss" formatiert.
Seit Jacksum 1.3.0
#SEPARATOR wird durch den durch -s spezifizierten
Separator ersetzt
#QUOTE wird durch ein Gaensefuesschen
(") ersetzt
Seit Jacksum 1.6.0, siehe auch -F
-u Datei Umlenkung.
Fehlermeldungen erfolgen in einer Datei, statt im
Standardfehlerkanal. Das Programm beendet sich, wenn die Datei
bereits existiert. Die Datei, die durch -u spezifiziert wird,
wird vom Verarbeitungsprozess ausgeschlossen.
Seit Jacksum 1.6,0, siehe auch -U, -o und -O
-U Datei Umlenkung.
Identisch mit -u, jedoch wird eine bereits
existierende Datei ohne Warnung ueberschrieben.
Seit Jacksum 1.6.0, siehe auch -u, -o und -O
-v
Version. Gibt die Version aus und beendet das Programm.
Seit Jacksum 1.2.0, siehe auch -h
-V control verbose. Gibt zusaetzliche
Informationen aus. Wenn -V der
einzigste Parameter ist, verhaelt er sich wie -v.
"control" kann folgende Schluesselwoerter annehmen, die
durch Komma zu trennen sind:
details | nodetails Fehler werden mit oder ohne Details
ausgegeben
warnings | nowarnings Es werden Warnungen ausgegeben oder
nicht
summary | nosummary Am Ende wird eine Zusammenfassung
ausgegeben oder nicht
Standardmaessig wird "-V details,warnings,nosummary"
angenommen.
Seit Jacksum 1.6.0, siehe auch -f und -v
-w
working directory. Der Dateiparameter wird als
Arbeitsverzeichnis verwendet. Dies erlaubt die Erstellung
von relativen Pfaden statt absoluten Pfaden.
Seit Jacksum 1.6.0, siehe auch -r und -S
-x
Hexadezimale Ausgabe der Pruefsumme unter Verwendung von
Kleinbuchstaben. Kurzform fuer "-E hex".
Seit Jacksum 1.1.0, siehe auch -E
-X
Hexadezimale Ausgabe der Pruefsumme unter Verwendung von
Grossbuchstaben. Kurzform fuer "-E hexup".
Seit Jacksum 1.1.0, siehe auch -E
Folgende Algorithmen werden unterstuetzt:
adler32 Algorithmus:
Adler32 [java.util.zip.Adler32]
adler-32 Laenge:
32 bits
Typ: checksum, 1995
Seit: Jacksum 1.0.0 (Alias "adler-32"
seit 1.2.0)
Bemerkung: Die Spezifikation fuer Adler32 kann in RFC 1950
gefunden werden, er ist eine 32 bit Erweiterung
und Verbesserung des Fletcher-Algorithmus, der
im ITU-T X.224 / ISO 8073 Standard verwendet
wird. Die alternative Implementierung
[jonelo.jacksum.algorithm.Adler32alt] wird
verwendet, wenn die Option -A angegeben wurde.
bsd
Algorithmus: BSD checksum Algorithmus
bsdsum
Laenge: 16 bits
sumbsd
Typ: checksum
Seit: Jacksum 1.0.0 (Alias "bsdsum"
seit 1.2.0, alias
"sumbsd" seit 1.6.0)
Bemerkung: Ausgabeformat ist exakt wie das properitaere
Programm sum (Groesse in 1024 byte Bloecken).
Siehe auch sysv
- unter BeOS ist es /bin/sum [-r]
- unter FreeBSD ist es /usr/bin/sum
und /usr/bin/cksum -o 1
- unter HP-UX ist es /usr/bin/sum -r
- under IBM AIX ist es /usr/bin/sum [-r]
- unter Linux ist es /usr/bin/sum [-r]
- unter MacOS X ist es /usr/bin/sum
und /usr/bin/cksum -o 1
- unter Solaris ist es /usr/ucb/sum
- under Windows gibt es kein sum
cksum
Algorithmus: POSIX 1003.2 CRC Algorithmus
Laenge: 32 bits
Typ: crc
Seit: Jacksum 1.0.0
Bemerkung: - unter BeOS ist es /bin/cksum
- unter FreeBSD ist es /usr/bin/cksum
- unter HP-UX ist es /usr/bin/cksum und
/usr/bin/sum -p
- unter IBM AIX ist es /usr/bin/cksum
- unter Linux ist es /usr/bin/cksum
- unter MacOS X ist es /usr/bin/cksum
- unter Solaris ist es /usr/bin/cksum
- unter Tru64 ist es /bin/cksum (CMD_ENV=xpg4)
- unter Windows gibt es kein cksum
G(x) = x^32 + x^26+x^23 + x^22 + x^16 + x^12 +
x^11 + x^10 + x^8 + x^7 + x^5 + x^4 + x^2 + x +1
Der Posix CRC laesst sich mit dem Rocksoft-Model
CRC Algorithmus nicht genau beschreiben, da er
die Messagelaenge in den CRC mit einrechnet.
Ohne Messagelaenge wuerde der Code lauten:
crc:32,04C11DB7,0,false,false,FFFFFFFF
crc:<params> Algorithmus: CRC
Laenge: 8..64 bits
Typ: crc
Seit: Jacksum 1.7.0
Bemerkung: Mit diesem generischen CRC koennen alle
CRC-Algorithmen spezifiziert werden, die sich
mit dem "Rocksoft (tm) Model CRC Algorithm"
beschreiben lassen.
<params> muss aus 6 Werten bestehen, die durch
Komma voneinander getrennt werden. Diese sind:
width,poly,init,refIn,refOut,xorOut
width - die Laenge in Bits, dezimale Angabe
poly - das Generatorpolynom des Algorithmus,
hexadezimale Angabe
init - mit Welchem Wert initialisieren?
hexadezimale Angabe
refIn - Bytes der Eingabe spiegeln?
true oder false
refOut - Ausgabe (den CRC) spiegeln?
true oder false
xorOut - mit welchem Wert den CRC XORen?
hexadezimale Angabe
crc8
Algorithmus: CRC-8
crc-8
Laenge: 8 bits
Typ: crc:8,7,0,false,false,0
Seit: Jacksum 1.6.0
Bemerkung: Die Implementierung dieses CRC-8 (cyclic
redundancy check) wird beispielsweise im
System Management Bus (SMBus) und im Free
Lossless Audio Codec (FLAC) verwendet
(Generator-Polynom x^8 + x^2 + x^1 + 1)
crc16
Algorithmus: CRC-16 (ARC)
crc-16
Laenge: 16 bits
Typ: crc:16,8005,0,true,true,0
Seit: Jacksum 1.2.0
Bemerkung: Die Implementierung dieses CRC-16 (cyclic
redundancy check) ist die am weitesten
verbreitete Form der CRC-16 Algorithmen
(Generator-Polynom x^16 + x^15 + x^2 + 1)
Sie wird beispielsweise von LHA verwendet
crc16_x25 Algorithmus:
CRC-16 (X.25) / Frame Checking Sequence
crc-16_x-25 Laenge:
16 bits
fcs16
Typ: crc:16,1021,FFFF,true,true,FFFF
fcs-16
Seit: Jacksum 1.5.0 (alias _x25,
_x-25 seit 1.7.0)
Bemerkung: Der Algorithmus FCS-16 ist in RFC1331 definiert.
crc24
Algorithmus: CRC-24
crc-24
Laenge: 24 bits
Typ: crc:24,864CFB,B704CE,false,false,0
Seit: Jacksum 1.6.0
Bemerkung: Die Implementierung dieses CRC-24 (cyclic
redundancy check) wird beispielsweise von
Open PGP verwendet (RFC 2440).
crc32
Algorithmus: CRC-32 [java.util.zip.CRC32]
crc-32
Laenge: 32 bits
fcs32
Typ: crc:32,04C11DB7,FFFFFFFF,true,true,FFFFFFFF
fcs-32
Seit: Jacksum 1.0.0 (Alias crc-32
seit 1.2.0,
Alias fcs32 und fcs-32 seit 1.5.0)
Bemerkung: Der Standardalgorithmus CRC-32 (cyclic
redundancy check) ist in ISO 3309,
ISO/IEC 13239:2002 und ITU-T V.42 definiert
und wird in PKZip, gzip, png, Ethernet, FDDI
und WEP verwendet. Der Algorithmus ist auch
unter FCS (frame checking sequence) bekannt.
Eine alternative Implementierung ist
mit -A verfuegbar.
- unter BeOS gibt es kein crc32
- unter FreeBSD ist es /usr/bin/cksum -o 3
- unter HP-UX gibt es kein crc32
- unter Linux gibt es kein crc32
- unter MacOS X ist es /usr/bin/cksum -o 3
- unter Solaris gibt es kein crc32
- unter Windows gibt es kein crc32
crc32_bzip2 Algorithmus: CRC-32 (Bzip2)
crc-32_bzip-2 Laenge:
32 bits
Typ: crc:32,04C11DB7,FFFFFFFF,false,false,FFFFFFFF
Seit: Jacksum 1.7.0
Bemerkung: Dieser CRC findet in bzip2 Dateien Verwendung
crc32_mpeg2 Algorithmus: CRC-32 (MPEG-2)
crc-32_mpeg-2 Laenge:
32 bits
Typ: crc:32,04C11DB7,FFFFFFFF,false,false,0
Seit: Jacksum 1.4.0
Bemerkung: Dieser CRC-32 implementiert die MPEG
Spezifikation der CRC-32 Berechnung
crc64
Algorithmus: CRC-64
crc-64
Laenge: 64 bits
Typ: crc:64,1B,0,true,true,0
Seit: Jacksum 1.5.0
Bemerkung: Dieser Algorithmus ist im ISO 3309 Standard
definiert.
(Generator-Polynom x^64 + x^4 + x^3 + x + 1)
elf
Algorithmus: ELF
elf32
Laenge: 32 bits
elf-32
Typ: hash
Seit: Jacksum 1.5.0
Bemerkung: im Unix ELF (Executable and Linkable Format)
verwendete Hashfunktion fuer Objektdateien.
ed2k
Algorithmus eMule/eDonkey
emule
Laenge: 128 bits
edonkey
Typ: hash
Seit: Jacksum 1.5.0
Bemerkung: Dieser Algorithmus wird in eDonkey bzw. eMule
verwendet, er basiert auf MD4, gibt aber unter-
schiedliche Fingerprints fuer Dateien >= 9500 KB
zurueck.
gost
Algorithmus: GOST R 34.11-94
[org.bouncycastle.crypto.digests.GOST3411Digest]
Laenge: 256 bits
Typ: hash, 1994
Seit: Jacksum 1.6.0
Bemerkung: "GOsudarstvennyi STandard", Russisch fuer
"Regierungsstandard". veroeffentlicht 1994 als
der Sowjetische Standard GOST-R-34.11-94.
has160
Algorithmus: HAS-160 [gnu.crypto.hash.Has160 (jonelo)]
has-160
Laenge: 160 bits
Typ: hash, 2000
Seit: Jacksum 1.7.0
Bemerkung: HAS-160 ist eine kryptographische Hashfunktion
und koreanischer TTA-Standard (Telecommunications
and Technology Association).
haval
Algorithmus: Haval [gnu.crypto.hash.Haval]
haval_<b>_<r> Laenge:
128, 160, 192, 224 oder 256 bits
Typ: hash, 1992
Seit: Jacksum 1.4.0
Bemerkung: Haval wurde von Yuliang Zheng, Josef Pieprzyk
und Jennifer Seberry im Jahre 1992 erfunden.
Der Haval Message-Digest Algorithmus hat eine
variable Laenge und eine variable Anzahl von
Runden. Die Laenge <b> kann Werte von 128 bis
256 bits bei einer Schrittweite von 32 bits
annehmen. Die Anzahl der Runden <r> kann von 3
bis 5 variieren. Die Default-Werte (nur "haval")
sind 128 und 3
md2
Algorithmus: MD2 [gnu.crypto.hash.MD2]
md2sum
Laenge: 128 bits
Typ: hash, 1989
Seit: Jacksum 1.2.0
Bemerkung: Der MD2 Algorithmus ist in RFC 1319 definiert
Die RSA Laboratories empfehlen in ihrem
Bulletin #4 vom 12. November 1996 Applikationen
von MD2 weg zu aktualisieren. Jacksum unter-
stuetzt MD2 weiterhin aus Kompatibilitaets-
gruenden und zu Lehrzwecken.
md4
Algorithmus: MD4 [gnu.crypto.hash.MD4]
md4sum
Laenge: 128 bits
Typ: hash, 1990
Seit: Jacksum 1.2.0
Bemerkung: Der MD4 Algorithmus ist in RFC 1320 definiert
Die RSA Laboratories empfehlen in ihrem
Bulletin #4 vom 12. November 1996 MD4 nicht mehr
zu verwenden. Jacksum unterstuetzt MD4 weiterhin
aus Kompatibilitaetsgrunden und zu Lehrzwecken.
md5
Algorithmus: MD5 [java.security.MessageDigest]
md5sum
Laenge: 128 bits
Typ: hash, 1991
Seit: Jacksum 1.0.0
Bemerkung: Der MD5 Algorithmus wurde 1991 von Ronald Rivest
entwickelt, MD5 ist in RFC 1321 definiert.
[gnu.crypto.hash.MD5] is die alternative
Implementierung und wird verwendet, wenn -A
angegeben wird.
- unter BeOS ist es /bin/md5sum
- unter FreeBSD ist es /sbin/md5
- unter HP-UX gibt es kein md5 oder md5sum
- unter Linux ist es /usr/bin/md5sum
- unter MacOS X ist es /usr/bin/md5
- unter Solaris ist es /usr/sbin/md5 (SUNWkeymg)
- unter Windows gibt es kein md5 oder md5sum
none
Algorithmus: none
Laenge: 0 bits
Typ: n/a
Seit: Jacksum 1.6.0
Bemerkung Eine Checksum wird nicht berechnet, der Inhalt
einer Datei bleibt unberücksichtigt, es wird
nur die Dateigroesse (und wenn gewuenscht auch
der Zeitstempel einer Datei) ermittelt.
read
Algorithmus: read
Laenge: 0 bits
Typ: n/a
Seit: Jacksum 1.6.0
Bemerkung Eine Checksum wird nicht berechnet, jedoch
wird
jedes Byte einer Datei gelesen, es wird die
Dateigroesse (und wenn gewuenscht auch der
Zeitstempel einer Datei) ermittelt.
rmd128
Algorithmus: RIPEMD-128 [gnu.crypto.hash.RipeMD128]
rmd-128
Laenge: 128 bits
ripemd128 Typ:
hash
ripemd-128 Seit:
Jacksum 1.2.0 (Alias rmd128/rmd-128 seit 1.4.0)
ripe-md128 Bemerkung:
Ein Message Digest, siehe auch RIPEMD-160
rmd160
Algorithmus: RIPEMD-160 [gnu.crypto.hash.RipeMD160]
rmd-160
Laenge: 160 bits
ripemd160 Typ:
hash, 1996
ripemd-160 Seit:
Jacksum 1.2.0 (Alias rmd160/rmd-160 seit 1.4.0)
ripe-md160 Bemerkung:
RIPEMD wurde im Projekt RIPE (RACE Integrity
Primitives Evaluation) entwickelt, er wird
u. a. in GnuPG eingesetzt.
rmd256
Algorithmus: RIPEMD-256 [org.bouncycastle.crypto.digests]
rmd-256
Laenge: 256 bits
ripemd256 Typ:
hash
ripemd-256 Seit:
Jacksum 1.6.0
ripe-md256 Bemerkung:
Ein Message Digest, siehe auch RIPEMD-160
RIPEMD-256 ist so sicher wie RIPEMD-128
rmd320
Algorithmus: RIPEMD-320 [org.bouncycastle.crypto.digests]
rmd-320
Laenge: 320 bits
ripemd320 Typ:
hash
ripemd-320 Seit:
Jacksum 1.6.0
ripe-md320 Bemerkung:
Ein Message Digest, siehe auch RIPEMD-160
RIPEMD-320 ist so sicher wie RIPEMD-160
sha0
Algorithmus: SHA-0 [gnu.crypto.hash.Sha0 (jonelo)]
sha-0
Laenge: 160 bits
Typ: hash, 1993
Seit: Jacksum 1.6.0
Bemerkung: Der Secure Hash Algorithmus SHA-0 wurde 1993 im
Federal Information Processing Standard des
National Institute for Standards and Technology
definiert (NIST FIPS PUB 180).
Er wurde von der NSA kurz nach seiner
Veroeffentlichung zurueckgezogen und wurde
durch eine verbesserte Version ersetzt, die
1995 im FIPS PUB 180-1 veroeffentlicht wurde,
sie ist allgemein bekannt als "SHA-1".
sha
Algorithmus: SHA-1 [java.security.MessageDigest]
sha1
Laenge: 160 bits
sha-1
Typ: hash, 1995
sha160
Seit: Jacksum 1.0.0 (Alias sha-1
seit 1.2.0, codes
sha-160
sha160 und sha-160 seit 1.5.0, Default seit
1.5.0)
Bemerkung: Der Secure Hash Algorithmus SHA-1 wurde 1995 im
Federal Information Processing Standard des
National Institute for Standards and Technology
definiert (NIST FIPS 180-1). Die alternative
Implementierung [gnu.crypto.hash.Sha160] wird
verwendet, wenn die Option -A angegeben wurde.
- unter BeOS gibt es kein sha1
- unter FreeBSD ist es /sbin/sha1
- unter HP-UX gibt es kein sha1
- unter Linux ist es /usr/bin/sha1sum
- unter MacOS X gibt es kein sha1
- unter Solaris gibt es kein sha1
- unter Windows gibt es kein sha1
sha224
Algorithmus: SHA-224 [gnu.crypto.hash.Sha224 (jonelo)]
sha-224
Laenge: 224 bits
Typ: hash, 2004
Seit: Jacksum 1.6.0
Bemerkung: Der Secure Hash Algorithmus SHA-224 wurde 2004
im Federal Information Processing Standard des
National Institute for Standards and Technology
definiert (NIST FIPS 180-2).
SHA-224 ist im Grunde genommen ein SHA-256, hat
jedoch unterschiedliche Initialwerte, der finale
Hashwert ist abgeschnitten, um 224 Bits zu
erhalten. Er ist auch in RFC 3874 beschrieben.
sha256
Algorithmus: SHA-256 [java.security.MessageDigest]
sha-256
Laenge: 256 bits
Typ: hash, 2001
Seit: Jacksum 1.3.0
Bemerkung: Der Secure Hash Algorithmus SHA-256 wurde 2001
im Federal Information Processing Standard des
National Institute for Standards and Technology
definiert (NIST FIPS 180-2). Die alternative
Implementierung [gnu.crypto.hash.Sha256] wird
verwendet, wenn JRE < 1.4.2 eingesetzt wird
oder die Option -A angegeben wurde.
sha384
Algorithmus: SHA-384 [java.security.MessageDigest]
sha-384
Laenge: 384 bits
Typ: hash, 2001
Seit: Jacksum 1.3.0
Bemerkung: Der Secure Hash Algorithmus SHA-384 wurde 2001
im Federal Information Processing Standard des
National Institute for Standards and Technology
definiert (NIST FIPS 180-2). Die alternative
Implementierung [gnu.crypto.hash.Sha384] wird
verwendet, wenn JRE < 1.4.2 eingesetzt wird
oder die Option -A angegeben wurde.
sha512
Algorithmus: SHA-512 [java.security.MessageDigest]
sha-512
Laenge: 512 bits
Typ: hash, 2001
Seit: Jacksum 1.3.0
Bemerkung: Der Secure Hash Algorithmus SHA-512 wurde 2001
im Federal Information Processing Standard des
National Institute for Standards and Technology
definiert (NIST FIPS 180-2). Die alternative
Implementierung [gnu.crypto.hash.Sha512] wird
verwendet, wenn JRE < 1.4.2 eingesetzt wird
oder die Option -A angegeben wurde.
sum8
Algorithmus: Sum 8
sum-8
Laenge: 8 bits
Typ: checksum
Seit: Jacksum 1.3.0
Bemerkung: Wert wird durch Addition aller Bytewerte der
Eingabedaten modulo 2^8 berechnet.
Die Reihenfolge der bytes wird von diesem
Algorithmus nicht beruecksichtigt!
sum16
Algorithmus: Sum 16
sum-16
Laenge: 16 bits
Typ: checksum
Seit: Jacksum 1.3.0
Bemerkung: Wert wird durch Addition aller Bytewerte der
Eingabedaten modulo 2^16 berechnet.
Die Reihenfolge der bytes wird von diesem
Algorithmus nicht beruecksichtigt!
sum24
Algorithmus: Sum 24
sum-24 Laenge:
24 bits
Typ: checksum
Seit: Jacksum 1.3.0
Bemerkung: Wert wird durch Addition aller Bytewerte der
Eingabedaten modulo 2^24 berechnet.
Die Reihenfolge der bytes wird von diesem
Algorithmus nicht beruecksichtigt!
sum32
Algorithmus: Sum 32
sum-32
Laenge: 32 bits
Typ: checksum
Seit: Jacksum 1.3.0
Bemerkung: Wert wird durch Addition aller Bytewerte der
Eingabedaten modulo 2^32 berechnet.
Die Reihenfolge der bytes wird von diesem
Algorithmus nicht beruecksichtigt!
sysv
Algorithmus: UNIX System V checksum algorithm
sysvsum
Laenge: 16 bits
sumsysv
Typ: checksum, 1985
Seit: Jacksum 1.2.0, Alias "sumsysv"
seit 1.6.0
Bemerkung: Ausgabeformat ist exakt wie das propertitaere
Programm sum (Groesse in 512 bytes Bloecken).
Siehe auch bsd
- under BeOS ist es /bin/sum -s
- unter FreeBSD ist es /usr/bin/cksum -o 2
- unter HP-UX ist es /usr/bin/sum
- unter Linux ist es /usr/bin/sum -s
- unter MacOS X ist es /usr/bin/cksum -o 2
- unter Solaris ist es /usr/bin/sum
- unter Windows gibt es kein sum
tiger
Algorithmus: Tiger [gnu.crypto.hash.Tiger128 (jonelo)]
tiger128 Laenge:
128 bits
tiger-128 Typ:
hash, 1995
Seit: Jacksum 1.6.0
Bemerkung: Der Hashwert entspricht den ersten 128 bits
des Ergebnisses von Tiger-192.
tiger
Algorithmus: Tiger [gnu.crypto.hash.Tiger160 (jonelo)]
tiger160 Laenge:
160 bits
tiger-160 Typ:
hash, 1995
Seit: Jacksum 1.6.0
Bemerkung: Der Hashwert entspricht den ersten 160 bits
des Ergebnisses von Tiger-192.
tiger
Algorithmus: Tiger [gnu.crypto.hash.Tiger]
tiger192 Laenge:
192 bits
tiger-192 Typ:
hash, 1995
Seit: Jacksum 1.4.0
Bemerkung: entwickelt von Ross Anderson und Eli Biham, 1995
tiger2
Algorithmus: Tiger2 [gnu.crypto.hash.Tiger2 (jonelo)]
Laenge: 192 bits
Typ: hash, 2005
Seit: Jacksum 1.6.0
Bemerkung: entwickelt von Ross Anderson und Eli Biham, 2005
tree:<algo> Algorithmus: Hash
Tree
Laenge: abhaengig des unterliegenden Algorithmuses
Typ: hash tree, 1979
Seit: Jacksum 1.7.0
Bemerkung: erfunden von Ralph Merkle, 1979. Ein Hash Tree
ist ein Baum von Hashes in welchem die Blaetter
wiederum Hashes von Datenbloecken darstellen.
Standardmaessig wird der Tree Hash mit Base32
kodiert. Jacksum kann den Root Hash des Tree
Hashes berechen, dabei sind folgende Algorithmen
unterstuetzt: tiger, tiger2
Tiger Tree Hashes werden in P2P File Sharing-
Protokollen und -Applikationen eingesetzt.
whirlpool0 Algorithmus: Whirlpool-0
[gnu.crypto.hash.Whirlpool (jonelo)]
whirlpool-0 Laenge:
512 bits
Typ: hash, 2000
Seit: Jacksum 1.6.0
Bemerkung: Die Whirlpool Hash Funktion, entwickelt von
Paulo S.L.M. Barreto und Vincent Rijmen, 2000.
Dies ist die orginale Spezifikation von
Whirlpool.
whirlpool1 Algorithmus: Whirlpool-1
[gnu.crypto.hash.Whirlpool]
whirlpool-1 Laenge:
512 bits
Typ: hash, 2001
Seit: Jacksum 1.2.0
Bemerkung: Die Whirlpool Hash Funktion, entwickelt von
Paulo S.L.M. Barreto und Vincent Rijmen, 2001.
Dies ist die erste Verbesserung der
Spezifikation:
"We propose renaming the original algorithm
Whirlpool-0 and using the term Whirlpool for
the final, modified version that uses the
improved S-box design."
whirlpool Algorithmus:
Whirlpool [gnu.crypto.hash.Whirlpool (jonelo)]
whirlpool2 Laenge:
512 bits
whirlpool-2 Typ:
hash, 2003
Seit: Jacksum 1.6.0
Bemerkung: Die Whirlpool Hash Funktion, entwickelt von
Paulo S.L.M. Barreto und Vincent Rijmen, 2003
Dies ist die zweite Verbesserung der
Spezifikation:
"Recently [11. Maerz 2003], Shirai and Shibutani
discovered a flaw in the Whirlpool diffusion
matrix that made its branch number suboptimal.
Although this flaw per se does not seem to
introduce an effective vulnerability, the
present document replaces that matrix
[24. Mai 2003]"
xor8
Algorithmus: Exklusives Oder
xor-8
Laenge: 8 bits
Typ: checksum
Seit: Jacksum 1.3.0
Bemerkung: Wert wird durch ein exklusives Oder aller Werte
des Eingabedatenstromes berechnet.
Die Reihenfolge der bytes wird von diesem
Algorithmus nicht beruecksichtigt!
Das Ausgabeformat von Jacksum:
Wenn kein benutzerspezifisches Format mit -F gewaehlt wird,
wird folgendes Ausgabeformat verwendet:
<checksum><sep>[<filesize><sep>][<timestamp><sep>]<filename>
checksum ist eine Pruefsumme, CRC oder Fingerprint; er
ist abhaengig von den Schaltern -a und -x, bzw. -X
sep ist ein Feldtrenner; er kann mit
-s geaendert
werden, sonst ist er abhaengig von -a, bzw. -m
filesize ist die Groesse der Datei; die Angabe in Bytes oder
Bloecken ist abhaengig von -a, Messag-Digests-
Algorithmen zeigen keine Dateigroesse an
timestamp ist ein optionaler Zeitstempel einer Datei; er kann
mit -t angefordert werden
filename ist der Dateiname, Pfadangaben koennen Teil der
Ausgabe sein, abhaengig von -p und -P
EXIT STATUS
0 - alles ist in Ordnung
1 - es gab mindestens eine Nichtuebereinstimmung
waehrend einer
Ueberpruefung
>1 - im Falle eines Parameter-, .jacksum- oder
I/O-Fehlers
BEISPIELE
jacksum -a crc32 -q "TXT:Hallo Welt!"
berechnet wird ein 32-bit
CRC von dem Text "Hallo Welt!"
jacksum -a crc32 -q 48656C6C6F20576F726C6421
berechnet wird ein 32-bit
CRC der hexadezimalen Folge
48656C6C6F20576F726C6421
("Hello World!")
jacksum -a crc32 -x *.txt
berechnet wird ein 32-bit
CRC von allen Textdateien im aktuellen
Verzeichnis. Die Pruefsequenz
wird hexadezimal ausgegeben (-x).
jacksum -a crc32 -f -t default .
neben den CRCs werden
auch Zeitstempel (-t) aller Dateien im aktuellen
Verzeichnis (.) ausgegeben.
Die Meldung "is a directory"
wird ausserdem unterdrueckt
(-f).
jacksum -f -a crc:16,1021,FFFF,false,false,0
.
es wird ein CRC mit
benutzerdefinierten Parametern verwendet: 16 Bit,
Polynom 1021 (hex, ohne
fuehrende Eins), Initialwert FFFF (hex), weder
Ein- noch Ausgabe spiegeln,
kein Xor.
jacksum -a haval_256_5 .
berechnet wird ein 256
bit Hash mit 5 Runden mit dem Haval
Algorithmus (haval_256_5)
von allen Dateien im aktuellen Verzeichnis.
jacksum -a sha1 -s "\t" -t "EEE, MMM d, yyyy
'at' h:mm a" .
berechnet wird ein 160
bit SHA-1 Message-Digest von allen Dateien
im aktuellen Verzeichnis.
Der Separator (-s) ist auf den Tabulator
gesetzt ("\t"). Zeitangaben
der Dateien werden in einem
benutzerspezifischen
Format ausgegeben (-t).
jacksum -a cksum -r /mnt/share
berechnet wird ein 32
bit CRC nach dem Unix-Standardalgorithmus cksum
von allen Dateien in
/mnt/share und dessen Unterverzeichnissen (-r)
jacksum -a md5 -f -r -m -o liste.jacksum \data
berechnet wird der Message-Digest
MD5 von allen Dateien in \data und
dessen Unterverzeichnissen
(-r), sowie Ausgabe von Metainformation (-m)
und Speicherung der
Ausgabe nach liste.jacksum, Pfade werden ABSOLUT
gespeichert.
jacksum -a md5 -f -r -m -o liste.jacksum -w \data
berechnet wird der Message-Digest
MD5 von allen Dateien in \data und
dessen Unterverzeichnissen
(-r), sowie Ausgabe von Metainformation (-m)
und Speicherung der
Ausgabe nach liste.jacksum, Pfade werden RELATIV
gespeichert.
jacksum -c liste.jacksum
Verifikation aller der
in liste.txt gespeicherten Pruefsequenzen, bzw.
Zeitstempeln. Die Datei
liste.jacksum muss mit -m erzeugt worden sein.
jacksum -a md5 -f -F "#FINGERPRINT #FILESIZE
#FILENAME" *
Berechnet den Message-Digest
MD5 von allen Dateien im aktuellen
Verzeichnis. Dabei wird
durch die benutzerdefinierte Ausgabe auch die
Dateigroesse mit ausgegeben.
jacksum -a md5 -A -V summary bigfile.iso
Gibt u. A. auch die
Zeitdauer aus (-V summary), die benoetigt wurde, um
den MD5 Hash der Datei
bigfile.iso mit der alternativen MD5
Implementierung (-A)
zu berechnen.
jacksum -a crc32 -X -f -p -r -F "#FILENAME #CHECKSUM"
-o jacksum.sfv *
Gibt CRC-32 Werte im
Simple File Verificator (SFV) format aus.
jacksum -a ed2k -f -F
"ed2k://|file|#FILENAME|#FILESIZE|#FINGERPRINT|"
*
Berechnet den eDonkey
Hash von allen Dateien im aktuellen Verzeichnis
mit einem benutzerdefinierten
Ausgabeformat (ed2k link).
jacksum -a ed2k -f -P / -F "<a href=#QUOTEed2k://|file
|#FILENAME|#FILESIZE|#FINGERPRINT|#QUOTE>#FILENAME</a>"
*
Berechnet den eDonkey
Hash von allen Dateien im aktuellen Verzeichnis
mit einem benutzerdefinierten
Ausgabeformat (HTML).
jacksum -a tree:tiger -F "urn:#ALGONAME:#FINGERPRINT"
-q hex:
Berechnet den Root Hash
des Tree Hash (auch bekannt als Merkle Hash)
mit dem Tiger Algorithmus
und leerer Eingabe.
jacksum -a sha1+crc32 .
Berechnet den sha1 Hash
und den crc32 als kombinierte Prüfsumme.
jacksum -a sha1+crc32 -F "#CHECKSUM{0} #CHECKSUM{1}
#FILENAME" .
Berechnet den sha1 Hash
und den crc32 as separate Werte.
jacksum -a all -F "#ALGONAME{i} (#FILENAME) =
#CHECKSUM{i}" .
Berechnet alle unterstuetzten
Algorithmen ueber alle Dateien.
jacksum -a all -F "#ALGONAME{i}" -q txt:
Gibt die Namen aller
unterstuetzten Algorithmen aus
jacksum -h de Syntax
Gibt die Sektion SYNTAX
aus
jacksum -h de haval
Gibt alle Sektionen
aus, die Informationen ueber Haval enthalten
jacksum -h de -t
Gibt alle Informationen
ueber die Option fuer Zeitstempel aus
jacksum -h de | more
Gibt die deutsche Hilfe
mehrseitig aus ("en" fuer Englisch)
AUTOR
Copyright (C) 2002-2006, Dipl.-Inf. (FH) Johann
N. Loefflmann
mailto:jonelo@jonelo.de, http://www.jonelo.de/java/jacksum/index_de.html
LIZENZ
This program is free software; you can redistribute
it and/or modify
it under the terms of the GNU General Public
License as published by
the Free Software Foundation; either version
2 of the License, or any
later version.
This program is distributed in the hope that
it will be useful,
but WITHOUT ANY WARRANTY; without even the implied
warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General
Public License
along with this program; if not, write to the
Free Software
Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
|
Historie:
Jacksum 1.7.0, July 30, 2006
- added a customizable CRC algorithm, now you can calculate any CRC
which
can be described by the Rocksoft Model CRC Algorithm (8 to 64
bit width),
see also sf# 1518023 Setting of an initial value for a CRC
- support for combinable checksums, see also sf# 1210489
(multiple hashes at the same time), thanks to synonymous2 for
this feature request
- support for using all algorithms at once (-a all)
- two new algorithms are supported: crc32_bzip2, HAS-160
- support for Tiger Tree hashes (aka Merkle Hashes). Thanks to Carsten
Krüger,
Germany for the feature request and pointers to some resources
- support for new encodings (bin, dec, oct)
- support for the combination of both options -c and -w,
Thanks to Dipl.-Inf. (FH) Ralf Kahrl, Germany for the implementation
of this feature
- a small performance improvement for the whirlpool algorithms
- replaced the crc24 with a faster one by using the customizable CRC
algorithm
(the old one had also a minor bug in the parameterless constructor)
- bug fixed: -V summary does not always return reasonable values
- bug fixed: update(byte[], int, int) fails if offset is > 0 (sf #
1525183)
This can cause problems if Jacksum is incorporated in different
projects
- The bouncycastle and gnu classes have been moved to jonelo.jacksum.adapt
so that
they won't clash with different downloaded versions of the classes.
Actually this
is to avoid potential problems if a project uses both bouncycastle
and Jacksum for example.
Thanks to Alberto Rodriguez, Spain for the feature request
- documentation updated (BeOS' data integrity programs, Tru64 and year
of the invention for
many algorithms)
- tested with gij 4.0.2, JRE 1.3.1_18, 1.4.2_12, 5.0_07, 6.0-rc-b93
Jacksum 1.6.1, Nov 13, 2005
- regression bug fixed: -r does not work anymore on Linux/Unix
Thanks to Christoph R., Germany and niku.u for the bug reports
(sf# 1354426)
- bug fixed: stdout and stderr overwrite each other when stdout and
stderr are equal
- bug fixed: -c and -V summary give meaningless summary
- exit status depends on the result of -c now
Thanks to Martin Z., Germany for the feature request
- improved documentation ("exit status" and "see also" have been added)
Jacksum 1.6.0, Sep 3, 2005
- twelve new algorithms are supported: CRC-8, CRC-24, GOST R 34.11-94,
SHA-0, SHA-224,
Tiger-128, Tiger-160, Tiger2, Whirlpool-0, Whirlpool-2, RIPEMD-256,
RIPEMD-320
- change: "whirlpool" refers to Whirlpool-2 now, rather than to Whirlpool-1
- support for an alternate Adler 32 implementation
- improved option -c: Jacksum can check the integrity even if a file
list has
not been created by Jacksum (or a file list without meta information)
Thanks to Sebastian J., Germany for this feature request
- new option -w for setting the working directory
- new algorithm-code called "none" for ignoring the real content of
the files for being able to check just against the filesize
- new algorithm-code called "read" for being able to read the file's
content,
but without doing any calculation
- new option -E for an encoding of the checksum (hex, hexup, Base 16,
Base 32,
Base 64 and BubbleBabble are supported)
- new option -g (group some bytes) for better readability of a hex
checksum
- new option -G (group separator) for better readability of a hex checksum
- new option -o for redirecting the output to a file rather than the
standard output,
in this case the file is also excluded from the calculation
process
- new option -O for overwriting an existing file
- new option -I for ignoring lines when checking the integrity by -c
- new option -V for a verbose output (number of processed files and
dirs, processed bytes,
number of read errors and elapsed time)
- improved option -e: works also for multiple files and directories
for being able to find duplicates
- improved option -e: when using -e, the option -x is not necessary
anymore,
if the return value by default is hex anyway
- improved option -m: unnecessary defaults are not be written to the
header anymore
- improved option -h: can show only fractions of the help file rather
than
the complete help file
- improved option -t: #SEPARATOR and #QUOTE are also replaced
Thanks to Claudio C., Italy for the feature request
- improved option -F: #FILENAME{NAME} and #FILENAME{PATH} can be used
Thanks to Claudio C., Italy for the feature request
- bug fixed: if calling the getHexValue() method more than once, the
hash based
algorithms return a different value; this can cause problems
if Jacksum
is used in other projects, Thanks to Bob C. for the bug report
- bug fixed: problem on Unix/Linux while checking a file list if the
filename's
last character is a colon (e. g. "Terminal 1:")
- improved documentation, added also collision files
- improved the public API (support a method to return byte[])
Thanks to Alex G., Germany for this feature request
- improved the public API for other projects (methods getAvailableAlgorithms(),
and equals() have been added)
- Added javadoc, Thanks to Corey Osman for this feature request
- refactored and code improvements
- tested with gij 3.2.2, Kaffe 1.1.4, JRE 1.3.1_16, 1.4.2_09, 5.0_04,
6.0-ea-b48
Jacksum 1.5.1, 2004-10-31
- Regression beseitigt: Wenn Option -l verwendet wird, werden gelöschte
Dateien nicht mehr ausgegeben
Dank an Sabrina Rolleman, Kanada für den Bugreport
- Sourceforge feature request #1028824 wurde implementiert (add homepage
URI with -m)
Dank an Lee A. Davis for the feature request
- Verbesserte Dokumentation
- Erfolgreich getestet mit JRE 5.0
Jacksum 1.5.0, 22.08.2004
- Vier neue Algorithmen werden unterstützt: ed2k/eDonkey/eMule,
CRC-64, ELF-32, FCS-16
Dank an Henrique Malheiro, Portugal für die Referenzimplementierung
des eDonkey-Algorithmus
- Sourceforge bug #948070 wurde beseitigt (-c won't work if -t has
been set)
Dank an Lee A. Davis für den Bugreport
- Bug beseitigt: Jacksum hangs if it reaches a fifo under Unix/Linux
- Bug beseitigt: files which are used by another process can't be processed
properly
- Neue Option -d zum Ignorieren symbolischer Links auf Verzeichnisse
unter Unix/Linux, um
Endlosschleifen in bestimmten Fällen zu vermeiden
- Verbesserte Option -q, um nicht nur Hex-, sondern auch Text- und
Dezimalformate entgegennehmen zu können
- Neue Option -F, um das Ausgabeformat frei definieren zu können
Siehe auch den Sourceforge Feature Request #968469 (show file
length on MD5)
- Neue Option -P, um Dateinamen mit einem benutzerdefinierten Separator
ausgeben zu können
- Listen, die mit -m erzeugt werden, sind nun plattformunabhängig,
erzeugen Sie z. B. eine Liste unter Windows
und verifizieren Sie diese unter Linux
- Neue Option -S, um nur einen einzigen Fingerprint zu berechnen (summary)
Dank an Berthold Kohlmann, Germany für diesen Featurerequest
- Sourceforege feature request #968491 wurde implementiert
(Handle pre 1.5 time formats with -c), ank an Lee A. Davis für
diese Anfrage
- Sourceforge feature request #968487 wurde implementiert (list dir
argument as comment)
Dank an Lee A. Davis für diese Anfrage
- Neue Option -A, um eine alternative Implementierung eines der folgenden
Algorithmen zu wählen:
crc32, md5, sha-1, sha-256, sha-384, sha-512
- Alias FCS-32 für CRC-32 hinzugefügt
- Alias SHA-160 für SHA-1 hinzugefügt
- Überprüfung der Java version nun auch für IBM's Java
VM
- Erfolgreich getestet mit JRE 1.5 beta3
Jacksum 1.4.0, 01.02.2004
- Drei neue Algorithmen werden unterstützt: Tiger, Haval und die
MPEG spec von CRC-32
Dank an to Chris Ash, Southampton, UK für den Featurerequest
basierend auf existierendem
GPL code (VideoLan project)
- Haval unterstützt sowohl Längenparameter (128, 160, 192,
224 oder 256 Bits) als auch
Parameter für die Anzahl der zu durchlaufenden Runden (3
bis 5)
- Algorithmen SHA-256, SHA-384 und SHA-512 werden nun auch mit JRE
1.3.1 unterstützt
- Neue Option -p, um Pfadinformationen jeder Zeile hinzuzufügen,
wenn rekursive Dateiverarbeitung
gewünscht wird. Das macht es einfacher, die Ausgabe mit
sort oder grep weiter zu verarbeiten.
Dank an Douglas E. W. für den Featurerequest und die Referenzimplementierung
- Neue Option -e, um einen Vergleich basierend auf einer erwarteten
Checksum durchzuführen
Dank an Daniel Ellermann, Germany für den Featurerequest
und die Referenzimplementierung
- Neue Option -l, um eine Liste von modifizierten und gelöschten
Dateien auszugeben. Sie kann
als Eingabe für das zip-Kommando verwendet werden
- Programm versucht nicht mehr weiterzumachen, wenn Parameter -t nicht
unterstützte Zeichen enthält
- Versionsüberprüfung für Checkfiles für bessere
Kompatibilität eingeführt
- Erweiterter Kommentar im Sourcecode Crc16.java
- Dokumentation upgedated mit Mac OS X Information
- Erfordert mindestens JRE 1.3.1, 1.4.2 wird empfohlen
Jacksum 1.3.0, 02.11.2003
- Acht neue Algorithmen werden unterstützt: sha-256, sha-384 und
sha-512
(erfordert Java 1.4.2 oder höher), xor8, sum8, sum16, sum24,
sum32
- Option, um Dateien gegen eine gegebene Liste zu überprüfen
(Option -c)
Dank an Leonardo A. Pires, Brasilien für diesen Feature-Request
Dank an Christian F., London, UK für seine Referenzimplementierung
- Option, um Meta-information (Option -m) zu generieren. Wenn gegen
eine
Liste überprüft wird, müssen die originalen Kommandozeilenoptionen
nicht nocheinmal angegeben werden
- Der Zeitstempel von Dateien kann nun Teil der Ausgabe sein (Option
-t)
Dank an Vishwanathan Narayanan, Florida, USA für diesen
Feature-Request
Mit der Option -c können damit gleichzeitig Inhalt und
Zeitstempel von Dateien überprüft werden
- Das Ausgabeformat für Zeitstempel von Dateien ist konfigurierbar
- Schnelle Verarbeitung einer Hex-Sequenz direkt an der Kommandozeile
(Option -q)
Dank an Jack Memishian, USA für diesen Feature-Request
- Fehler beseitigt: Algorithmus cksum hängt, wenn die Datei größer
als 2 GB ist
- Fehler beseitigt: Verarbeitung eines Spezialordners wie Windows'
"System Volume Information" wirft eine NullPointerException
- Die Ausgabe erfolgt nun getrennt auf den Streams stdout und stderr
- Jacksum verwendet das GNU crypto package 1.1
(http://www.gnu.org/software/gnu-crypto/)
- Dokumentation aktualisiert
Jacksum 1.2.0, 16.02.2003
- vier neue Algorithmen aus dem GNU crypto Projekt werden unterstützt:
MD4, RIPEMD-128, RIPEMD-160 and Whirlpool
(http://www.gnu.org/software/classpathx/crypto)
- Fehler beseitigt: calling the getValue() method more than once for
the Cksum class returns a
different value; this can cause problems if Jacksum will be
used in other projects.
Dank gilt Cary Coulter für den Fehler-Report und Fix.
- Fehler beseitigt: CRC16 arbeitet nicht wie das Standard CRC16 Generator-Polynom
X^16 + X^15 + X^2 + 1.
Dank gilt David Elfi, Argentinien für den Fehler-Report
und Fix.
- Kompatibilität mit der freien Kaffe Java VM
(Java-Versionsüberprüfung nun nur für Sun's Java
VM)
- Parameter -v zum Bestimmen der Version von Jacksum
Jacksum 1.1.2, 18.01.2002
- Fehler beseitigt: Eingabedatei wird nicht geschlossen. Vielen Dank
an Bill Kelemen für den Fehler-Report und den Fix.
- Schnellerer Algorithmus zum Ausgeben von Prüfsummen im Hex-Format
- Dokumentation aktualisiert (Solaris 9+ hat md5)
Jacksum 1.1.1, 07.11.2002
- Fehler beseitigt: Algorithmus sysv gibt fehlerhafte Prüfsumme
zurück, wenn Dateien größer als
~9 MB werden. Dank gilt Sunny Liu, NYC für den Fehler-Report
und Fix.
Jacksum 1.1.0, 08.09.2002
- Optionen für die Ausgabe der Prüfsumme im hexadezimalen
Format (klein- und Grossbuchstaben)
Dank gilt Peter Frey für diesen Feature request
- Dateinamen/Verzeichnisse werden alphabetisch sortiert
Jacksum 1.0.0, 07.07.2002
- erste veröffentlichte Version
- Algorithmen Adler32, BSD sum, POSIX cksum, CRC-16, CRC-32, MD2, MD5,
SHA1 und Unix System V sum werden unterstützt
- Rekursive Verarbeitung von Verzeichnissen wird unterstützt
- Trennzeichen in der Ausgabe sind wählbar
Kontakt:
Bleiben Sie auf dem Laufenden - der Newsletter:
Wenn Sie informiert werden wollen, wenn eine neue Version von Jacksum
verfügbar ist, können Sie sich jederzeit auf den Mail-Alias setzen
oder entfernen lassen. Von diesem eMail-Alias werden Sie ausschlißlich
von mir eMails erhalten. Erwarten Sie maximal ca. 12 eMails pro Jahr.
Newsletter abonnieren, leere eMail an: announce-subscribe@jacksum.dev.java.net
Newsletter abmelden, leere eMail an:
announce-unsubscribe@jacksum.dev.java.net
View the announcements list archive: https://jacksum.dev.java.net/servlets/SummarizeList?listName=announce
Diskutieren Sie mit anderen Anwenderen - der User-Mail-Alias:
Wenn Sie etwas für die "Wunschliste" haben oder bei Ihnen Probleme
mit Jacksum auftreten, schreiben Sie auf diesen Mail-Alias. Um Rücksicht
auf die nicht-deutschsprachigen Mitglieder auf diesem Alias, bitte ich
darum, auf diesem Alias ausschließlich in Englisch zu schrebein.
Die Mailing-Liste ist ein guter Platz, um neue Ideen, Features und Fehler
zu diskutieren.
Dem User-Mail-Alias beitreten: users-subscribe@jacksum.dev.java.net
Vom User-Mail-Alias austreten:
users-unsubscribe@jacksum.dev.java.net
To write to the list, send a message to: users@jacksum.dev.java.net
Trackers (Bug database, Support and Feature requests):
http://sourceforge.net/projects/jacksum
Persönliche eMail:
Schreiben Sie mir einfach eine email.
Haben Sie ein wenig Geduld, wenn Sie nicht in der gleichen Woche eine Antwort
von mir erhalten, da ich mir i. d. R. für jede Anfrage etwas Zeit
nehme.
Links, wo Jacksum gelistet ist:
|
|