FAQs


Fragen zur Installation

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 große Menge an nützlichen Funktionen. Wenn Sie schlau sind, vergleichen Sie die Funkionen von ähnlichen Tools mit denen von Jacksum. Dann können Sie die Frage selbstsicher beantworten.

 
Was kostet diese Software?

Jacksum ist kostenlos.

 
Wo kann ich diese Software herunterladen ?

Hier
 

Welche Plattformen werden unterstützt ?

Microsoft Windows, GNU/Linux, und Unix (macOS, Solaris und andere). Siehe Systemanforderungen, Programmeigenschaften und Bildschirmfotos.

 
Wie installiere ich diese Software ?

Lesen Sie bitte die Installationsanweisungen.

Welche Java Version soll ich verwenden?

Jacksum 3 und neuer benötigt mind. Java 11 oder neuer. Ich empfehle die LTS Releases, weil diese stabil sind.


[Ubuntu] Ich möchte eine bestimmte Java Laufzeitumgebung verwenden. Wie kann ich das unter Ubuntu machen ?

Laden Sie sich ihre bevorzugte JRE herunter und installieren Sie es, z. B. nach

/opt/java/jre/64/latest

Anschliessend starten Sie update-alternatives. Siehe auch https://help.ubuntu.com/community/Java

$ sudo update-alternatives --install "/usr/bin/java" "java" "/opt/java/jre/64/latest/bin/java" 1
$ sudo update-alternatives --config java



Fragen zur Benutzung

Ich habe ein Problem mit Jacksum. Können Sie mir helfen?

Lesen Sie bitte die Seite Unterstützung.


Gibt es eine graphische Oberfläche für Jacksum?

Ja, eine vom Jacksum-Projekt initiierte graphische Oberfläche heißt HashGarten. Sie wird zusätzlich zum Kommandozeileninterface installiert von den Installern, die die Integration in Dateibrowser übernehmen.


Was kann das CLI was das GUI nicht kann?

Nur das CLI und das API bieten den kompletten Funktionsumfang an. Jacksum's primäre Benutzerschnittstelle ist die Kommandozeile. Sie unterstützt die Kompatibilität mit anderen populären auf der Kommandozeile basierten Programmen unter Unix und GNU/Linux. 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, zip, tar usw. voll ausspielen kann und eine direkte Integration in Dateibrowser ebenfalls ermöglicht.


Wird eine API unterstützt?

Jacksum unterstützt auch ein öffentliches API. Es kann von anderen Projekten und graphischen Benutzeroberflächen benutzt werden.

Was bedeuten die Werte in der Ausgabe von Jacksum?

z. B.
599770357    23560    irgendein.txt

