Replace "github.com/minio/blake2b-simd" with "golang.org/x/crypto/blake2b"
"github.com/minio/blake2b-simd" is no longer maintained since 6 years ago. "golang.org/x/crypto/blake2b" can provide the same functionality with better performance and it is officially maintained by "golang.org".
A simple benchmark is here:
package main import ( "testing" b1 "github.com/minio/blake2b-simd" b2 "golang.org/x/crypto/blake2b" ) var data = []byte("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890{}") func BenchmarkMinioBlake2b(b *testing.B) { b.RunParallel(func(p *testing.PB) { for p.Next() { h := b1.New256() for range 100 { h.Write(data) } h.Sum(nil) } }) } func BenchmarkXCryptoBlake2b(b *testing.B) { b.RunParallel(func(p *testing.PB) { for p.Next() { h, _ := b2.New256(nil) for range 100 { h.Write(data) } h.Sum(nil) } }) }
The result is:
goos: linux
goarch: amd64
pkg: blake2bbench
cpu: Intel(R) Core(TM) i5-10200H CPU @ 2.40GHz
BenchmarkMinioBlake2b-8 743415 1540 ns/op 32 B/op 1 allocs/op
BenchmarkXCryptoBlake2b-8 915026 1294 ns/op 416 B/op 2 allocs/op
PASS
ok blake2bbench 3.301s
"golang.org/x/crypto/blake2b" is about 15% faster than "github.com/minio/blake2b-simd".
I think it is worth to replace this dependency because of both security and perfermance.