maandree / sha3sum

[Feature complete] SHA-3 and Keccak checksum utility
https://codeberg.org/maandree/sha3sum
ISC License
174 stars 51 forks source link
authenticity checksum cryptographic-hash integrity keccak rawshake security sha3 sha3sum shake utility

This repo has been moved to Codeberg and may be out of date on GitHub. Canonical repo: https://codeberg.org/maandree/sha3sum

NAME sha3sum - Keccak, SHA-3, SHAKE, and RawSHAKE checksum utilities

SYNOPSIS keccaksum [option ...] [file ...] keccak-224sum [option ...] [file ...] keccak-256sum [option ...] [file ...] keccak-384sum [option ...] [file ...] keccak-512sum [option ...] [file ...] sha3-224sum [option ...] [file ...] sha3-256sum [option ...] [file ...] sha3-384sum [option ...] [file ...] sha3-512sum [option ...] [file ...] shake128sum [option ...] [file ...] shake256sum [option ...] [file ...] shake512sum [option ...] [file ...] rawshake128sum [option ...] [file ...] rawshake256sum [option ...] [file ...] rawshake512sum [option ...] [file ...]

DESCRIPTION Fully configurable byte-orientated checksum utilities for Keccak and its close derivatives SHA-3, SHAKE and RawSHAKE.

This utilities can generate checksums or verify the
checksums of files.

OPTIONS

-u
    Use upper-case output.

-l
    Use lower-case output.

-b
    Use binary output.

-c
    Check checksums.

-x
    Use hexadecimal input.

-v
    Be verbose.

-R rate
    Select rate.

-C capacity
    Select capacity.

-N, -O output-size
    Select output size.

-S, -B state-size
    Select state size.

-W word-size
    Select word size.

-Z squeeze-count
    Select squeeze count.

RATIONALE We probably do not need this, but it is nice to have in case SHA-2 gets compromised.

SEE ALSO libkeccak(7), sum(1), cksum(1), md5sum(1), md6sum(1), sha1sum(1), sha224sum(1), sha256sum(1), sha384sum(1), sha512sum(1)

PERFORMANCE Performance comparison on a 1 GiB file (yes, that is quite large) with /dev/urandom data:

$ keccak-224sum     │   $ keccak-256sum
real    0m9.550s    │   real    0m9.841s
user    0m9.223s    │   user    0m9.560s
sys 0m0.320s    │   sys 0m0.260s
            │
$ keccak-384sum     │   $ keccak-512sum
real    0m12.902s   │   real    0m18.084s
user    0m12.580s   │   user    0m17.823s
sys 0m0.313s    │   sys 0m0.243s
            │
$ keccaksum     │   $ sha1sum
real    0m10.438s   │   real    0m3.421s
user    0m10.140s   │   user    0m3.157s
sys 0m0.287s    │   sys 0m0.253s
            │
$ sha224sum     │   $ sha256sum
real    0m8.196s    │   real    0m9.361s
user    0m7.910s    │   user    0m9.097s
sys 0m0.263s    │   sys 0m0.257s
            │
$ sha384sum     │   $ sha512sum
real    0m5.450s    │   real    0m4.507s
user    0m5.223s    │   user    0m4.247s
sys 0m0.220s    │   sys 0m0.257s
            │
$ md5sum        │   $ md6sum
real    0m2.987s    │   real    1m28.873s
user    0m2.703s    │   user    1m28.470s
sys 0m0.283s    │   sys 0m0.360s

Note: The times are a bit random, and only one run
has been made. "user" is the most interesting data.
Additionally, only the pure keccak variants have been
tested because the difference is between them and the
other are quite small; and of course the other hashing
utilities from other packages using other
algorithm-families.

NOTES Packagers are advised to separate sha3sum(1) into its own packages, apart from the other commands, as it is mearly provided for compatibility and it could cause package conflict with other implementations that only provide sha3sum(1) such as busybox.