Die erste Zahl (bzw. Zeichenkette) gibt den (kodierten) Hash-Wert der verwendeten Hash-Funktion an. Der angegebene Hash-Wert hängt tatsächlich ab vom verwendeten Algorithmus (-a) und vom der gewählten Kodierung des Hash-Wertes (-E, -x, bzw. -X). Die zweite Zahl gibt i. d. R. die Größe der Datei in Bytes an. Einige Ausnahmen wie bsd sum und UNIX system V sum geben die Größe der Datei in Blöcken an. Die Größe entfällt gänzlich bei den kryptografischen Hash-Algorithmen (z. B. SHA3). Die dritte Spalte (zweite Spalte bei den kryptografischen 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 wird.

599770357    23560    20031027140042     irgendein.txt


Es scheint, dass Jacksum falsch rechnet, wenn von der Standardeingabe gelesen wird?

Jacksum 1.7.0 und frühere Versionen operieren im Textmodus, falls die Standardeingabe verwendet wird. Das wurde irgendwann in der Version von Debian als Fehler angesehen und entsprechend geändert. Seit Jacksum 3.0.0 wird standardmäßig im Binärmodus operiert, falls die Standardeingabe verwendet wird. Sehen Sie dazu also den Feature Request #11: https://sourceforge.net/p/jacksum/feature-requests/11/ (Read binary rather than text from standard input).


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/kryptografischen Stärke sind klassische Prüfsummen und CRCs zur Integritätsprüfung großer Datenmengen oder Identifizierung von Dateien leider nur bedingt einsetzbar - Ausnahmen bestätigen wie immer die Regel. Siehe auch den CRC-Faker (der Link http://www.crc2003.250x.com ist nicht mehr gültig, verwenden Sie die Waybackmachine, um das Tool zu finden) 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). Eine Malware 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 außerdem die Dateigröße komplett.

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. 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 (September 2023) sind alle nicht-gebrochenen kryptografischen Ein-Wege-Hash-Algorithmen für die Überprüfung der Dateiintegrität zu empfehlen. Diese Algorithmen sind in der Manpage mit "type: cryptographic hash function" und "broken: no" gekennzeichnet. Beliebte Beispiele hierfür sind BLAKE3, SHA256, Ascon-Hash oder SHA3-512. Jacksum unterstützt alle hier angeführten Algorithmen. Seit Jacksum 3.0.0 ist SHA3-256 der Default-Algorithmus, wenn nichts anderes spezifiziert wurde.

Seit Jacksum 1.7.0 können mehrere Algorithmen kombiniert werden. Falls man diesen zusätzlichen Aufwand nicht scheut, empfehle ich mindestens zwei unterschiedliche Techniken für die Dateiintegritätsprüfung zu verwenden, einen nicht gebrochenen kryptografischen Hash-Algorithmus wie z. B. SHA256 und eine schnelle klassische Prüfsumme, wie z. B. CRC32c bilden eine gute Kombination für diesen Zweck. Auch wenn eine Kollision in der Zukunft für den kryptografischen hash-basierten Algorithmus festgestellt werden sollte, ist es sehr unwahrscheinlich, daß auch der CRC in diesem Fall 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 APIs. 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 sogar besser performen als die des JRE-Herstellers, 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.


Sind CRCs heute nicht überflüssig?

Nein, CRCs werden immer noch in Hardware, Firmware, Protokollen, einfachen Software-Installern (NSIS zum Beispiel) und modernen Dateisystemen (z. B. 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önnen 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").
 

Welche Algorithmen werden von Jacksum nicht unterstützt?

Es gibt einige Algorithmen, die Jacksum (noch) nicht unterstützt. Dazu gehören AICH, Cellhash, BTIH, BTRH, Boognish, EDON-R (hat es nicht in die zweite Runde beim NIST-Wettbewerb geschafft), FEAL (patentiert), FFT-hash, Snefru (broken), DSS1, MAA (Message Authenticator Algorithm, broken), 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), und die VMS/VAX checksum (sehr wenig Information verfügbar). Wenn Sie Sourcecode zu diesen Algorithmen (vorzugsweise in Java oder Python) 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.
 

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 fanden Sich bis Dezember 2006 hier: http://www.knowngoods.org
Für Solaris gab es den Service von Sun auf http://sunsolve.sun.com/pub-cgi/fileFingerprints.pl bis im Jahr 2010 Oracle Sun Microsystems übernommen hatte.
Für Windows habe ich damals wie heute 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 sha256 -o c:\temp\hashes.sha256 .

2. Die Datei check.jacksum repräsentiert eine Momentaufnahme aller Dateien des fehlerfreien Computers im fehlerfreien Verzeichnis.
   Transferieren Sie die Datei hashes.sha256 anschliessend zum fehlerhaften Computer.

3. Wechseln Sie in das fehlerhafte Verzeichnis auf dem fehlerhaften Computer und führen Sie folgende Kommandos aus:
  cd bad
  jacksum -a sha256 -c c:\temp\hashes.sha256 --list-filter bad --list > c:\temp\files.list

4. Die Datei files.list enthält nun eine Liste von veränderten und gelöschten Dateien.
    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 files.list | 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 bzw. patch.bz2 enthält nun alle Dateien des fehlerfreien Computers, die auf dem fehlerhaften Computer modifiziert oder gelöscht wurden. Transferieren Sie die Datei patch.zip bzw. patch.bz2 zum fehlerhaften Computer und extrahieren Sie die im zip bzw. bz2 enthaltenen Dateien ins fehlerhafte Verzeichnis. Die Dateien aus dem zip/bz2 ü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 Kunden 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 sha256 . > /tmp/hashes.sha256

2. Wechseln Sie in das Verzeichnis der alten Version und führen Sie folgende Kommandos aus:
  cd ~/oldversion
  jacksum -a sha256 -c /tmp/hashes.sha256 --list-filter bad --list > /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.bz2 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, bitte verwenden Sie die Option -c, um Dateien gegen eine gegebene Liste zu überprüfen. Sie werden dann genau wissen, welche Dateien identisch sind, welche modifiziert, gelöscht oder hinzugefügt wurden. 

 

Fehlermeldungen

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 Datei 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).


[Windows] Beim Versuch mit einem normalen Benutzer auf jacksum-sendto.bat (aus der Jacksum Windows Explorer Integration) zuzugreifen, erhalte ich die Fehlermeldung "Auf das angegebene Gerät, bzw. den Pfad oder die Datei kann nicht zugegriffen werden. Sie verfügen eventuell nicht über ausreichendeBerechtigungen, 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.


[GNU/Linux, Unix] 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".
 

Fragen von Entwicklern

Achtung: folgende Abschnitte sind nur für Jacksum 1.x und nicht für Jacksum 3.x

Gibt es 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.


Was ist für die nächsten Versionen geplant?

Ich habe immer noch eine Menge an Ideen für Jacksum und einige gute 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. Siehe dazu bitte auch https://github.com/jonelo/jacksum/issues 


Lizenzrechtliche Fragen

Warum heisst Jacksum "Jacksum" ?

Jacksum ist ein Kunstwort aus JAva und ChecKSUM, weil Jacksum vollständig in der Programmiersprache Java geschrieben ist. Damit ist Jacksum plattformübergreifend verfügbar und läuft quasi auf jeder Plattform, die eine kompatible Java Laufzeitumgebung bereitstellt, einschliesslich Microsoft Windows, GNU/Linux, macOS und anderen Unix-Derivaten (z. B. BSD) ohne Neukompilierung auf der jeweiligen Plattform. Außerdem klingt "Jacksum" im Englischen wie "checksum".

Was ist HashGarten?

HashGarten ist der Name einer Software (ein Unterprojekt von Jacksum), die den Zugriff mit einer grafischen Benutzeroberfläche auf Jacksum-Funktionen herstellt.

Welche Lizenz verwendet Jacksum?

Das komplette Programm veröffentliche ich unter den Bedingungen der GPL v3 und neuer, so daß jeder auf dieser Welt dieses Programm kostenlos, frei und uneingeschränkt nutzen kann.

Warum die GPL ?

Die GPL stellt sicher, daß das Programm auch frei bleibt und gewisse Freiheiten garantiert werden. Die GPL besagt, daß wenn Sie eine eigene Erweiterung bzw. Änderung gemacht haben, und diese veröffentlichen, diese ebenfalls unter die GPL stellen müssen. So ist sichergestellt, dass der Nährboden des Wissens stets fruchtbar, d. h. quelloffen bleibt und auf ihm neue Früchte gedeihen können.


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 öffentlich seit Juli 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.


Darf das Programm auch auf Datenträgern (z. B. CD-ROM oder DVD) verbreitet werden?

Ja.