Algorithms

BLAKE3

A Merkle tree of 1 KiB chunks with a 32-byte digest. Absurdly fast and no HMAC mode
IDblake312 / 24cryptographic · 256-bit
Hash / Cryptographic

BLAKE3

A Merkle tree of chunks, absurdly fast.

Digest
256-bit · 32 bytes
HMAC
no key mode
Security
128-bit security against collisions and preimages
Family
16 in cryptographic
1 option, 0 required

Sample

hex
d74981efa70a0c880b8d8c1985d075dbcbf679b99a5f9914e5aaf96b831a9e24
base64
10mB76cKDIgLjYwZhdB128v2ebmaX5kU5ar5a4ManiQ=

Options

encodingstring
default hex
Output encoding: hex, base64, base64url, binary

Access

Createcreate("blake3")
CLIhashes blake3 'hello world'
Tryplayground with the sample above
Kinsha256, sha384, sha512, sha512-half +11

BLAKE3 splits the input into 1 KiB chunks, hashes them as leaves of a binary tree and compresses its way up to one root. The tree is what makes it parallel, and why it runs so fast on large inputs. This implementation is plain TypeScript and checked against the reference blake3 on 285 input lengths up to 1 MiB, so it's right. It isn't SIMD fast, though.

ts
create("blake3").hash("").digest;
// "af1349b9f5f9a1a6a0404dea36dcc9499bcb25c9adc112b7cc9a93cae41f3262"
create("blake3").hash("abc").digest;
// "6437b3ac38465133ffb63b75273a8db548c558465d79db03fd359c6cd5bd9d85"

No HMAC. BLAKE3 has its own keyed mode, which isn't HMAC and isn't here, so a key is refused instead of quietly ignored.