16 unstable releases (3 breaking)

✓ Uses Rust 2018 edition

new 0.3.4 May 23, 2020
0.3.3 Apr 28, 2020
0.3.0 Mar 30, 2020
0.2.3 Mar 29, 2020
0.0.0 Sep 17, 2019
Download history 95/week @ 2020-01-25 152/week @ 2020-02-01 239/week @ 2020-02-08 115/week @ 2020-02-15 206/week @ 2020-02-22 82/week @ 2020-02-29 82/week @ 2020-03-07 75/week @ 2020-03-14 68/week @ 2020-03-21 256/week @ 2020-03-28 116/week @ 2020-04-04 169/week @ 2020-04-11 110/week @ 2020-04-18 150/week @ 2020-04-25 58/week @ 2020-05-02 44/week @ 2020-05-09

473 downloads per month

CC0-1.0 OR Apache-2.0

27K SLoC

GNU Style Assembly 13K SLoC Assembly 6.5K SLoC // 0.0% comments Rust 4K SLoC // 0.2% comments C 3K SLoC // 0.1% comments Python 144 SLoC // 0.1% comments


A command line utility for calculating BLAKE3 hashes, similar to Coreutils tools like b2sum or md5sum.

b3sum 0.3.4

    b3sum [FLAGS] [OPTIONS] [file]...

    -c, --check       Reads BLAKE3 sums from the [file]s and checks them
    -h, --help        Prints help information
        --keyed       Uses the keyed mode. The secret key is read from standard
                      input, and it must be exactly 32 raw bytes.
        --no-mmap     Disables memory mapping. Currently this also disables
        --no-names    Omits filenames in the output
        --quiet       Skips printing OK for each successfully verified file.
                      Must be used with --check.
        --raw         Writes raw output bytes to stdout, rather than hex.
                      --no-names is implied. In this case, only a single
                      input is allowed.
    -V, --version     Prints version information

        --derive-key <CONTEXT>    Uses the key derivation mode, with the given
                                  context string. Cannot be used with --keyed.
    -l, --length <LEN>            The number of output bytes, prior to hex
                                  encoding (default 32)
        --num-threads <NUM>       The maximum number of threads to use. By
                                  default, this is the number of logical cores.
                                  If this flag is omitted, or if its value is 0,
                                  RAYON_NUM_THREADS is also respected.

    <file>...    Files to hash, or checkfiles to check. When no file is given,
                 or when - is given, read standard input.

See also this document about how the --check flag works.


Hash the file foo.txt:

b3sum foo.txt

Time hashing a gigabyte of data, to see how fast it is:

# Create a 1 GB file.
head -c 1000000000 /dev/zero > /tmp/bigfile
# Hash it with SHA-256.
time openssl sha256 /tmp/bigfile
# Hash it with BLAKE3.
time b3sum /tmp/bigfile


The standard way to install b3sum is:

cargo install b3sum

On Linux for example, Cargo will put the compiled binary in ~/.cargo/bin. You might want to add that directory to your $PATH, or rustup might have done it for you when you installed Cargo.

If you want to install directly from this directory, you can run cargo install --path .. Or you can just build with cargo build --release, which puts the binary at ./target/release/b3sum.

By default, b3sum enables the assembly implementations, AVX-512 support, and multi-threading features of the underlying blake3 crate. To avoid this (for example, if your C compiler does not support AVX-512), you can use Cargo's --no-default-features flag.


~47K SLoC