All Projects β†’ lukechampine β†’ Blake3

lukechampine / Blake3

Licence: mit
A pure-Go implementation of the BLAKE3 cryptographic hash function

Programming Languages

assembly
5116 projects

Labels

Projects that are alternatives of or similar to Blake3

Fasthash
Go package porting the standard hashing algorithms to a more efficient implementation.
Stars: ✭ 163 (-24.54%)
Mutual labels:  hash
Dcipher Cli
πŸ”“Crack hashes using online rainbow & lookup table attack services, right from your terminal.
Stars: ✭ 193 (-10.65%)
Mutual labels:  hash
Phash
pHash - the open source perceptual hash library
Stars: ✭ 208 (-3.7%)
Mutual labels:  hash
Simple Scrypt
A convenience library for generating, comparing and inspecting password hashes using the scrypt KDF in Go πŸ”‘
Stars: ✭ 168 (-22.22%)
Mutual labels:  hash
Highwayhash
Node.js implementation of HighwayHash, Google's fast and strong hash function
Stars: ✭ 183 (-15.28%)
Mutual labels:  hash
Argon2 Browser
Argon2 library compiled for browser runtime
Stars: ✭ 197 (-8.8%)
Mutual labels:  hash
Crypto Async
Fast, reliable cipher, hash and hmac methods executed in Node's threadpool for multi-core throughput.
Stars: ✭ 161 (-25.46%)
Mutual labels:  hash
Python Hashes
Interesting (non-cryptographic) hashes implemented in pure Python.
Stars: ✭ 213 (-1.39%)
Mutual labels:  hash
Leaked
Leaked? 2.1 - A Checking tool for Hash codes, Passwords and Emails leaked
Stars: ✭ 184 (-14.81%)
Mutual labels:  hash
Next Build Id
Easily set your `next build` BUILD_ID to the latest git commit hash
Stars: ✭ 203 (-6.02%)
Mutual labels:  hash
Jssha
A JavaScript/TypeScript implementation of the complete Secure Hash Standard (SHA) family (SHA-1, SHA-224/256/384/512, SHA3-224/256/384/512, SHAKE128/256, cSHAKE128/256, and KMAC128/256) with HMAC.
Stars: ✭ 2,089 (+867.13%)
Mutual labels:  hash
Swifthash
πŸ• MD5 in pure Swift
Stars: ✭ 182 (-15.74%)
Mutual labels:  hash
Util
A collection of useful utility functions
Stars: ✭ 201 (-6.94%)
Mutual labels:  hash
Gtkhash
A cross-platform desktop utility for computing message digests or checksums
Stars: ✭ 167 (-22.69%)
Mutual labels:  hash
Bcrypt
A Java standalone implementation of the bcrypt password hash function. Based on the Blowfish cipher it is the default password hash algorithm for OpenBSD and other systems including some Linux distributions. Includes a CLI Tool.
Stars: ✭ 207 (-4.17%)
Mutual labels:  hash
Loki
Loki - Simple IOC and Incident Response Scanner
Stars: ✭ 2,217 (+926.39%)
Mutual labels:  hash
Awesome Unique Id
A curated list of awesome Unique IDs
Stars: ✭ 196 (-9.26%)
Mutual labels:  hash
Hackers Tool Kit
Its a framework filled with alot of options and hacking tools you use directly in the script from brute forcing to payload making im still adding more stuff i now have another tool out called htkl-lite its hackers-tool-kit just not as big and messy to see updates check on my instagram @tuf_unkn0wn or if there are any problems message me on instagram
Stars: ✭ 211 (-2.31%)
Mutual labels:  hash
Dhash
Python library to calculate the difference hash (perceptual hash) for a given image, useful for detecting duplicates
Stars: ✭ 209 (-3.24%)
Mutual labels:  hash
Discohash
πŸ‘― Discohash - A super fast and simple hash. 5GB/s serial (depending on hardware). Also in NodeJS
Stars: ✭ 205 (-5.09%)
Mutual labels:  hash

blake3

GoDoc Go Report Card

go get lukechampine.com/blake3

blake3 implements the BLAKE3 cryptographic hash function. This implementation aims to be performant without sacrificing (too much) readability, in the hopes of eventually landing in x/crypto.

In addition to the pure-Go implementation, this package also contains AVX-512 and AVX2 routines (generated by avo) that greatly increase performance for large inputs and outputs.

Contributions are greatly appreciated. All contributors are eligible to receive an Urbit planet.

Benchmarks

Tested on a 2020 MacBook Air (i5-7600K @ 3.80GHz). Benchmarks will improve as soon as I get access to a beefier AVX-512 machine. πŸ˜‰

AVX-512

BenchmarkSum256/64           120 ns/op       533.00 MB/s
BenchmarkSum256/1024        2229 ns/op       459.36 MB/s
BenchmarkSum256/65536      16245 ns/op      4034.11 MB/s
BenchmarkWrite               245 ns/op      4177.38 MB/s
BenchmarkXOF                 246 ns/op      4159.30 MB/s

AVX2

BenchmarkSum256/64           120 ns/op       533.00 MB/s
BenchmarkSum256/1024        2229 ns/op       459.36 MB/s
BenchmarkSum256/65536      31137 ns/op      2104.76 MB/s
BenchmarkWrite               487 ns/op      2103.12 MB/s
BenchmarkXOF                 329 ns/op      3111.27 MB/s

Pure Go

BenchmarkSum256/64           120 ns/op       533.00 MB/s
BenchmarkSum256/1024        2229 ns/op       459.36 MB/s
BenchmarkSum256/65536     133505 ns/op       490.89 MB/s
BenchmarkWrite              2022 ns/op       506.36 MB/s
BenchmarkXOF                1914 ns/op       534.98 MB/s

Shortcomings

There is no assembly routine for single-block compressions. This is most noticeable for ~1KB inputs.

Each assembly routine inlines all 7 rounds, causing thousands of lines of duplicated code. Ideally the routines could be merged such that only a single routine is generated for AVX-512 and AVX2, without sacrificing too much performance.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].