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
|
COMPLETE STATUS:
Java 1.2+ :: optimised
Python 3 :: optimised
Python 2 :: optimised for Python 3
C ISO C90 :: optimised
Java/C JNI :: optimised
NASM :: planned (maybe)
Python 3 + C :: planned (maybe)
Haskell :: planned (maybe)
Perl :: planned (maybe)
D :: planned (maybe)
Common Lisp :: planned (perhaps)
Scala :: planned (perhaps)
Magic :: planned (perhaps)
Vala :: maybe in the future
PERFORMANCE COMPARISON:
C ISO C90 :: 0,082s ~ 1
Java/C JNI :: 0,175s ~ 2,13
Java 1.2+ :: 0,228s ~ 2,78
Python 3 :: 24,373s ~ 297
Python 2 :: 34,595s ~ 422
md5sum :: 0,009s ~ 0,110
sha1sum :: 0,013s ~ 0,159
sha384sum :: 0,015s ~ 0,183
sha512sum :: 0,015s ~ 0,183
sha224sum :: 0,020s ~ 0,244
sha256sum :: 0,021s ~ 0,256
md6sum :: 0,165s ~ 2,01
Based on test against a 2,3 MB file.
**SHA-3/Keccak checksum calculator**
*USAGE:*
sha3sum [option...] < FILE
sha3sum [option...] file...
*OPTIONS:*
-r BITRATE
--bitrate The bitrate to use for SHA-3. (default: 1024)
-c CAPACITY
--capacity The capacity to use for SHA-3. (default: 576)
-w WORDSIZE
--wordsize The word size to use for SHA-3. (default: 64)
-o OUTPUTSIZE
--outputsize The output size to use for SHA-3. (default: 512)
-s STATESIZE
--statesize The state size to use for SHA-3. (default: 1600)
-i ITERATIONS
--iterations The number of hash iterations to run. (default: 1)
-j SQUEEZES
--squeezes The number of hash squeezes to run. (default: 1)
-x
--hex Read the input in hexadecimal, rather than binary.
-b
--binary Print the checksum in binary, rather than hexadecimal.
-m
--multi Print the checksum at all iterations.
**Pending the standardisation of SHA-3**, there is no specification of particular
SHA-3 functions yet. Our defaults are based on Keccak[] being Keccak[r = 1024, c = 576]
rather than the functions in Wikipedia's entires that uses [r = 576, c = 1024].
No release will made until SHA-3 has been standardise, this is to prevent the
program to change behaviour caused by mismatch with standardisation.
If you want to contribute with an implementation in another
language, please try do so in the earliest version of the
language officially supported on GNU/Linux, unless there are
backwards incompatibilities (as is the case with Python.)
This helps for embedded devices.
|