aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
blob: 2b1bec68a8f8fe0c2827f187680411724b02bafe (plain) (blame)
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 checksum.       (default: 1024)
    
    -c CAPACITY
    --capacity     The capacity to use for checksum.      (default: 576)
    
    -w WORDSIZE
    --wordsize     The word size to use for checksum.     (default: 64)
    
    -o OUTPUTSIZE
    --outputsize   The output size to use for checksum.   (default: 512)
    
    -s STATESIZE
    --statesize    The state size to use for checksum.    (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.