{"id":17688328,"url":"https://github.com/jonelo/jacksum","last_synced_at":"2025-08-22T03:32:42.711Z","repository":{"id":37609707,"uuid":"402577201","full_name":"jonelo/jacksum","owner":"jonelo","description":"A hash utility, est. 2002, FLOSS. 489 hash functions, HMAC support, cross platform, feature-rich, multi threaded. CLI and API. Recursive hashing, predefined and customizable formats, verify data integrity and find ok/failed/missing/new files, find files by their hashes, find the hash function to a hash. GUI provided by HashGarten.","archived":false,"fork":false,"pushed_at":"2024-12-01T18:15:25.000Z","size":3067,"stargazers_count":44,"open_issues_count":4,"forks_count":5,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-12-10T12:38:06.361Z","etag":null,"topics":["checksums","crc","crc-finder","hash","hash-finder","hash-functions","hashing-algorithms","hmac","integrity-checker","integrity-tool","jacksum","java","linux","macos","message-digest","multi-threading","sha256","sha3","skein","windows"],"latest_commit_sha":null,"homepage":"https://jacksum.net","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jonelo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-09-02T22:19:35.000Z","updated_at":"2024-11-25T00:38:10.000Z","dependencies_parsed_at":"2023-02-08T07:45:48.561Z","dependency_job_id":"2c5a4806-7b9c-407c-98ee-0dbccdcae3a7","html_url":"https://github.com/jonelo/jacksum","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonelo%2Fjacksum","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonelo%2Fjacksum/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonelo%2Fjacksum/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonelo%2Fjacksum/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonelo","download_url":"https://codeload.github.com/jonelo/jacksum/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230554330,"owners_count":18244234,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["checksums","crc","crc-finder","hash","hash-finder","hash-functions","hashing-algorithms","hmac","integrity-checker","integrity-tool","jacksum","java","linux","macos","message-digest","multi-threading","sha256","sha3","skein","windows"],"created_at":"2024-10-24T11:44:10.798Z","updated_at":"2025-08-22T03:32:42.703Z","avatar_url":"https://github.com/jonelo.png","language":"Java","readme":"![GitHub issues](https://img.shields.io/github/issues-raw/jonelo/jacksum?color=blue)\n![GitHub closed issues](https://img.shields.io/github/issues-closed-raw/jonelo/jacksum?color=blue)\n![GitHub release (latest by date)](https://img.shields.io/github/v/release/jonelo/jacksum?color=green)\n![GitHub downloads latest](https://img.shields.io/github/downloads/jonelo/jacksum/v3.7.0/total?color=green)\n![GitHub](https://img.shields.io/github/license/jonelo/jacksum?color=green)\n![GitHub top language](https://img.shields.io/github/languages/top/jonelo/jacksum?color=green)\n![GitHub downloads](https://img.shields.io/github/downloads/jonelo/jacksum/total?color=green)\n\n\n# Jacksum\n\n\u003cimg width=\"128\" height=\"128\" align=\"right\" src=\"https://raw.githubusercontent.com/jonelo/jacksum/main/docs/images/jacksum_logo_128x128.png\" alt=\"Jacksum logo\" style=\"vertical-align:top;margin:10px 10px\" /\u003e\n\n**Jacksum** (**JAva ChecKSUM**) is a free, open source, cross-platform,\nfeature-rich, multi-threaded, command line utility that makes hash\nfunctions available to you to solve particular tasks the smart way.\n\nJacksum covers many types of use cases in which hash values make sense:\n\n- Calculating of hash values/fingerprints of almost any input\n  (command line arg, console, standard input, plain or encoded strings,\n  files, partitions, disks, NTFS ADS, pipes, sockets, doors, ...)\n- Finding OK/failed/missing/new files (verify file/data integrity)\n- Finding files by their fingerprints for positive matching\n- Finding files that do not match certain fingerprints for negative matching\n- Finding all duplicates of a file by its hash value\n- Finding the algorithm(s) that generated a certain hash value\n- Investigate polynomials of CRCs\n- Investigate parameters of HMACs\n\nIn order to achieve the goals above Jacksum supports you with\n\n- cross-platform executability\n- Recursive traversal with depth control, policies to follow symbolic\n  links on files and/or folders, and file system cycle detection\n- Multi-threading across platforms for parallel hash calculations and\n  data reads in order to take advantage of multi-core processors and\n  fast SSD storage\n- 489 standard hash functions\n- HMAC support for 414 hash functions\n- 60+ command line options to control Jacksum's behavior\n- Customizable CRCs from 1 to 64 bit width\n- 15 different encodings for representing hash values\n- 10 predefined standard styles for reading and writing files that\n  contain hash values\n- Fully customizable output format\n- 170+ different character sets to be able to read and write hash files\n  correctly\n- 9200+ lines of  with descriptions, examples, and compatibility\n  lists for all supported algorithms\n\nJacksum is also a library. You can use it for your projects. It is written entirely in **Java** ☕.\n\n\n## Audience\n\nJacksum is for users with security in mind, advanced users, sysadmins, students of informatics, computer scientists, cybersecurity engineers, forensics engineers, penetration testers, white hat hackers, reverse engineers, CRC researchers, etc. Jacksum is for professionals, but since HashGarten bundles the Jacksum library, Jacksum is available even to users who don't even know how to open a terminal.\n\n\n## System Requirements\n\n- GNU/Linux, Microsoft Windows, or macOS\n- JDK 11 or later\n- 2 MiB disk space\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails ...\u003c/summary\u003e\n\n- To download the (Open)JDK 11 or later, you can go to any vendor that provides OpenJDK compatible builds, LTS (long term support) releases are recommended, examples are\n  - https://adoptium.net\n  - https://openjdk.java.net\n  - https://www.azul.com/downloads/?package=jdk\n  - https://bell-sw.com/pages/downloads/\n  - https://www.microsoft.com/openjdk/\n  - https://aws.amazon.com/de/corretto/\n  - https://sapmachine.io\n  - https://github.com/alibaba/dragonwell8\n- Supported architectures are dependent on the OS and the JDK vendor:\n  - x86 64 bit (x64)\n  - x86 32 bit (x86)\n  - ARM 64 bit (AArch64, resp. Apple silicon)\n  - ARM 32 bit (AArch32)\n  - PPC 64 bit (ppc64)\n- a GitHub user have had success to run Jacksum without modification even on a smartphone running Android on ARM 64 bit, see also https://github.com/jonelo/jacksum/issues/7\n- GNU/Linux is the correct term to refer to \"Linux\", see also https://www.gnu.org/gnu/linux-and-gnu.en.html\n- actual RAM requirement is dependent on the OS, the architecture, the JDK, the JRE's (default) garbage collector settings and usage. Tests have shown that Jacksum feels pretty comfortable with 512 MiB Java heap on a x64 Windows 10 system for example while verifying millions of files of all sizes (0 bytes to several GiB).\n\n\u003c/details\u003e\n\n## Features\n\nGo to [Features of Jacksum](https://github.com/jonelo/jacksum/wiki/Features).\n\n## Algorithm Support\n\nJacksum supports **489 hash functions**, both cryptographic and non-cryptographic hash function sets, including CRCs and classic checksums.\n\nAdler-32, ascon-hash, ascon-hasha, ascon-xof, ascon-xofa, AST strsum PRNG hash, BLAKE-[224,256,348,512], BLAKE2b-[8..512], BLAKE2s-[8..256], BLAKE2bp, BLAKE2sp, BLAKE3, cksum (Minix), cksum (Unix), CRC-8 (FLAC), CRC-16 (LHA/ARC), CRC-16 (Minix), FCS-16, CRC-24 (OpenPGP), CRC-32 (FCS-32), CRC-32 (MPEG-2), CRC-32 (bzip2), CRC-32 (FDDI), CRC-32 (UBICRC32), CRC-32 (PHP's crc32), CRC-64 (ISO 3309), CRC-64 (ECMA-182), CRC-64 (prog lang GO, const ISO), CRC-64 (.xz and prog lang GO, const ECMA), CRC-82/DARC, DHA-256, ECHO-[224,256,348,512], ed2k, ELF (Unix), esch256, esch384, Fletcher's Checksum, FNV-0_[32,64,128,256,512,1024], FNV-1_[32,64,128,256,512,1024], FNV-1a_[32,64,128,256,512,1024], FORK-256, Fugue-[224,256,348,512], GOST Crypto-Pro (GOST R 34.11-94), GOST R 34.11-94, Groestl-[224,256,384,512], HAS-160 (KISA), HAVAL-128-[3,4,5], HAVAL-[160,192,224,256]-[3,4,5], JH[224,256,284,512], joaat, KangarooTwelve, Keccak[224,256,384,512], Kupyna[256,384,512] (DSTU 7564:2014), LSH-256-[224,256], LSH-512-[224,256,384,512] (KS X 3262), Luffa-[224,256,348,512], MD2, MD4, MD5, MDC2, MarsupilamiFourteen, PANAMA, PRNG hash, RIPEMD-128, RIPEMD[160,256,320], RadioGatun[32,64], SHA-0, SHA-1, SHA-[224,256,384,512], SHA-512/[224,256]  (NIST FIPS 180-4), SHA3-[224,256,384,512], SHAKE[128,256] (NIST FIPS 202), SM3, Skein-1024-[8..1024], Skein-256-[8..256], Skein-512-[8..512], Streebog-[256,512] (GOST R 34.11-2012), sum (BSD Unix), sum (Minix), sum (System V Unix), sum [8,16,24,32,40,48,56,64], Tiger, Tiger/128, Tiger/160, Tiger2, photon-beetle, PHP Tiger variants (tiger192,4, tiger160,4, and tiger128,4), VSH-1024, Whirpool-0, Whirlpool-T, Whirlpool, Xoodyak, xor8, and XXH32.\n\nSee also [Algorithms of Jacksum](https://github.com/jonelo/jacksum/wiki/Algorithms)\n\nJacksum supports **HMAC**, a mechanism for message authentication using any iterated cryptographic hash function in combination with a secret shared key.\n\nJacksum supports the **\"Rocksoft (tm) Model CRC Algorithm\"** to describe CRCs, so additional 1.0399*10^267 customized CRCs can be used.\n\n## User Interfaces\n\nJacksum provides a Command Line Interface (CLI), an Application Programming Interface (API). A Graphical User Interface (GUI) is provided by HashGarten which is a subproject of the Jacksum project. Also, there are File Browser Integrations (FBI) available.\n\n### Architecture\n\n![Architecture](https://github.com/jonelo/jacksum/assets/10409423/d0d0ce30-3698-4d7d-8d0e-e2c3d7f29bc3)\n\n### Command Line Interface (CLI)\n\nIf you are a skilled command line user you will benefit from the power on the command line and you can use Jacksum in scripts, cronjobs, etc. in order to automate file integration/verification tasks for example.\n\n\u003cimg width=\"100%\" src=\"https://raw.githubusercontent.com/jonelo/jacksum/main/docs/images/screenshot-jacksum_on_ubuntu-cli_examples.png\" alt=\"Jacksum on Ubuntu, CLI examples\" style=\"vertical-align:top;margin:10px 10px\" /\u003e\n\nSee also the [manual of Jacksum](https://github.com/jonelo/jacksum/wiki/Manpage).\n\n### Graphical User Interface (GUI)\n\nIf you prefer a GUI and you just would like to calc and verify hashes with a graphical user interface, I recommend to download and use the Jacksum File Browser Integration (FBI) installer which comes with [HashGarten](https://github.com/jonelo/HashGarten) that is a GUI for Jacksum. HashGarten also runs standalone and it supports Drag and Drop.\n\n### File Browser Integration (FBI)\n\nThe File Browser Integration (FBI) installer can integrate both Jacksum and HashGarten into your preferred file browser, such as Finder on macOS, Windows File Explorer on Microsoft Windows, and Caja, Dolphin, elementary Files, GNOME Nautilus, Konqueror, Krusader, muCommander, Nemo, ROX-Filter, SpaceFM, Thunar, Xfe, or zzzFM on GNU/Linux. See also [Integrations](https://github.com/jonelo/jacksum/tree/main?tab=readme-ov-file#integrations).\n\n## Examples\n\n### Calculate and represent hash values\n\nA hash function H maps a bit string m ∈ {0, 1}\u003csup\u003e*\u003c/sup\u003e of arbitrary length to a bit string h ∈ {0, 1}\u003csup\u003en\u003c/sup\u003e of fixed length n ∈ ℕ:\n\n    h = H(m)\n\nm is often called the message or data, and dependent on the design, and security strength of the hash function H, h is called the checksum, CRC, hash, hash value, message digest, data's fingerprint, or data's thumbprint.\n\nCalculating hash values is usually the first step you take to be able to check data integrity at all later on.\nJacksum supports not only hundreds of different algorithms for calculating hash values, it also supports many predefined styles and comprehensive formatting features to get the format you need.\n\nExample 1: Default style (is dependent on the algorithm)\n\n    $ jacksum -a sha3-256 ubuntu-22.04-desktop-amd64.iso\n    c5e46426a3ca0ae848d297747ed3846452cc7b33d5b418af961dbd55de8dff43 ubuntu-22.04-desktop-amd64.iso\n\nExample 2: GNU/Linux style\n\n    $ jacksum -a sha3-256 --style linux ubuntu-22.04-desktop-amd64.iso\n    c5e46426a3ca0ae848d297747ed3846452cc7b33d5b418af961dbd55de8dff43 *ubuntu-22.04-desktop-amd64.iso\n\nExample 3: BSD style\n\n    $ jacksum -a sha3-256 --style bsd ubuntu-22.04-desktop-amd64.iso\n    SHA3-256 (ubuntu-22.04-desktop-amd64.iso) = c5e46426a3ca0ae848d297747ed3846452cc7b33d5b418af961dbd55de8dff43\n\nExample 4: OpenSSL style\n\n    $ jacksum -a sha3-256 --style openssl ubuntu-22.04-desktop-amd64.iso\n    SHA3-256(ubuntu-22.04-desktop-amd64.iso)= c5e46426a3ca0ae848d297747ed3846452cc7b33d5b418af961dbd55de8dff43\n\nExample 5: Solaris digest style\n\n    $ jacksum -a sha3-256 --style solaris-digest ubuntu-22.04-desktop-amd64.iso\n    (ubuntu-22.04-desktop-amd64.iso) = c5e46426a3ca0ae848d297747ed3846452cc7b33d5b418af961dbd55de8dff43\n\nExample 6: Customized output, including customized algorithm selection (crc32c, sha-256, and sha3-256), customized hash value encoding (base64, nopadding), and algorithm names in uppercase for all files in the current directory (and below), each hash on a separate line:\n\n    $ jacksum -a crc32c+sha-256+sha3-256 -F \"#ALGONAME{i,uppercase} (#FILENAME) = #HASH{i,base64-nopadding}\" .\n    CRC32C (./kali-linux-2023.1-installer-amd64.iso) = dUWxuQ\n    SHA-256 (./kali-linux-2023.1-installer-amd64.iso) = RuBXOaILKdtgyh//LpBoXqYyBxwxSpwkFtfEas7ye/A\n    SHA3-256 (./kali-linux-2023.1-installer-amd64.iso) = ffPkMr8uVPCO5GIHm8YpAbmaOVeBMaxvdLPI/N4NkbE\n\n    CRC32C (./ubuntu-22.04.2-desktop-amd64.iso) = hIXQsw\n    SHA-256 (./ubuntu-22.04.2-desktop-amd64.iso) = uY2slAqCsRDmJlynjRMg8fcQOGHpIqoaVOQgJobpu9M\n    SHA3-256 (./ubuntu-22.04.2-desktop-amd64.iso) = bvOhwtwckCQuzgm4LLEJoqPbjcbWSRSuNUOcyY4/1L0\n\nExample 7: Customized output like above, but encoded hash values are separated by comma\n\n    $ jacksum -a crc32c+sha-256+sha3-256 -F \"#ALGONAMES{uppercase} (#FILENAME) = #HASHES{base64-nopadding}\" .\n    CRC32C,SHA-256,SHA3-256 (./kali-linux-2023.1-installer-amd64.iso) = dUWxuQ,RuBXOaILKdtgyh//LpBoXqYyBxwxSpwkFtfEas7ye/A,ffPkMr8uVPCO5GIHm8YpAbmaOVeBMaxvdLPI/N4NkbE\n    CRC32C,SHA-256,SHA3-256 (./ubuntu-22.04.2-desktop-amd64.iso) = hIXQsw,uY2slAqCsRDmJlynjRMg8fcQOGHpIqoaVOQgJobpu9M,bvOhwtwckCQuzgm4LLEJoqPbjcbWSRSuNUOcyY4/1L0\n\nExample 8: Customized output like above, but one hash only (encoded by base64-nopadding)\n\n    $ jacksum -a crc32c+sha-256+sha3-256 -F \"#ALGONAMES{uppercase} (#FILENAME) = #HASH{base64-nopadding}\" .\n    CRC32C,SHA-256,SHA3-256 (./kali-linux-2023.1-installer-amd64.iso) = dUWxuUbgVzmiCynbYMof/y6QaF6mMgccMUqcJBbXxGrO8nvwffPkMr8uVPCO5GIHm8YpAbmaOVeBMaxvdLPI/N4NkbE\n    CRC32C,SHA-256,SHA3-256 (./ubuntu-22.04.2-desktop-amd64.iso) = hIXQs7mNrJQKgrEQ5iZcp40TIPH3EDhh6SKqGlTkICaG6bvTbvOhwtwckCQuzgm4LLEJoqPbjcbWSRSuNUOcyY4/1L0\n\n\nExample 9: Customized output in hashdeep format (filesize,hash1,...,hashN,filename) with modern algorithms\n\n    $ jacksum -a crc32c+sha-256+sha3-256 -F \"#FILESIZE,#HASHES{hex},#FILENAME\" .\n    3875536896,7545b1b9,46e05739a20b29db60ca1fff2e90685ea632071c314a9c2416d7c46acef27bf0,7df3e432bf2e54f08ee462079bc62901b99a39578131ac6f74b3c8fcde0d91b1,./kali-linux-2023.1-installer-amd64.iso\n    4927586304,8485d0b3,b98dac940a82b110e6265ca78d1320f1f7103861e922aa1a54e4202686e9bbd3,6ef3a1c2dc1c90242ece09b82cb109a2a3db8dc6d64914ae35439cc98e3fd4bd,./ubuntu-22.04.2-desktop-amd64.iso\n\n\n### Customize CRCs\n\n#### 6 parameters\n\nJacksum supports the quasi standard called \"Rocksoft (tm) Model CRC Algorithm\" to customize CRCs by setting 6 parameters.\n\nExample 1: get the Castagnoli CRC-32 in lower hex\n\n    $ jacksum -a crc:32,1EDC6F41,FFFFFFFF,true,true,FFFFFFFF -x -q txt:123456789\n    e3069283 9\n\nExample 2: as above by using an alias\n\n    $ jacksum -a crc32c -x -q txt:123456789\n    e3069283 9\n\n#### 7 parameters\n\nAn extended model with 7 CRC parameters is also supported in order to define CRCs that incorporate the length of the message. If the 7th parameter is set to true, the most significant octet of the length will be processed first to the update method of the CRC. If it is set to false, the least significant octet of the length will be processed first to the update method of the CRC.\n\nExample 1: get the POSIX 1003.2 CRC algorithm\n\n    $ jacksum -a crc:32,04C11DB7,0,false,false,FFFFFFFF,false -x -q txt:123456789\n    377a6011 9\n\nExample 2: as above by using an alias\n\n    $ jacksum -a cksum -x -q txt:123456789\n    377a6011 9\n\n\n#### 8 parameters\n\nAn extended model with 8 CRC parameters is also supported in order to define CRCs that incorporate the length of the message, and to XOR the length of the value before it gets included to the CRC.\n\nExample 1: get the output of the sum command from [Plan 9](https://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs):\n\n    $ jacksum -a crc:32,04C11DB7,0,true,true,0,true,CC55CC55 -x -q txt:123456789\n    afcbb09a 9\n    \nExample 2: as above by using an alias\n\n    $ jacksum -a sum_plan9 -x -q txt:123456789\n    afcbb09a 9\n\n\n### Investigate CRC parameters\n\nCRC parameters can be investigated by the CRC algorithm, and setting the `--info` option. It returns the polynomial value as a polynomial in math expression, normal, reversed, and Koopman representation, and the reciprocal poly. Example for the Castagnoli CRC-32:\n\n    $ jacksum -a crc32c --info\n\nor by specifying all of the CRC's parameters explicitly:\n\n    $ jacksum -a crc:32,1EDC6F41,FFFFFFFF,true,true,FFFFFFFF --info\n\n\u003cdetails\u003e\n\u003csummary\u003eResult ...\u003c/summary\u003e\n\n```\n  algorithm:\n    name:                                 crc32c\n\n  hash length:\n    bits:                                 32\n    bytes:                                4\n    nibbles:                              8\n\n  CRC parameters:\n    width (in bits):                      32\n    polynomial [hex]:                     1edc6f41\n    init [hex]:                           ffffffff\n    refIn:                                true\n    refOut:                               true\n    xorOut [hex]:                         ffffffff\n\n  Polynomial representations:\n    mathematical:                         x^32 + x^28 + x^27 + x^26 + x^25 + x^23 + x^22 + x^20 + x^19 + x^18 + x^14 + x^13 + x^11 + x^10 + x^9 + x^8 + x^6 + 1\n    normal/MSB first [binary]:            00011110110111000110111101000001\n    normal/MSB first [hex]:               1edc6f41\n    reversed/LSB first [binary]:          10000010111101100011101101111000\n    reversed/LSB first [hex]:             82f63b78\n    Koopman [binary]:                     10001111011011100011011110100000\n    Koopman [hex]:                        8f6e37a0\n\n  Reciprocal poly (similar error detection strength):\n    mathematical:                         x^32 + x^26 + x^24 + x^23 + x^22 + x^21 + x^19 + x^18 + x^14 + x^13 + x^12 + x^10 + x^9 + x^7 + x^6 + x^5 + x^4 + 1\n    normal [binary]:                      00000101111011000111011011110001\n    normal [hex]:                         5ec76f1\n\n  speed:\n    relative rank:                        11/477\n\n  alternative/secondary implementation:\n    has been requested:                   false\n    is available and would be used:       false\n```\n\u003c/details\u003e\n\n\n### Quick file integrity verification for one file only\n\nFrom the ubuntu website we know the SHA256 hash value for the file called ubuntu-22.04-desktop-amd64.iso. We expect that the file is the one that we have downloaded.\n\n#### by option -c/--check-file\n\nWe can pass the known hash value of the file by using a pipe, and telling Jacksum to check from standard input (option -c or --check-file):\n\n    $ echo c396e956a9f52c418397867d1ea5c0cf1a99a49dcf648b086d2fb762330cc88d *ubuntu-22.04.1-desktop-amd64.iso | jacksum -a sha256 -c -\n       OK  ubuntu-22.04.1-desktop-amd64.iso\n\n#### by option --check-line\n\nBe aware that the echo command does not behave the same on all platforms. To go the platform independent way you can also pass the known hash value of the file by using the option --check-line. You do not need to specify option `--style linux`, because the default style understands the Linux hash value format.\n\n    $ jacksum -a sha256 --check-line \"c396e956a9f52c418397867d1ea5c0cf1a99a49dcf648b086d2fb762330cc88d *ubuntu-22.04.1-desktop-amd64.iso\"\n        OK  ubuntu-22.04.1-desktop-amd64.iso\n\nHere is an example of the hash/file record in the BSD style:\n\n    jacksum -a sha256 --style bsd --check-line \"SHA-256 (ubuntu-22.04.1-desktop-amd64.iso) = c396e956a9f52c418397867d1ea5c0cf1a99a49dcf648b086d2fb762330cc88d\" --verbose noinfo,nosummary\n        OK  ubuntu-22.04.1-desktop-amd64.iso\n\n#### by option -e\n\nYou can also pass the known hash value of the file to option -e (expectation).\n\n    $ jacksum -a sha256 -e c396e956a9f52c418397867d1ea5c0cf1a99a49dcf648b086d2fb762330cc88d ubuntu-22.04.1-desktop-amd64.iso\n        MATCH  ubuntu-22.04.1-desktop-amd64.iso (c396e956a9f52c418397867d1ea5c0cf1a99a49dcf648b086d2fb762330cc88d)\n    Jacksum: Expectation met.\n\nIf you pass multiple files/directories as program arguments, Jacksum will find all files that match the expected hash value.\n\n\n### Verify data integrity\n\nData integrity ensures that data items have not been changed, destroyed, or lost in an unauthorized or accidental manner since they were created,\ntransmitted, or stored.\n\nAs being a file/data integrity software Jacksum can generate, store, and compare hash values to detect changes made to files. Actually it can detect matching, non-matching, missing, and new files.\n\nExample:\n\n    $ jacksum -a sha3-256 -c file.hashes .\n\n\u003cdetails\u003e\n\u003csummary\u003eResult ...\u003c/summary\u003e\n\n```\nJacksum: Error: ./drei: does not exist.\n  MISSING  ./drei\n      NEW  ./file.hashes\n      NEW  ./fünf\n   FAILED  ./eins\n       OK  ./zwei\n       OK  ./vier\n\nJacksum: total lines in check file: 4\nJacksum: improperly formatted lines in check file: 0\nJacksum: properly formatted lines in check file: 4\nJacksum: ignored lines (empty lines and comments): 0\nJacksum: correctness of check file: 100.00 %\n\nJacksum: matches (OK): 2\nJacksum: mismatches (FAILED): 1\nJacksum: new files (NEW): 2\nJacksum: missing files (MISSING): 1\n\nJacksum: total files read: 3\nJacksum: total bytes read: 12\nJacksum: total bytes read (human readable): 12 bytes\nJacksum: total file read errors: 1\n\nJacksum: elapsed time: 151 ms\n```\n\u003c/details\u003e\n\n\n### Find files by their hashes\n\n#### by a single hash value\n\nIf you know the hash value of a file, you can search for the file even if you don't know the file name. Let's search for the Satoshi Nakamoto's Bitcoin whitepaper on macOS by specifying the expected (-e) 9sha256 hash (-a sha256) in hex encoding (-x), and traversing the folder tree recursively (default) starting from the current working directory (.):\n\n    $ jacksum -a sha256 -x -e b1674191a88ec5cdd733e4240a81803105dc412d6c6708d53ab94fc248f4f553 --threads-reading max .\n\n\u003cdetails\u003e\n\u003csummary\u003eResult ...\u003c/summary\u003e\n\n```\n    MATCH  /System/Library/Image Capture/Devices/VirtualScanner.app/Contents/Resources/simpledoc.pdf (b1674191a88ec5cdd733e4240a81803105dc412d6c6708d53ab94fc248f4f553)\n\nJacksum: Expectation met.\nJacksum: 1 of the successfully read files matches the expected hash value.\n```\n\u003c/details\u003e\n\n#### by a precalculated hash list\n\nJacksum also helps you to find all files that match any of the hashes in a given set of known hash values. Both positive and negative matching is supported. Let's search for all vulnerable log4j libs:\n\n    $ jacksum --wanted-list log4j.hashes --style linux --threads-reading max --verbose summary /\n\n\u003cdetails\u003e\n\u003csummary\u003eResult ...\u003c/summary\u003e\n\n```\n    MATCH  /opt/serverapp/log4j.jar (log4j-core-2.12.0.jar)\n\nJacksum: total lines in check file: 42\nJacksum: improperly formatted lines in check file: 0\nJacksum: properly formatted lines in check file: 33\nJacksum: ignored lines (empty lines and comments): 9\nJacksum: correctness of check file: 100.00 %\n\nJacksum: files read successfully: 252299\nJacksum: files read with errors: 0\nJacksum: total bytes read: 117670015750\nJacksum: total bytes read (human readable): 109 GiB, 602 MiB, 892 KiB, 774 bytes\nJacksum: files matching wanted hashes: 1\nJacksum: files not matching wanted hashes: 252266\n\nJacksum: elapsed time: 8 min, 38 s, 215 ms\n```\n\u003c/details\u003e\n\nSee also [CVE-2021-44832: Find vulnerable .jar files using Jacksum](https://loefflmann.blogspot.com/2022/06/CVE-2021-44832%20Find%20vulnerable%20.jar%20files%20using%20Jacksum%203.4.0%20or%20later.html)\n\n\n\n### Find all duplicates of a file using a hash value\n\nJacksum also helps you find all duplicates of a file.\n\n    $ jacksum -e c5e46426a3ca0ae848d297747ed3846452cc7b33d5b418af961dbd55de8dff43 .\n    c5e46426a3ca0ae848d297747ed3846452cc7b33d5b418af961dbd55de8dff43 .\\ubuntu-22.04-desktop-amd64.iso\n    c5e46426a3ca0ae848d297747ed3846452cc7b33d5b418af961dbd55de8dff43 .\\ubuntu-22.04-desktop-amd64 (1).iso\n\n### Find the algorithm that had generated a hash value\n\nSince Jacksum supports so many algorithms, Jacksum also helps you to find the algorithm to a checksum/CRC/hash by calling a fast and smart brute force algorithm if the hash is unknown, but the data is known.\n\n    $ jacksum -a unknown:16 -q hex:050000 -E hex -e d893\n\n\u003cdetails\u003e\n\u003csummary\u003eResult ...\u003c/summary\u003e\n\n```\nTrying 13 algorithms with a width of 16 bits that are supported by Jacksum 3.0.0 ...\n\nTrying 30 CRC algorithms with a width of 16 bits by testing against well known CRCs ...\ncrc:16,1021,FFFF,false,false,FFFF\n    --\u003e CRC-16/GENIBUS\n\nTrying all CRC algorithms with a width of 16 bits by brute force (be patient!) ...\ncrc:16,1021,FFFF,false,false,FFFF\ncrc:16,37D2,FFFF,true,false,FFFF\ncrc:16,3E2D,0000,true,false,FFFF\ncrc:16,4175,FFFF,true,false,FFFF\ncrc:16,4A5B,FFFF,true,true,0000\ncrc:16,5A41,FFFF,true,false,FFFF\ncrc:16,5C63,FFFF,true,true,0000\ncrc:16,6287,FFFF,true,true,0000\ncrc:16,649C,0000,false,true,FFFF\ncrc:16,6D55,FFFF,true,true,0000\ncrc:16,75AC,FFFF,true,false,FFFF\ncrc:16,7D64,FFFF,false,false,FFFF\ncrc:16,81A6,FFFF,true,false,FFFF\ncrc:16,B9F9,FFFF,true,true,0000\ncrc:16,C3D6,FFFF,false,false,FFFF\ncrc:16,D436,0000,true,false,FFFF\ncrc:16,D6D2,0000,false,true,FFFF\ncrc:16,DA9C,FFFF,true,false,FFFF\ncrc:16,E03E,FFFF,false,false,FFFF\ncrc:16,F701,FFFF,true,false,FFFF\n\n\nJacksum: algorithms tested: 1048620\nJacksum: algorithms found: 21\n\nJacksum: elapsed time: 6 s, 460 ms\n```\n\nMeans Jacksum has tested more than one million algorithms in about 7 seconds and it found 21 matching algorithms. Each of those returns the same CRC value. Test with more input/output sequences and/or longer input sequences in order to find the right algorithm. The most likely algorithm is printed with a name if it is a well known CRC. In this example it has been identified as the CRC-16/GENIBUS.\n\nOnce you have identified the correct algorithm, you can calculate your own input data using the CRC definitions that have been found.\n```\njacksum -a crc:16,1021,FFFF,false,false,FFFF -E hex -q txt:\"Hello World\"\n```\n\u003c/details\u003e\n\n### Jacksum hacks (unexpected free gifts)\n\nSee https://github.com/jonelo/jacksum/wiki/Jacksum-Hacks\n\n\n### More examples\n\n    $ jacksum -h examples\n\nSee also the [EXAMPLES section of the manpage](https://github.com/jonelo/jacksum/wiki/Manpage#examples), and the [Cheat Sheet in the Wiki](https://github.com/jonelo/jacksum/wiki/Cheat-Sheet).\n\n\n## More Features\n\nJacksum traverses file trees **recursively** with a **depth limit**.\n\nJacksum supports **multi-threading** on multi-processor and multi-core\ncomputer systems. Jacksum can compute multiple **hashes simultaneously**,\nand it can read/process multiple **files simultaneously** on SSDs.\n\nThe user can **control the number of threads** for multi-threading tasks.\n\n**Input** data can come from almost **any source**: files, disks, partitions,\nstandard input stream (stdin), and/or provided directly by command\nline arguments. Also platform specific input such as **NTFS Alternate\nData Streams (ADS)** on Microsoft Windows, and block devices, character\ndevices, named pipes (FIFOs), and sockets (Unix-like OS only), and\ndoors (Solaris only) are supported and can be hashed.\n\n**Output** can occur in **predefined standard formats** (BSD-, GNU/Linux-, or\nSolaris style, SFV or FCIV) or in a **user-defined format** which is highly\ncustomizable, including many encodings for representing hash values:\nHex (lower- and uppercase), Base16, Base32 (with and without padding),\nBase32hex (with and without padding), Base64 (with and without padding),\nBase64url (with and without padding), BubbleBabble, and z-base-32.\n\n**GNU filename escaping** is supported.\n\n**Paths** can be omitted, printed absolutely or relative to a different path.\n\nJacksum supports **many charsets** for reading and writing hash files\nproperly, and it comes with full support for all common **Unicode** aware\ncharsets such as UTF-8, UTF-16, UTF-16BE, UTF-16LE, UTF-32, UTF-32LE,\nUTF-32BE, and GB18030. A **Byte-Order Mark (BOM)** is supported for both\ninput and output, even if a BOM is optional for the selected charset.\n\nFor more details, see also the [comprehensive list of features](https://github.com/jonelo/jacksum/wiki/Features).\n\n\n## Where to download?\n\nThe latest released .jar file can be found at https://github.com/jonelo/jacksum/releases/latest\nThe .zip file also contains simple scripts to call Jacksum on Windows, Linux, and macOS from the command line.\n\n## How to install and configure it\n\nDownload the .jar (or .zip) file as described above, open a terminal (on Microsoft Windows, it is known as the \"Command Prompt\") and start Jacksum by typing\n\n```\njava -jar jacksum-3.4.0.jar\n```\n\nI recommend to adjust the Windows batch file (jacksum.bat) resp. the bash script (jacksum) for GNU/Linux and Unix operating systems (e.g. macOS) and to put the script to a folder that is reachable by your PATH environment variable in order to launch jacksum easily just by typing\n\n```\njacksum\n```\n\n\u003cdetails\u003e\n\u003csummary\u003eDetails ...\u003c/summary\u003e\n\nThe following snippet could help you to setup Jacksum on GNU/Linux. In the example below, the launch script will be stored in `$HOME/bin/` which will also be added to your PATH. The jar file will be stored to `/opt/java/apps/jacksum/` so other users on the computer have access to it as well.\n\n```\n$ echo 'export PATH=\"$PATH=$HOME/bin\"' \u003e\u003e $HOME/.profile\n$ export VERSION=3.4.0\n$ unzip jacksum-$VERSION.zip\n$ cp jacksum-$VERSION/unix/jacksum ~/bin \u0026\u0026 chmod +x ~/bin/jacksum\n$ sudo mkdir -p /opt/java/apps/jacksum \u0026\u0026 cp jacksum-$VERSION/jacksum-$VERSION.jar /opt/java/apps/jacksum/\n$ rm -R jacksum-$VERSION/\n```\n\n\u003c/details\u003e\n\n## Documentation\n\n* [https://jacksum.net](https://jacksum.net) - Homepage\n* [Features](https://github.com/jonelo/jacksum/wiki/Features)\n* [Manpage](https://github.com/jonelo/jacksum/wiki/Manpage) (with many examples)\n* [Wiki](https://github.com/jonelo/jacksum/wiki)\n* [Release Notes](https://github.com/jonelo/jacksum/blob/main/RELEASE-NOTES.txt) - since 2002!\n* [Developer Guide](https://github.com/jonelo/jacksum/wiki/Developer-Guide)\n* [Source Code](https://github.com/jonelo/jacksum) (on GitHub, mavenized with a pom.xml and an IntelliJ .idea config)\n* [References](https://github.com/jonelo/jacksum/wiki/References)\n\n## Integrations\n\n* [Jacksum for Windows](https://github.com/jonelo/jacksum-for-windows)\n* [Jacksum for Linux](https://github.com/jonelo/jacksum-for-linux)\n* [Jacksum for macOS](https://github.com/jonelo/jacksum-for-macos)\n* [Jacksum on Docker](https://hub.docker.com/r/jonelo/jacksum)\n* [HashGarten](https://github.com/jonelo/HashGarten) - a GUI for Jacksum\n* NumericalChameleon, see http://www.numericalchameleon.net\n\n## History\n\n* [Release Notes](https://github.com/jonelo/jacksum/blob/main/RELEASE-NOTES.txt) - since 2002!\n* The first release of Jacksum was published in July 2002 on https://sourceforge.net/projects/jacksum/\n* I made a pause in Jacksum development beteween 2007 and 2020\n* Jacksum is actively developed again\n* In September 2021 I moved the repo to GitHub\n\n## Contribution\n\nI appreciate feedback from users, bug hunters, and fresh ideas from open minded people. Feel free and file [support requests, change requests, bug reports and feature requests on GitHub](https://github.com/jonelo/jacksum/issues)\n\nSpread the word, or give a star here on GitHub.\n\n## Credits\n\nJacksum implements a lot of algorithms, but it doesn't reinvent the wheel if an algorithm is available already in another mature crypto library. So Jacksum relies on [Bouncy Castle](https://www.bouncycastle.org), [java-crc](https://github.com/snksoft/java-crc), [GNU Crypto](https://www.gnu.org/software/gnu-crypto/) (abandoned), Flexiprovider (abandoned), and Projet RNRT SAPHIR (abandoned). Libraries that have been abandoned are now supported by Jacksum (the hash part only). The Jacksum manpage clearly points out the origin for each algorithm. Any algorithm that is accepted by the Jacksum project will benefit from the framework that applies to all algorithms. For more information on that subject please type `jacksum --copyright`or go to the [copyright page](https://jacksum.net/en/legal/copyright.html).\n\n\n## License\n\nThe license that the project is offered under is the [GPL-3.0+](https://github.com/jonelo/jacksum/blob/main/LICENSE).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonelo%2Fjacksum","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonelo%2Fjacksum","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonelo%2Fjacksum/lists"}