1
0
Fork 0
mirror of https://github.com/BLAKE3-team/BLAKE3 synced 2024-05-19 04:56:08 +02:00
BLAKE3/b3sum/README.md
Jack O'Connor 4d6dfc4eed version 1.1.0
Changes since 1.0.0:
- The NEON implementation is now enabled by default on AArch64 targets.
  Previously it was disabled without the "neon" Cargo feature in Rust or
  the "BLAKE3_USE_NEON=1" preprocessor flag in C. This is still the case
  on ARM targets other than AArch64, because of the lack of dynamic CPU
  feature detection on ARM. Contributed by @rsdy.
- The previous change leads to some build incompatibilities,
  particularly in C. If you build the C implementation for AArch64
  targets, you now need to include blake3_neon.c, or else you'll get a
  linker error like "undefined reference to `blake3_hash_many_neon'". If
  you don't want the NEON implementation, you need to explicitly set
  "BLAKE3_USE_NEON=0". On the Rust side, AArch64 targets now require the
  C toolchain by default. build.rs includes workarounds for missing or
  very old C compilers for x86, but it doesn't currently include such
  workarounds for AArch64. If we hear about build breaks related to
  this, we can add more workarounds as appropriate.
- C-specific Git tags ("c-0.3.7" etc.) have been removed, and all the
  projects in this repo (Rust "blake3", Rust "b3sum", and the C
  implementation) will continue to be versioned in lockstep for the
  foreseeable future.
2021-10-21 17:23:51 -04:00

87 lines
3.0 KiB
Markdown

# b3sum
A command line utility for calculating
[BLAKE3](https://github.com/BLAKE3-team/BLAKE3) hashes, similar to
Coreutils tools like `b2sum` or `md5sum`.
```
b3sum 1.1.0
USAGE:
b3sum [FLAGS] [OPTIONS] [FILE]...
FLAGS:
-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
multithreading.
--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
OPTIONS:
--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.
ARGS:
<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](https://github.com/BLAKE3-team/BLAKE3/blob/master/b3sum/what_does_check_do.md).
# Example
Hash the file `foo.txt`:
```bash
b3sum foo.txt
```
Time hashing a gigabyte of data, to see how fast it is:
```bash
# 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
```
# Installation
Prebuilt binaries are available for Linux, Windows, and macOS (requiring
the [unidentified developer
workaround](https://support.apple.com/guide/mac-help/open-a-mac-app-from-an-unidentified-developer-mh40616/mac))
on the [releases page](https://github.com/BLAKE3-team/BLAKE3/releases).
If you've [installed Rust and
Cargo](https://doc.rust-lang.org/cargo/getting-started/installation.html),
you can also build `b3sum` yourself with:
```
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`.