-
Notifications
You must be signed in to change notification settings - Fork 5
/
RELEASE-NOTES.txt
710 lines (600 loc) · 36.6 KB
/
RELEASE-NOTES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
Jacksum 3.7.0, Aug 26, 2023
- new features:
- added HMAC support
- extended option -a to understand HMAC definitions, including optional truncations
- added option -k, and alias --key to specify the secret for HMACs
- added option --hmacs to print all hash functions that work with HMAC
- allowed option --info for gathering HMAC info to print HMAC parameters such as
- the underlying cryptographic hash
- a specified truncation in both bits and bytes
- how many bits a truncated length should have at least
- whether a specified truncated length follows the RFC recommendation
- how many bytes a specified key should have at least
- whether the specified key follows the RFC recommendation wrt key length
- whether the specified key will be hashed
- added string hashing support
- added option --string-list to calculate hash values from strings stored in text files
- added options --string-list-charset, and alias --charset-string-list
- added option --ignore-empty-lines
- added formatter alias #MESSAGE for #FILENAME
- added console input mode
- added password mode, and readline mode for option -q (and -k)
- added option --charset-console, and alias --console-charset
- added encodings
- added encoding Z85 for option -E (without a limit on the length of the input)
- added support for oct, Base32, Base32hex, Base64, Base64url, and Z85 to option -q
- added option --output-file-replace-tokens
- bug fixes:
- NPE if filename is null and -F is set (e.g. 'jacksum -a none -F "#SEQUENCE" -q txt:')
- NPE can occur if both -a none and -E without -F have been set
- #FILENAME is not replaced in <format> if both "-F <format>" and "-q file:<file>" have been used
- aliases blake2sp-256 and blake2bp-512 are not accessible
- regression: "jacksum -a all:blake -l" returns "blake2sp-256 is an unknown algorithm" due to missing alias
- crc32_mpeg2 didn't reveal the poly representations by specifying --info
- improved performance:
- performance for algorithm info output (-a <algos> [--list] --info)
- updated documentation:
- added description and encoding tables for the most common encodings (see "jacksum -h -E")
Jacksum 3.6.0, April 16, 2023
- new algorithms:
- added all finalists that support hashing of the NIST Lightweight Cryptography competition (2019–2023)
from a bouncy castle pre-release:
- ascon-hash, ascon-hasha, ascon-xof, and ascon-xofa
- esch256, and esch384
- photon-beetle
- xoodyak - with a contribution fix by jonelo (https://github.com/bcgit/bc-java/pull/1362)
- added blake2sp, and blake2bp (issue #4) - the Java implementation (fixed width single threaded) is done by
pre-release bouncy castle code with a contribution fix for blake2sp by jonelo
(https://github.com/bcgit/bc-java/issues/1363 and 1364)
- added 32 bit PRNG based checksums which are known from Solaris 11 Express, OmniOS, SmartOS, and Tribblix:
- PRNG hash
- AST strsum PRNG hash
- alternate implementation for blake3 provided by bouncy castle, the existing primary implementation still remains the
primary, because it is slightly faster.
- updates:
- significant performance improvement for all FNV-0/FNV-1/FNV-1a with a width of 64 bits
- minor performance improvements for all FNV-0/FNV-1/FNV-1a with a bit width > 64 bits
- documentation: added OpenIndiana to the compatibility lists.
- bug fixes:
- CommonHashStatistics.java was not added to the repo which avoided the compilation
- fixed the grammar bugs in the manpage by using OpenAI's grammar correction
Jacksum 3.5.0, Jan 7, 2023
- new algorithms:
- replaced own CRC engine by the BSD 3-clause licenced CRC engine java-crc 1.0.3 from S&K Software Development Ltd.,
New Zealand (https://github.com/snksoft/java-crc) in order to benefit from the extra [1..7] CRC bit widths.
- added CRC-82/DARC with aliases crc82, crc82_darc, crc-82, crc-82_darc
(translated to Java from C-code that was written by Mark Adler)
- added PHP's variants on Tiger called "tiger192,4", "tiger160,4", and "tiger128,4"
by adjusting Bouncy Castle's TigerDigest slightly.
- added legacy sum64
- new features:
- make option --file-list recognizing GNU filename escaping
- added "files-only" style with GNU filename escaping feature enabled in order to generate file lists
that can be fed to Jacksum again
- added "hexhashes-only" style to read and write files that contain hash values only (for -w)
- added option alias called --match-filter for option --wanted-list-filter
- added option alias called --expect for option --expect-hash
- improved --info for CRCs:
- added the polynomial representations: normal, reversed, and Koopman
- added the reciprocal polynomial for CRCs
- added binary and hex for each poly representation
- added polynomial representations and CRC parameters also for optimized CRC implementations
- updates:
- improved documentation:
- added ISO-3309 notes on CRC-64
- added Wolfram's Hash function to the compatibility lists
- updated Jacksum's crc-catalogue by Greg Cook's catalogue of parametrised CRC algorithms
with CRC-8/HITAG, CRC-16/M17, and CRC-32/MEF. Also added CRC-64/JONES, and CRC-64/REDIS.
- updated bundled bouncycastle version to 1.71 (digests only), but baked out the regression that was
introduced by issue # 1036 in the Kangaroo class (the constructor parameter is now ignored completely
in bouncy castle :-/)
- bug fixes:
- github issue #22: Statistics are all zero if --check-line has been set
- github issue #24: Regression: Jacksum 3.0.0 to 3.4.0 hangs while trying to read NTUSER.DAT on Microsoft Windows
if more than one algo has been selected
- correctness of check file shows "NaN %" in the statistics if there is no entry at all in the check file
- updated serialversionUID in the Parameters class, because members have changed in Jacksum 3.4.0
- `jacksum -h exit` does not print the entire exit status section
- option --match-filter match,nomatch doesn't work like --match-filter all
- be not equal-tolerant for any BASE64* encoding
Jacksum 3.4.0, June 19, 2022
- new features:
- features in this release are mostly around GitHub issue #10
- added option -w resp. --wanted-list to find files that match hashes in a precalculated list
- added option --wanted-list-charset and alias --charset-wanted-list to specify the charset for
the "wanted list"-file
- added option --wanted-list-filter in order to filter the output produced by -w,
allows both positive and negative matching
- documented operating modes to the help file
- bug fixes:
- sm3 not returned by calling "jacksum -a all -l"
- if "--file-list <list>" and "--format #FILENAME{path}" is set, a NPE is thrown if the parent of a file in the list is null
- false positives during -c: files are found as NEW more than once if the specified file references have different relative paths
to the same file
Jacksum 3.3.0, April 23, 2022
- new features:
- added option --threads-hashing <threads> to control the number of threads if multiple
algorithms should run in parallel
- added option --threads-reading <threads> to control the number of threads if multiple
files should be read in parallel
- added option --path-relative-to-entry <integer>
(required for the integration at the Windows Explorer's SendTo-menu)
- added option --filesize <boolean> to control whether the file size should be added or not
- added option --gnu-filename-escaping <boolean> to tag the lines where file names have been escaped (default, linux, and bsd styles)
- parse escaped file names that have been tagged in default, linux and bsd verification files
- added format token #BINTAG to tag binary mode in verification files with a Linux style produced on Microsoft Windows
- added format token #ESCAPETAG to tag lines where the file name has been escaped using the GNU file name escaping feature
- added format tokens #ALGONAMES, #ALGONAMES{uppercase}, and #ALGONAMES{lowercase} to print algorithm names
separated by a comma if multiple algorithms have been selected
- added format tokens #HASHES, #HASHES{<encoding>} to print hashes separated by comma if multiple algorithms have been selected
- added public API calls to allow requesting info from the build-in help
- performance:
- the option --threads-reading is set to 1 by default to avoid performance degradation
for hashing files stored on non-SSD-media such as HDDs or CD-ROMs
- faster output of the build-in help by using memory buffering before printing
- improved initial values for HashMap constructors
- bug fixes:
- fixed: if ")" is part of a file name (e.g. "file (1).txt", the regexp in the bsd, solaris-tagged,
solaris-untagged, and openssl compat files don't detect the filename
- fixed: if a path cannot be relativized by --path-relative-to it should not print
stacktrace, but simply return the non-relativized path (e.g. if both paths have a different roots
on Microsoft Windows).
- fixed: normalize paths if --path-relative-to is set to avoid false positives during verification
- fixed: option --path-relative-to is not taken into account if --compat has been set
- fixed: --header's invocation arg need to be quoted if arg starts with a # sign
- fixed: if Jacksum is being called by its API, the invocation args should be printed
from the actual parameter object values, and not from the CLI parameters
- fixed: wrong help section is printed out in case of user errors with --file-list-format
- fixed: slightly wrong error message if concurrent path options have been set
- fixed: algorithms with a numeric parameter (e.g. haval_<width>_<rounds>) cannot be found
by the build-in help function if fully expessed (e.g. jacksum -h haval_256_5)
Jacksum 3.2.0, March 5, 2022
- new features
- the default parser takes option -s into account (GitHub issue #9)
- added option --header
- added --path-relative-to to print paths relative to another path
(required for the File Browser Integration on Windows)
- added --path-absolute to print absolute paths
- added --no-path to omit the path
- added encodings base64-nopadding, and base64url-nopadding
- performance improvements
- since Java 9+ supports a fast CRC32c, it became the primary implementation for crc32c
- improved initial values for HashMap constructors
- minor improvements (comfort)
- added aliases rg32, rg-32, and rg64, rg-64 for radiogatun (GitHub issue #14)
- added alias called --style for the option --compat
- added alias --absolute for --path-absolute
- added alias --relative-to for --path-relative-to
- improved error handling for the algorithm parameter
- reformatted help
- bug fixes
- fixed: on Linux during integrity checking, don't replace the back slash file separator for filenames,
because on Linux it is allowed to have backslashes in filenames (GitHub issue #17)
- fixed: wrong hashSize in GNU-Crypto's whirlpool 0-arguments constructor
(and all whirlpool derived implementations) (GitHub issue #19)
- fixed: -F "#HASH{<algo>}" and -F "#HASH{<algo>,<encoding>}" does not work if just only one algorithm
has been selected
- fixed: typo in manpage (bitwidth for RIPEMD 320)
Jacksum 3.1.0, Nov 1, 2021
- new features:
- allow Jacksum to read from all Windows files types on Microsoft Windows including
disks, partitions, RAM disks, the nul-device, and NTFS Alternate Data Streams (ADS) on both files and directories
- allow Jacksum to read from all file types on Unix-like operating systems including
block devices, character devices, named pipes (FIFOs), sockets, and doors (Solaris only)
- added option called --scan-ntfs-ads to let Jacksum scan for NTFS Alternate Data Streams (ADS)
during recursively directory traversal on Microsoft Windows
- added option called --scan-all-unix-file-types to let Jacksum scan for all Unix file types
- added option called --bom for adding a Byte-Order Mark (BOM) to the output if a charset has been specified where a BOM
is optional (charsets GB18030, UTF-8, UTF-16BE, UTF-16LE, UTF-32LE, and UTF-32BE)
- added option -q file:<file> (GitHub issue #12)
- added z-base-32 encoding for hash value representation
- minor improvements:
- improved check mode statistics: added number of improperly lines, and number of ignored lines
- improved the style of the short help to see everything even on terminals with 24-rows
- improved the manpage: added the hash function tools that are supported by BusyBox
- minor bug fixes:
- fixed: don't follow symlinks to block devices, character devices, named pipes, sockets,
or doors if -f (regular files only) has been set.
- fixed: duplicate filenames in the checkfile leads to a misleading output,
the latest duplicate filename in a checkfile should win, and all previous duplicate filenames should be ignored
- fixed the manpage: PowerShell applet Get-FileHash has also RIPEMD160
Jacksum 3.0.1, Oct 4, 2021
- added minor features
- added algorithm aliases crc32_jamcrc and crc-32_jamcrc for crc32_ubi
- added algo aliases sha512t224, sha512t256, skein256, skein512, and skein1024
- added compat aliases called linux-tagged and linux-untagged (for bsd and linux)
- added compat files called solaris-tagged and solaris-untagged
- added format aliases #ALGONAME{lowercase} and #ALGONAME{<i>,lowercase}
- improved build-in help
- 'jacksum -h parameters', 'jacksum -h options', and 'jacksum -h algorithms'
show the corresponding section entirely
- fixed: `jacksum -h examples` shows only the first 3 example sections, it should show all example sections
- added info to the manpage about "cksum -a <algo>" which exists starting with the GNU Core Utilities 9.0
- added KeccakSum compatibility info to the help file
- fixed some typos in the help file
- bugs fixed
- fixed: regression: files that have been specified by -o,-O and -u,-U are hashed, but they shouldn't
- fixed: if both errorFile and outputFile are set to the same file, their paths must be normalized before comparisons
- fixed: a NPE is thrown if a non-compatibility file is given by option -C
- fixed: the syntax version of the compatibility files should be checked before processing
- fixed: compat files bsd, linux, and openssl should use line separator \n on Microsoft Windows,
otherwise md5sum, sha1sum, etc. on GNU/Linux cannot read Jacksum's output
- fixed: typo in compat files linux and openssl which results in wrong stdin names
- fixed: Jacksum does not print 100% compatible output by using tagged compat files (bsd, and openssl)
- fixed: Jacksum does not parse 100% compatible output by using tagged compat files (bsd, and openssl)
- fixed: speed rank info is calculated wrongly (check with `jacksum -a all --list --info`)
- fixed: format "#HASH{0,<encoding>}" and -F "#CHECKSUM{i,<encoding>}" don't work if the user
has selected one algorithm only
- fixed: crc32c can be used normal, but it is missing in the --list output
- fixed: remove the lab-remnant hex-camelcase from the code
- fixed: a potential mem leak in the Blake3 implementation
- fixed: don't print a warning about implicitly set format if we have set -C and we are in check mode
Jacksum 3.0.0, Sep 4, 2021
- Algorithms
new algorithms
- 408 new algorithms (including different sizes) have been added
- SHA-3 winner of the NIS SHA-3 competition (FIPS 202)
* SHA3-224, SHA3-256, SHA3-384, SHA3-512 provided by the OpenJDK 9+ resp.
by bouncycastle (bc) as an alternative implementation or if Java < 9 is being used
* SHAKE128, SHAKE256 (provided by bc)
- completion of the SHA-2 family definitions (FIS 180-4):
* SHA-512/224, SHA-512/256 provided by the OpenJDK 9+ resp.
by bc as an alternative implementation or if Java < 9 is being used
- national standards
* Kupyna256, Kupyna384, Kupyna512 (Ukraine standard)
* LSH (Korean Standard): LSH-256-224, LSH-256-256, LSH-512-224, LSH-512-256, and
LSH-512-384, LSH-512-512
* SM3 (Chinese standard, provided by bc)
* Streebog-256, Streebog-512 (Russian standard GOST R 34.11-2012, provided by bc)
- other modern cryptographic hash functions
* BLAKE3 (announced in 2020)
* BLAKE2s, BLAKE2b (both with support for arbitrary output)
* KangarooTwelve (K12) and MarsupilamiFourteen (M14)
* RadioGatun[32], Radiogatun[64] (provided by Project PNRT SAPHIR)
- all SHA-3 finalists (round 3) of the NIST SHA-3 competition
* BLAKE-224, BLAKE-256, BLAKE-384, BLAKE-512 (provided by Project PNRT SAPHIR)
* Groestl-224, Groestl-256, Groestl-384, Groestl-512 (provided by Project PNRT SAPHIR)
* JH (224, 256, 384 and 512 bits) (provided by Project PNRT SAPHIR)
* Keccak (224, 256, 384 and 512 bits) (provided by bc)
* Skein256, Skein512, Skein1024 (provided by bc) with support for arbitrary output
- three algorithms from round 2 of the NIST SHA-3 competition
* ECHO-[224,256,348,512]
* Fugue-[224,256,348,512]
* Luffa-[224,256,348,512]
- proposals from the NIST crypto workshops before the SHA-3 competition
* FORK-256, DHA-256, VSH-1024
- legacy algorithm support
* PANAMA (provided by Project PNRT SAPHIR)
* MDC2 (the U.S. Patent 4,908,861 expired on August 28, 2007)
Thanks to Stefan Palme, Germany for the MDC2 implementation from his
HBCI4Java project (LGPL)
* GOST also with init parameters as suggested by the Crypto-Pro company
* FNV-0, FNV-1 and FNV-1a
(for each algorithm: 32, 64, 128, 256, 512 and 1024 bits) (provided by jonelo)
* Minix' crc and Minix' cksum, and sum before Minix 3.2.1 (provided by jonelo)
* Plan 9' sum (FDDI CRC) (provided by jonelo)
* PHP's crc32 (provided by jonelo)
* CRC32c (iSCSI) (provided by jonelo)
* Bob Jenkins' One-at-a-Time hash (joaat32, provided by jonelo)
* Fletcher-16 (provided by jonelo)
* sum40, sum48, sum56 (provided by jonelo)
* CRC64 (ECMA 182) (provided by jonelo)
* CRC64 (.xz and prog lang GO, const ECMA) (provided by jonelo)
* CRC64 (prog lang GO, const ISO) (provided by jonelo)
* XXH32 (provided by Apache Commons Codec 1.15)
bug fixes
- change request sf# 1693872: Decrease the memory requirement of the
TigerTree class, Thanks to Oleg Dyakun for the feature request
- bug fixed: a checksum can be returned in a negative format if the
customizable CRC has a width of 64 bit
- Performance
new features
- added multi processor/multi core support for parallel hashing of many files
- added multi processor/multi core support for parallel hashing of many algorithms
Thanks to Federico Tello Gentile, Argentina for both the feature request
and the implementation
bug fixes
- change request: for the CrcGeneric update method: moved an if-condition outside the loop
- change request: inline the update method for the loops
Thanks to Federico Tello Gentile, Argentina for the feature request
- MD2 from the JRE is used by default if available, pure Java implementation of MD2
on demand (-A), thanks to Federico Tello Gentile, Argentina for the feature request
- Data integrity verification
new features
- added option --compat in order to parse data that has been produced by 3rd party apps
- added compatibility files/parsers for BSD-, FCIV-, Linux-, SFV-, and OpenSSL files
- possibility to create own compatibility files
- added option --charset-check-file in order to specify the charset for the check file
- added BOM awareness for check files
- can detect not only OK, FAILED, and MISSING files, but also NEW files
- added option --check-line in order to check just one line
- added option --check-strict in order to exit nonzero if one or more input line is invalid
- added option --list-filter to show ok, failed, missing, and/or new files
- Formats and Encodings
new features
- added new Encodings: base32_nopad, base32hex, base32hex_nopad, base64url
- unixtime can be selected for the timestamp format
- Option -q bin in order to support binary input (zeros and ones),
comma and space delimited values are supported
- Option -q txtf in order to support UTF-8 formatted text including
interpretation of escape sequences (\n, \r, \t, \", \', \\ and \xHH)
- the alias called #DIGEST has been added to the format options
- the alias called #LENGTH has been added to the format options
- added #CHECKSUM{i,e} to the format options in order to specify
a particular encoding for the CHECKSUM{i}
- added #SEQUENCE to the format options
- added #SEQUENCE{e} to the format options in order to specify
a particular encoding for the SEQUENCE
- Option -q hex also supports comma and space delimited values
- Option -q dec also supports space delimited values
- Option -t iso8601 in order to produce ISO 8601 compatible timestamps
bug fixes
- bug fixed: padding for base32 is not appended when it should (see RFC 4648)
Thanks to Dr. Richard B. Kreckel, Germany for both the bug report
(it has been fixed by replacing the existing class)
Command Line Interface
new features
- added an algorithm finder: if you know both the input and the output you can search for the
algorithm that can produce the output by brute force
(that can be useful for determining unknown CRC algorithm parameters)
- more than one directory can be specified on the command line for a
recursive tree traversal
- option -a enhancement: select algorithms by a search string or a bit width
- you can limit the depth of the recursion by specifying a depth
- added -L in order read files from a predefined list
- in addition to the "Rocksoft (tm) Model CRC Algorithm" schema,
the Generic CRC can be parameterized to include the (optional xor'ed)
length to the CRC in order to describe algorithms such as the POSIX
cksum or the FDDI CRC
- extended option -V in order to print out details of algorithms
(e.g. polynomial as a math expression for all CRCs)
- improved option -V to enable/disable errors as well
- each dash-option has got a dash-dash-option as well
- added the double dash-option in order to signify the end of command options
- added --info option to get info about the program, for the selected algorithms or
the compatibility file
- added options --charset-check-file, --charset-file-list, --charset-error-file,
--charset-output-file, --charset-stdout, and --charset-stderr in order to specify
the charset for various I/O objects
- Shortcut option -8 or --utf8 can be used to set UTF-8 character set for both stdout and stderr
bug fixes
- change requests sf# 1532748: read binary rather than text from standard input
and sf# 2842138: Incorrect output for data provided by stdin
Thanks to gsteele0000 and r_a_llo for the change requests
(unexpected suboptimal behavior was documented, though)
- Documentation
new features and improvements
- updated availability of checksum/hash tools/algorithms on
BeOS, FreeBSD, HP-UX, GNU/Linux, Mac OS X, Solaris, and Windows
- added availability of checksum/hash tools/algorithms on
7z, Angstrom, DragonFly BSD, CentOS, FreeDOS, GNU/Hurd, gpg, IBM AIX,
Java, Kali Linux, LibreSSL, macOS, Minix, MS-DOS, NetBSD, NexStep,
PHP, Plan 9, Python, and OpenSSL (phew, that were a lot of VMs and tests ;-)
- added more examples for learning Jacksum
- redesigned the help page
bug fixes
- bug fixed: "-h license" does not print anything
- bug fixed: -h prints help sections for both uppercase and lowercase option,
but should only print the expected help section
- Internal/API
new features and improvements
- feature request sf# 1602248: support for NIO byte buffers,
Thanks to Moritz Ringler, Germany for the feature request
- the code structure has been significantly redesigned and refactored
in order to restore the maintainability of Jacksum for new requirements
replacements
- replaced the existing Base64 implementation (public domain) with the one
from the Java Standard SE 8+ API
- replaced the existing Base32 implementation (public domain) with the Base32
implemenation from www.dnsjava.org (2-clause BSD license)
- Compatibility changes
changes
- requires a JRE/JDK that is compatible with Java 11 or later, OpenJDK 11+ is recommended
- released under the terms of the GNU GPLv3 or later
- the default algorithm is now SHA3-256 and not SHA-1 anymore
- by default, data is read from standard input in binary mode
- by default, recursively operation is active for folders, by default depth is unlimited
- if -r is specified explicitly, also a depth has to be specified
- redirection to a file by -u, -U, -o, and -O uses UTF-8 rather than the default
shell character set in order to support Unicode characters for filenames/folders
Thanks to Rajmund, UK for the feature request and code suggestion
- option -l enables the list view in general, for filtering verification results use --list-filter
- option "-t default" defaults to a format that also includes the milliseconds
deletions
- options -m, -p, -S, -w have been removed
- the Jacksum class in the default package has been removed
- Java version check has been removed
- German translation for option -h has been removed (at least for now)
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-11-06
- regression bug fixed: when option -l is used, removed files will not be
printed out to the standard output anymore
Thanks to Sabrina Rolleman, Canada for the bugreport
- sourceforge feature request #1028824 has been implemented
(add homepage URI if -m is used)
Thanks to Lee A. Davis for the feature request
- improved documentation
Jacksum 1.5.0, 2004-08-08
- four new algorithms are supported: ed2k/eDonkey/eMule, CRC-64, ELF-32, FCS-16
Thanks to Henrique Malheiro, Portugal for the eDonkey reference implementation
- sourceforge bug #948070 has been fixed (-c won't work if -t has been set)
Thanks to Lee A. Davis for the bugreport
- bug fixed: Jacksum hangs if it reaches a fifo under Unix/Linux
- bug fixed: files which are used by another process can't be processed properly
- new option -d for ignoring symbolic links to directories under Unix/Linux to avoid
enless loops in particular cases
- improved option -q to support not only hex, but also text and decimal formats
- new option -F for being able to customize the output format
see also sourceforge feature request #968469 (show file length on MD5)
- new option -P to print out filenames with a customized separator
- lists created with -m are platform independent now, you can verify files against
a list on Linux/Unix if the list has been created on Windows for example
- new option -S to calculate just one fingerprint (summary)
Thanks to Berthold Kohlmann, Germany for this feature request
- sourceforege feature request #968491 has been implemented
(Handle pre 1.5 time formats with -c), thanks to Lee A. Davis for the request
- sourceforge feature request #968487 has been implemented (list dir argument as comment)
Thanks to Lee A. Davis for the feature request
- new option -A to specify alternate implementations of one of the following algorithms
crc32, md5, sha-1, sha-256, sha-384, sha-512
- added alias called FCS-32 for CRC-32
- added alias called SHA-160 for SHA-1
- Java version check also for IBM's Java VM
- tested successfully with JRE 1.5 beta3
Jacksum 1.4.0, 2004-02-01
- three new algorithms are supported: Tiger, Haval and
the MPEG spec of CRC-32
Thanks to Chris Ash, Southampton, UK for suggesting this feature based
on existing GPL code (VideoLan project)
- Haval can have both length (128, 160, 192, 224 or 256 bits)
and round parameters (3 to 5)
- algorithms sha-256, sha-384 and sha-512 are also supported with JRE 1.3 now
- new option -p for including path info on each line when recursively
file processing is requested, this makes it easier to sort or grep
ouput lines
Thanks to Douglas E. W. for both feature request and reference implementation
- new option -e for comparison against an expected checksum
Thanks to Daniel Ellermann, Germany for both feature request and
reference implementation
- new option -l to show a list of modified or deleted files, list can be used
to feed the zip command
- exits, if parameter -t does not contain supported characters
- version check introduced for better compatibility
- improved comments for sourcecode called Crc16.java
- documentation updated with Mac OS X information
- requires at least JRE 1.3.1, 1.4.2 is recommended
Jacksum 1.3.0, 2003-11-02
- eight new algorithms are supported: sha-256, sha-384 and sha-512
(requires Java 1.4.2 or later), xor8, sum8, sum16, sum24 and sum32
- option to check files against a given list (option -c)
Thanks to Leonardo A. Pires, Brazil for this feature request
Thanks a lot to Christian F., London, UK for his reference implementation
- option to create meta-information (option -m); while checking against
a list, you don't have to enter the original command line options again
- timestamps of files can be part of the output (option -t)
Thanks to Vishwanathan Narayanan, Florida, USA for this feature request
with the option -c you can check against both content and timestamps
- the output format of timestamps is highly configurable
- process a hex sequence quickly (option -q)
Thanks to Jack Memishian, USA for this feature request
- bug fixed: algorithm cksum hangs, if a file is greater than 2 GB
- bug fixed: processing special file system folders, like Windows'
"System Volume Information" throws to a NullPointerException
- stdout and stderr are separete streams now
- Jacksum is using the GNU crypto package 1.1
(http://www.gnu.org/software/gnu-crypto/)
- documentation updated
Jacksum 1.2.0, 2003-02-16
- four new algorithms from the GNU crypto project are supported:
MD4, RIPEMD-128, RIPEMD-160 and Whirlpool
(http://www.gnu.org/software/classpathx/crypto/)
- bug fixed: 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.
Thanks to Cary Coulter for both, bug report and fix.
- bug fixed: CRC16 does not work like the standard CRC16
generator poly X^16 + X^15 + X^2 + 1.
Thanks to David Elfi, Argentina for both bug report and fix
- provided compatibility with free Kaffe Java VM
(Java version check only for Sun's Java VM)
- option -v to get the version of Jacksum
Jacksum 1.1.2, 2003-01-19
- bug fixed: input file will not be closed; this can cause
problems if Jacksum will be used in other projects.
Thanks to Bill Kelemen for both, bug report and fix.
- faster algorithm for output of checksums in hex format
- documentation updated (Solaris 9+ can have a md5 application)
Jacksum 1.1.1, 2002-11-07
- bug fixed: algorithm sysv returns invalid checksum if files are greater
than ~9 MB. Thanks to Sunny Liu, NYC for both bug report and fix.
Jacksum 1.1.0, 2002-09-08
- options for hexadecimal checksum output (lower- and uppercase)
Thanks to Peter Frey, Germany for this feature request
- filenames/directories will be sorted alphabetically
Jacksum 1.0.0, 2002-07-07
- initial public release
- requires at least JRE 1.3.0
- algorithms Adler32, BSD sum, POSIX cksum, CRC-16, CRC-32, MD2, MD5,
SHA1 and Unix System V sum are supported
- processing of subdirectories is supported
- a custom separator string can be defined