An optimized PBKDF2 implementation is particularly advantageous for a defender because an attacker will always have a more powerful setup.
This is an experiment in optimizing PBKDF2.
Every GOOS/GOARCH has the same base optimizations. GOARCH=arm64 has its own assembly core.
TODO: talk about optimizations.
=== RUN Test100ms
pbkdf2_test.go:120: std: 720311/100ms
pbkdf2_test.go:121: asm: 1874573/100ms (2.60x)
[...]
BenchmarkHMACSHA256
BenchmarkHMACSHA256-8 5451 219651 ns/op
BenchmarkHMACSHA256_Go
BenchmarkHMACSHA256_Go-8 84 13853241 ns/op
This project uses full disclosure. If you find a security bug in an implementation, please e-mail me or create a GitHub issue.
You should only use cryptography libraries that have been reviewed by cryptographers or cryptography engineers. While I am a cryptography engineer, I'm not your cryptography engineer, and I have not had this project reviewed by any other cryptographers.