Table of Contents

Hash Algorithm Benchmarks

BenchmarkDotNet measurements for all hash algorithm implementations in CryptoHives.Foundation.Security.Cryptography. Each algorithm is benchmarked across representative payload sizes (128 bytes through 128 KiB) to capture both latency and throughput characteristics.

Implementations are compared against:

  • OS — .NET's built-in System.Security.Cryptography (backed by CNG/OpenSSL)
  • BouncyCastle — BouncyCastle C# library
  • Native — Platform-specific native libraries (e.g., blake3-dotnet)
  • Managed — CryptoHives managed implementation (scalar)
  • SIMD — CryptoHives SIMD variants (SSE2, SSSE3, AVX2, AVX-512F)

Machine profile

Machine Specification

The benchmarks were run on the following machine:

BenchmarkDotNet v0.15.8, Windows 11 (10.0.26200.7840/25H2/2025Update/HudsonValley2)
AMD Ryzen 5 7600X 4.70GHz, 1 CPU, 12 logical and 6 physical cores
.NET SDK 10.0.103
[Host]    : .NET 10.0.3 (10.0.3, 10.0.326.7603), X64 RyuJIT x86-64-v4
.NET 10.0 : .NET 10.0.3 (10.0.3, 10.0.326.7603), X64 RyuJIT x86-64-v4
Job=.NET 10.0  Runtime=.NET 10.0  Toolchain=net10.0

Note: All benchmarks and SIMD optimizations have been developed and measured on this AMD Ryzen 5 / Windows 11 platform only. No results are available yet for Linux, macOS, or ARM processors (e.g. Apple Silicon, AWS Graviton). Performance characteristics — particularly SIMD dispatch paths and OS-backed implementations (CNG vs OpenSSL) — may differ significantly on other platforms. Run benchmarks locally for your specific hardware.

Highlights

Family Leader Key Insight
SHA-2 OS (SHA-NI) Hardware SHA-NI gives OS ~4.5× advantage; managed outperforms BouncyCastle by ~13%
SHA-3/Keccak Managed Scalar Keccak outperforms OS by ~30% and SIMD variants by 25–35%
BLAKE2b/2s Managed SIMD BLAKE2s SIMD on parity with BouncyCastle; BLAKE2b AVX2 within ~20%
BLAKE3 Native (Rust) Rust interop ~1.4× faster at small inputs, ~12× at large due to multi-chunk parallelism; SSSE3 managed ~4× faster than BouncyCastle
Streebog Managed 1.4–1.8× faster than OpenGost/BouncyCastle
Kupyna Managed T-table optimization ~30–45% faster than BouncyCastle
KMAC Managed ~30% faster than OS and ~48% faster than BouncyCastle at all sizes
Ascon Managed ~33% faster than BouncyCastle across all input sizes

SHA-2 Family

The OS SHA-256/SHA-512 implementations leverage SHA-NI hardware instructions (available on AMD Zen+ and Intel Ice Lake+), providing ~4.5× speedup over any software implementation. For pure managed code, CryptoHives outperforms BouncyCastle by approximately 13% through loop unrolling and hardcoded round constants.

Key observations:

  • OS: Uses SHA-NI hardware acceleration
  • Managed: Optimized scalar with unrolled rounds
  • BouncyCastle: Reference scalar implementation

SHA-224

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA-224 · Managed 128B 474.8 ns 3.66 ns 3.06 ns -
TryComputeHash · SHA-224 · BouncyCastle 128B 553.0 ns 3.52 ns 3.29 ns -
TryComputeHash · SHA-224 · Managed 137B 477.4 ns 1.83 ns 1.72 ns -
TryComputeHash · SHA-224 · BouncyCastle 137B 557.6 ns 3.89 ns 3.64 ns -
TryComputeHash · SHA-224 · Managed 1KB 2,655.9 ns 17.26 ns 16.14 ns -
TryComputeHash · SHA-224 · BouncyCastle 1KB 3,073.9 ns 10.18 ns 8.50 ns -
TryComputeHash · SHA-224 · Managed 1025B 2,659.4 ns 15.66 ns 14.65 ns -
TryComputeHash · SHA-224 · BouncyCastle 1025B 3,078.5 ns 12.85 ns 11.39 ns -
TryComputeHash · SHA-224 · Managed 8KB 20,103.9 ns 126.06 ns 117.91 ns -
TryComputeHash · SHA-224 · BouncyCastle 8KB 23,237.4 ns 96.77 ns 90.52 ns -
TryComputeHash · SHA-224 · Managed 128KB 318,282.1 ns 1,286.13 ns 1,140.12 ns -
TryComputeHash · SHA-224 · BouncyCastle 128KB 368,758.2 ns 1,008.89 ns 842.47 ns -

SHA-256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA-256 · OS Native 128B 106.7 ns 0.27 ns 0.24 ns -
TryComputeHash · SHA-256 · Managed 128B 474.7 ns 1.98 ns 1.85 ns -
TryComputeHash · SHA-256 · BouncyCastle 128B 544.2 ns 2.56 ns 2.27 ns -
TryComputeHash · SHA-256 · OS Native 137B 106.7 ns 0.30 ns 0.25 ns -
TryComputeHash · SHA-256 · Managed 137B 474.6 ns 1.57 ns 1.31 ns -
TryComputeHash · SHA-256 · BouncyCastle 137B 557.2 ns 2.91 ns 2.72 ns -
TryComputeHash · SHA-256 · OS Native 1KB 463.4 ns 1.19 ns 1.05 ns -
TryComputeHash · SHA-256 · Managed 1KB 2,649.9 ns 14.01 ns 11.70 ns -
TryComputeHash · SHA-256 · BouncyCastle 1KB 3,043.7 ns 14.94 ns 13.97 ns -
TryComputeHash · SHA-256 · OS Native 1025B 463.9 ns 0.67 ns 0.63 ns -
TryComputeHash · SHA-256 · Managed 1025B 2,663.3 ns 11.45 ns 10.71 ns -
TryComputeHash · SHA-256 · BouncyCastle 1025B 3,035.9 ns 14.55 ns 13.61 ns -
TryComputeHash · SHA-256 · OS Native 8KB 3,277.3 ns 6.70 ns 6.27 ns -
TryComputeHash · SHA-256 · Managed 8KB 19,990.4 ns 55.85 ns 49.51 ns -
TryComputeHash · SHA-256 · BouncyCastle 8KB 22,966.2 ns 142.29 ns 133.10 ns -
TryComputeHash · SHA-256 · OS Native 128KB 51,518.9 ns 85.85 ns 76.11 ns -
TryComputeHash · SHA-256 · Managed 128KB 317,562.8 ns 2,088.27 ns 1,953.37 ns -
TryComputeHash · SHA-256 · BouncyCastle 128KB 363,487.9 ns 1,536.17 ns 1,436.93 ns -

SHA-384

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA-384 · OS Native 128B 347.5 ns 1.04 ns 0.92 ns -
TryComputeHash · SHA-384 · Managed 128B 402.5 ns 0.95 ns 0.79 ns -
TryComputeHash · SHA-384 · BouncyCastle 128B 473.6 ns 1.64 ns 1.37 ns -
TryComputeHash · SHA-384 · OS Native 137B 346.3 ns 2.23 ns 2.09 ns -
TryComputeHash · SHA-384 · Managed 137B 404.0 ns 1.87 ns 1.75 ns -
TryComputeHash · SHA-384 · BouncyCastle 137B 477.1 ns 1.71 ns 1.43 ns -
TryComputeHash · SHA-384 · OS Native 1KB 1,387.3 ns 6.93 ns 6.14 ns -
TryComputeHash · SHA-384 · Managed 1KB 1,782.3 ns 8.23 ns 7.70 ns -
TryComputeHash · SHA-384 · BouncyCastle 1KB 2,107.9 ns 14.36 ns 11.99 ns -
TryComputeHash · SHA-384 · OS Native 1025B 1,389.2 ns 10.17 ns 9.52 ns -
TryComputeHash · SHA-384 · Managed 1025B 1,783.0 ns 5.05 ns 4.48 ns -
TryComputeHash · SHA-384 · BouncyCastle 1025B 2,098.8 ns 5.67 ns 5.02 ns -
TryComputeHash · SHA-384 · OS Native 8KB 9,691.0 ns 21.71 ns 19.25 ns -
TryComputeHash · SHA-384 · Managed 8KB 12,778.5 ns 55.31 ns 49.03 ns -
TryComputeHash · SHA-384 · BouncyCastle 8KB 15,098.1 ns 31.93 ns 26.66 ns -
TryComputeHash · SHA-384 · OS Native 128KB 152,267.4 ns 644.11 ns 602.50 ns -
TryComputeHash · SHA-384 · Managed 128KB 201,016.9 ns 915.32 ns 856.19 ns -
TryComputeHash · SHA-384 · BouncyCastle 128KB 237,533.1 ns 1,329.50 ns 1,243.62 ns -

SHA-512

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA-512 · OS Native 128B 343.2 ns 1.41 ns 1.25 ns -
TryComputeHash · SHA-512 · Managed 128B 402.9 ns 2.08 ns 1.95 ns -
TryComputeHash · SHA-512 · BouncyCastle 128B 477.3 ns 3.47 ns 3.24 ns -
TryComputeHash · SHA-512 · OS Native 137B 342.6 ns 1.76 ns 1.56 ns -
TryComputeHash · SHA-512 · Managed 137B 403.8 ns 1.09 ns 1.02 ns -
TryComputeHash · SHA-512 · BouncyCastle 137B 479.7 ns 1.61 ns 1.42 ns -
TryComputeHash · SHA-512 · OS Native 1KB 1,385.0 ns 8.30 ns 7.77 ns -
TryComputeHash · SHA-512 · Managed 1KB 1,781.4 ns 8.89 ns 8.31 ns -
TryComputeHash · SHA-512 · BouncyCastle 1KB 2,104.9 ns 11.42 ns 10.68 ns -
TryComputeHash · SHA-512 · OS Native 1025B 1,384.3 ns 4.88 ns 4.07 ns -
TryComputeHash · SHA-512 · Managed 1025B 1,784.8 ns 7.75 ns 7.25 ns -
TryComputeHash · SHA-512 · BouncyCastle 1025B 2,108.4 ns 13.03 ns 12.19 ns -
TryComputeHash · SHA-512 · OS Native 8KB 9,675.1 ns 45.96 ns 42.99 ns -
TryComputeHash · SHA-512 · Managed 8KB 12,753.5 ns 34.74 ns 30.80 ns -
TryComputeHash · SHA-512 · BouncyCastle 8KB 15,071.4 ns 42.14 ns 35.19 ns -
TryComputeHash · SHA-512 · OS Native 128KB 152,288.9 ns 740.78 ns 692.93 ns -
TryComputeHash · SHA-512 · Managed 128KB 201,652.5 ns 921.70 ns 862.16 ns -
TryComputeHash · SHA-512 · BouncyCastle 128KB 237,709.5 ns 928.76 ns 868.76 ns -

SHA-512/224

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA-512/224 · Managed 128B 402.6 ns 1.48 ns 1.39 ns -
TryComputeHash · SHA-512/224 · BouncyCastle 128B 487.1 ns 1.59 ns 1.33 ns -
TryComputeHash · SHA-512/224 · Managed 137B 402.7 ns 1.81 ns 1.69 ns -
TryComputeHash · SHA-512/224 · BouncyCastle 137B 494.1 ns 1.69 ns 1.41 ns -
TryComputeHash · SHA-512/224 · Managed 1KB 1,781.9 ns 7.05 ns 6.59 ns -
TryComputeHash · SHA-512/224 · BouncyCastle 1KB 2,116.2 ns 19.84 ns 15.49 ns -
TryComputeHash · SHA-512/224 · Managed 1025B 1,785.2 ns 7.57 ns 7.08 ns -
TryComputeHash · SHA-512/224 · BouncyCastle 1025B 2,116.8 ns 8.08 ns 6.75 ns -
TryComputeHash · SHA-512/224 · Managed 8KB 12,747.8 ns 56.60 ns 52.94 ns -
TryComputeHash · SHA-512/224 · BouncyCastle 8KB 15,079.3 ns 51.50 ns 45.66 ns -
TryComputeHash · SHA-512/224 · Managed 128KB 200,583.3 ns 696.17 ns 581.34 ns -
TryComputeHash · SHA-512/224 · BouncyCastle 128KB 238,232.2 ns 931.40 ns 871.23 ns -

SHA-512/256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA-512/256 · Managed 128B 401.8 ns 1.80 ns 1.60 ns -
TryComputeHash · SHA-512/256 · BouncyCastle 128B 491.2 ns 2.79 ns 2.61 ns -
TryComputeHash · SHA-512/256 · Managed 137B 404.0 ns 2.63 ns 2.46 ns -
TryComputeHash · SHA-512/256 · BouncyCastle 137B 495.5 ns 2.81 ns 2.63 ns -
TryComputeHash · SHA-512/256 · Managed 1KB 1,780.8 ns 8.67 ns 8.11 ns -
TryComputeHash · SHA-512/256 · BouncyCastle 1KB 2,118.0 ns 9.94 ns 8.30 ns -
TryComputeHash · SHA-512/256 · Managed 1025B 1,778.3 ns 5.70 ns 5.05 ns -
TryComputeHash · SHA-512/256 · BouncyCastle 1025B 2,121.6 ns 8.96 ns 7.48 ns -
TryComputeHash · SHA-512/256 · Managed 8KB 12,755.1 ns 51.84 ns 45.95 ns -
TryComputeHash · SHA-512/256 · BouncyCastle 8KB 15,106.1 ns 51.82 ns 48.47 ns -
TryComputeHash · SHA-512/256 · Managed 128KB 201,291.2 ns 1,233.41 ns 1,153.73 ns -
TryComputeHash · SHA-512/256 · BouncyCastle 128KB 237,375.7 ns 644.88 ns 571.67 ns -

Keccak-derived Families

The managed Keccak core uses an optimized scalar implementation that outperforms both the OS-provided SHA-3 and SIMD variants (AVX2/AVX-512F). This is unusual—typically SIMD accelerates cryptographic operations—but Keccak's irregular permutation structure doesn't map efficiently to SIMD lanes.

Key observations:

  • Managed scalar is ~30% faster than OS SHA-3 and 25–35% faster than SIMD variants
  • SIMD implementations (AVX2/AVX-512F) are provided but disabled by default
  • All Keccak-derived algorithms (SHA-3, SHAKE, cSHAKE, TurboSHAKE, KT) share the same optimized core

SHA-3 Family

SHA3-224

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA3-224 · Managed 128B 213.9 ns 1.26 ns 1.18 ns -
TryComputeHash · SHA3-224 · AVX2 128B 287.6 ns 0.75 ns 0.70 ns -
TryComputeHash · SHA3-224 · AVX512F 128B 300.5 ns 0.89 ns 0.83 ns -
TryComputeHash · SHA3-224 · BouncyCastle 128B 331.7 ns 1.19 ns 1.05 ns -
TryComputeHash · SHA3-224 · Managed 137B 212.0 ns 1.00 ns 0.94 ns -
TryComputeHash · SHA3-224 · AVX2 137B 280.9 ns 1.20 ns 1.06 ns -
TryComputeHash · SHA3-224 · AVX512F 137B 289.4 ns 0.66 ns 0.62 ns -
TryComputeHash · SHA3-224 · BouncyCastle 137B 333.0 ns 1.06 ns 0.99 ns -
TryComputeHash · SHA3-224 · Managed 1KB 1,641.8 ns 13.87 ns 12.97 ns -
TryComputeHash · SHA3-224 · AVX2 1KB 2,221.0 ns 7.02 ns 6.56 ns -
TryComputeHash · SHA3-224 · AVX512F 1KB 2,284.1 ns 5.74 ns 5.09 ns -
TryComputeHash · SHA3-224 · BouncyCastle 1KB 2,462.3 ns 8.32 ns 7.79 ns -
TryComputeHash · SHA3-224 · Managed 1025B 1,636.7 ns 9.80 ns 9.17 ns -
TryComputeHash · SHA3-224 · AVX2 1025B 2,218.9 ns 5.15 ns 4.81 ns -
TryComputeHash · SHA3-224 · AVX512F 1025B 2,279.0 ns 7.82 ns 6.93 ns -
TryComputeHash · SHA3-224 · BouncyCastle 1025B 2,460.0 ns 10.78 ns 9.56 ns -
TryComputeHash · SHA3-224 · Managed 8KB 11,229.1 ns 38.76 ns 32.36 ns -
TryComputeHash · SHA3-224 · AVX2 8KB 15,354.3 ns 45.31 ns 42.39 ns -
TryComputeHash · SHA3-224 · AVX512F 8KB 15,746.8 ns 50.88 ns 47.59 ns -
TryComputeHash · SHA3-224 · BouncyCastle 8KB 17,363.5 ns 94.86 ns 88.73 ns -
TryComputeHash · SHA3-224 · Managed 128KB 179,442.5 ns 755.75 ns 669.95 ns -
TryComputeHash · SHA3-224 · AVX2 128KB 245,328.8 ns 1,120.44 ns 993.24 ns -
TryComputeHash · SHA3-224 · AVX512F 128KB 251,811.9 ns 1,269.50 ns 1,125.38 ns -
TryComputeHash · SHA3-224 · BouncyCastle 128KB 277,721.5 ns 623.30 ns 520.48 ns -

SHA3-256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA3-256 · Managed 128B 208.1 ns 1.25 ns 1.11 ns -
TryComputeHash · SHA3-256 · OS Native 128B 274.1 ns 1.99 ns 1.86 ns -
TryComputeHash · SHA3-256 · AVX2 128B 280.6 ns 1.02 ns 0.96 ns -
TryComputeHash · SHA3-256 · AVX512F 128B 290.7 ns 1.78 ns 1.57 ns -
TryComputeHash · SHA3-256 · BouncyCastle 128B 329.3 ns 0.97 ns 0.81 ns -
TryComputeHash · SHA3-256 · Managed 137B 461.8 ns 2.40 ns 2.24 ns -
TryComputeHash · SHA3-256 · OS Native 137B 504.3 ns 2.90 ns 2.57 ns -
TryComputeHash · SHA3-256 · AVX2 137B 609.8 ns 1.13 ns 1.00 ns -
TryComputeHash · SHA3-256 · AVX512F 137B 629.8 ns 1.45 ns 1.36 ns -
TryComputeHash · SHA3-256 · BouncyCastle 137B 630.2 ns 2.52 ns 2.24 ns -
TryComputeHash · SHA3-256 · Managed 1KB 1,618.9 ns 10.68 ns 9.99 ns -
TryComputeHash · SHA3-256 · OS Native 1KB 1,917.8 ns 15.01 ns 14.04 ns -
TryComputeHash · SHA3-256 · AVX2 1KB 2,206.5 ns 10.11 ns 8.44 ns -
TryComputeHash · SHA3-256 · AVX512F 1KB 2,255.7 ns 5.87 ns 5.49 ns -
TryComputeHash · SHA3-256 · BouncyCastle 1KB 2,454.7 ns 14.42 ns 13.49 ns -
TryComputeHash · SHA3-256 · Managed 1025B 1,615.0 ns 6.79 ns 6.35 ns -
TryComputeHash · SHA3-256 · OS Native 1025B 1,905.3 ns 12.98 ns 11.50 ns -
TryComputeHash · SHA3-256 · AVX2 1025B 2,191.8 ns 6.58 ns 6.15 ns -
TryComputeHash · SHA3-256 · AVX512F 1025B 2,249.4 ns 6.12 ns 5.72 ns -
TryComputeHash · SHA3-256 · BouncyCastle 1025B 2,457.4 ns 8.74 ns 7.75 ns -
TryComputeHash · SHA3-256 · Managed 8KB 12,035.4 ns 57.42 ns 50.90 ns -
TryComputeHash · SHA3-256 · OS Native 8KB 14,383.1 ns 100.15 ns 93.68 ns -
TryComputeHash · SHA3-256 · AVX2 8KB 16,446.5 ns 28.20 ns 25.00 ns -
TryComputeHash · SHA3-256 · AVX512F 8KB 16,946.8 ns 43.93 ns 41.09 ns -
TryComputeHash · SHA3-256 · BouncyCastle 8KB 18,496.8 ns 97.01 ns 86.00 ns -
TryComputeHash · SHA3-256 · Managed 128KB 189,183.0 ns 839.73 ns 785.48 ns -
TryComputeHash · SHA3-256 · OS Native 128KB 225,852.5 ns 1,374.34 ns 1,218.32 ns -
TryComputeHash · SHA3-256 · AVX2 128KB 259,252.1 ns 510.63 ns 477.65 ns -
TryComputeHash · SHA3-256 · AVX512F 128KB 266,058.3 ns 495.19 ns 413.51 ns -
TryComputeHash · SHA3-256 · BouncyCastle 128KB 292,550.0 ns 908.96 ns 805.77 ns -

SHA3-384

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA3-384 · Managed 128B 437.3 ns 1.70 ns 1.59 ns -
TryComputeHash · SHA3-384 · OS Native 128B 501.2 ns 4.20 ns 3.93 ns -
TryComputeHash · SHA3-384 · AVX2 128B 588.3 ns 1.43 ns 1.27 ns -
TryComputeHash · SHA3-384 · AVX512F 128B 605.2 ns 1.25 ns 1.11 ns -
TryComputeHash · SHA3-384 · BouncyCastle 128B 626.1 ns 1.86 ns 1.55 ns -
TryComputeHash · SHA3-384 · Managed 137B 433.1 ns 2.37 ns 2.22 ns -
TryComputeHash · SHA3-384 · OS Native 137B 501.0 ns 2.78 ns 2.61 ns -
TryComputeHash · SHA3-384 · AVX2 137B 584.5 ns 1.33 ns 1.04 ns -
TryComputeHash · SHA3-384 · AVX512F 137B 600.3 ns 1.74 ns 1.45 ns -
TryComputeHash · SHA3-384 · BouncyCastle 137B 625.7 ns 3.20 ns 2.99 ns -
TryComputeHash · SHA3-384 · Managed 1KB 1,971.5 ns 12.95 ns 12.11 ns -
TryComputeHash · SHA3-384 · OS Native 1KB 2,360.6 ns 14.59 ns 13.65 ns -
TryComputeHash · SHA3-384 · AVX2 1KB 2,707.2 ns 4.20 ns 3.28 ns -
TryComputeHash · SHA3-384 · AVX512F 1KB 2,777.8 ns 6.58 ns 5.50 ns -
TryComputeHash · SHA3-384 · BouncyCastle 1KB 3,044.7 ns 11.75 ns 10.41 ns -
TryComputeHash · SHA3-384 · Managed 1025B 1,976.8 ns 10.25 ns 9.59 ns -
TryComputeHash · SHA3-384 · OS Native 1025B 2,363.3 ns 16.71 ns 15.63 ns -
TryComputeHash · SHA3-384 · AVX2 1025B 2,707.3 ns 5.56 ns 4.93 ns -
TryComputeHash · SHA3-384 · AVX512F 1025B 2,778.5 ns 7.19 ns 6.37 ns -
TryComputeHash · SHA3-384 · BouncyCastle 1025B 3,036.8 ns 15.66 ns 14.65 ns -
TryComputeHash · SHA3-384 · Managed 8KB 15,437.5 ns 139.61 ns 130.59 ns -
TryComputeHash · SHA3-384 · OS Native 8KB 18,421.8 ns 119.05 ns 111.36 ns -
TryComputeHash · SHA3-384 · AVX2 8KB 21,188.0 ns 39.37 ns 36.83 ns -
TryComputeHash · SHA3-384 · AVX512F 8KB 21,748.3 ns 45.40 ns 40.24 ns -
TryComputeHash · SHA3-384 · BouncyCastle 8KB 23,655.2 ns 85.93 ns 71.76 ns -
TryComputeHash · SHA3-384 · Managed 128KB 246,400.1 ns 1,466.62 ns 1,371.88 ns -
TryComputeHash · SHA3-384 · OS Native 128KB 293,007.6 ns 1,125.98 ns 940.24 ns -
TryComputeHash · SHA3-384 · AVX2 128KB 337,722.8 ns 870.52 ns 814.29 ns -
TryComputeHash · SHA3-384 · AVX512F 128KB 346,931.9 ns 562.56 ns 526.22 ns -
TryComputeHash · SHA3-384 · BouncyCastle 128KB 379,422.1 ns 1,993.61 ns 1,864.83 ns -

SHA3-512

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA3-512 · Managed 128B 410.9 ns 1.82 ns 1.70 ns -
TryComputeHash · SHA3-512 · OS Native 128B 501.2 ns 4.68 ns 4.38 ns -
TryComputeHash · SHA3-512 · AVX2 128B 558.9 ns 1.67 ns 1.56 ns -
TryComputeHash · SHA3-512 · AVX512F 128B 577.4 ns 2.51 ns 2.23 ns -
TryComputeHash · SHA3-512 · BouncyCastle 128B 626.1 ns 3.10 ns 2.59 ns -
TryComputeHash · SHA3-512 · Managed 137B 399.9 ns 2.23 ns 2.09 ns -
TryComputeHash · SHA3-512 · OS Native 137B 503.2 ns 5.56 ns 5.20 ns -
TryComputeHash · SHA3-512 · AVX2 137B 547.4 ns 2.08 ns 1.85 ns -
TryComputeHash · SHA3-512 · AVX512F 137B 561.4 ns 1.43 ns 1.19 ns -
TryComputeHash · SHA3-512 · BouncyCastle 137B 627.3 ns 4.27 ns 3.99 ns -
TryComputeHash · SHA3-512 · Managed 1KB 2,948.2 ns 18.78 ns 17.56 ns -
TryComputeHash · SHA3-512 · OS Native 1KB 3,503.3 ns 13.73 ns 12.17 ns -
TryComputeHash · SHA3-512 · AVX2 1KB 4,042.3 ns 10.05 ns 8.91 ns -
TryComputeHash · SHA3-512 · AVX512F 1KB 4,156.1 ns 21.35 ns 17.83 ns -
TryComputeHash · SHA3-512 · BouncyCastle 1KB 4,505.0 ns 27.87 ns 26.07 ns -
TryComputeHash · SHA3-512 · Managed 1025B 2,939.9 ns 23.92 ns 22.37 ns -
TryComputeHash · SHA3-512 · OS Native 1025B 3,505.9 ns 20.23 ns 18.92 ns -
TryComputeHash · SHA3-512 · AVX2 1025B 4,036.9 ns 10.10 ns 9.45 ns -
TryComputeHash · SHA3-512 · AVX512F 1025B 4,153.2 ns 11.04 ns 9.22 ns -
TryComputeHash · SHA3-512 · BouncyCastle 1025B 4,493.9 ns 24.78 ns 23.18 ns -
TryComputeHash · SHA3-512 · Managed 8KB 22,111.7 ns 139.26 ns 130.26 ns -
TryComputeHash · SHA3-512 · OS Native 8KB 26,373.1 ns 152.16 ns 142.33 ns -
TryComputeHash · SHA3-512 · AVX2 8KB 30,411.7 ns 58.42 ns 54.65 ns -
TryComputeHash · SHA3-512 · AVX512F 8KB 31,203.0 ns 75.71 ns 67.11 ns -
TryComputeHash · SHA3-512 · BouncyCastle 8KB 34,092.3 ns 158.38 ns 148.15 ns -
TryComputeHash · SHA3-512 · Managed 128KB 352,843.3 ns 1,856.06 ns 1,736.16 ns -
TryComputeHash · SHA3-512 · OS Native 128KB 420,651.8 ns 1,747.83 ns 1,634.92 ns -
TryComputeHash · SHA3-512 · AVX2 128KB 485,908.9 ns 618.03 ns 578.11 ns -
TryComputeHash · SHA3-512 · AVX512F 128KB 501,116.0 ns 1,507.32 ns 1,409.94 ns -
TryComputeHash · SHA3-512 · BouncyCastle 128KB 545,815.0 ns 3,644.89 ns 3,409.43 ns -

Keccak Family

Keccak-256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Keccak-256 · Managed 128B 211.1 ns 0.99 ns 0.92 ns -
TryComputeHash · Keccak-256 · AVX2 128B 281.9 ns 1.43 ns 1.27 ns -
TryComputeHash · Keccak-256 · AVX512F 128B 290.0 ns 0.61 ns 0.57 ns -
TryComputeHash · Keccak-256 · BouncyCastle 128B 329.4 ns 2.01 ns 1.88 ns -
TryComputeHash · Keccak-256 · Managed 137B 461.2 ns 1.73 ns 1.61 ns -
TryComputeHash · Keccak-256 · AVX2 137B 610.6 ns 1.14 ns 1.06 ns -
TryComputeHash · Keccak-256 · BouncyCastle 137B 625.8 ns 3.63 ns 3.40 ns -
TryComputeHash · Keccak-256 · AVX512F 137B 629.5 ns 1.51 ns 1.34 ns -
TryComputeHash · Keccak-256 · Managed 1KB 1,609.0 ns 4.48 ns 3.74 ns -
TryComputeHash · Keccak-256 · AVX2 1KB 2,193.9 ns 6.43 ns 6.01 ns -
TryComputeHash · Keccak-256 · AVX512F 1KB 2,257.0 ns 5.06 ns 4.73 ns -
TryComputeHash · Keccak-256 · BouncyCastle 1KB 2,456.4 ns 14.32 ns 13.39 ns -
TryComputeHash · Keccak-256 · Managed 1025B 1,611.0 ns 5.68 ns 5.32 ns -
TryComputeHash · Keccak-256 · AVX2 1025B 2,196.1 ns 9.82 ns 8.70 ns -
TryComputeHash · Keccak-256 · AVX512F 1025B 2,255.8 ns 4.04 ns 3.78 ns -
TryComputeHash · Keccak-256 · BouncyCastle 1025B 2,447.7 ns 13.35 ns 11.84 ns -
TryComputeHash · Keccak-256 · Managed 8KB 12,023.9 ns 43.01 ns 33.58 ns -
TryComputeHash · Keccak-256 · AVX2 8KB 16,455.3 ns 38.99 ns 36.47 ns -
TryComputeHash · Keccak-256 · AVX512F 8KB 16,902.9 ns 49.90 ns 44.24 ns -
TryComputeHash · Keccak-256 · BouncyCastle 8KB 18,508.8 ns 102.73 ns 91.07 ns -
TryComputeHash · Keccak-256 · Managed 128KB 189,312.2 ns 608.44 ns 539.36 ns -
TryComputeHash · Keccak-256 · AVX2 128KB 259,226.8 ns 538.46 ns 503.67 ns -
TryComputeHash · Keccak-256 · AVX512F 128KB 266,411.8 ns 1,337.70 ns 1,117.04 ns -
TryComputeHash · Keccak-256 · BouncyCastle 128KB 291,838.0 ns 1,090.34 ns 966.55 ns -

Keccak-384

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Keccak-384 · Managed 128B 437.3 ns 2.76 ns 2.58 ns -
TryComputeHash · Keccak-384 · AVX2 128B 586.9 ns 1.48 ns 1.39 ns -
TryComputeHash · Keccak-384 · AVX512F 128B 607.4 ns 1.44 ns 1.20 ns -
TryComputeHash · Keccak-384 · BouncyCastle 128B 623.6 ns 4.38 ns 4.10 ns -
TryComputeHash · Keccak-384 · Managed 137B 435.5 ns 1.82 ns 1.70 ns -
TryComputeHash · Keccak-384 · AVX2 137B 584.1 ns 1.46 ns 1.29 ns -
TryComputeHash · Keccak-384 · AVX512F 137B 603.1 ns 1.45 ns 1.35 ns -
TryComputeHash · Keccak-384 · BouncyCastle 137B 624.4 ns 4.46 ns 4.18 ns -
TryComputeHash · Keccak-384 · Managed 1KB 1,973.0 ns 11.79 ns 10.46 ns -
TryComputeHash · Keccak-384 · AVX2 1KB 2,704.9 ns 5.92 ns 5.54 ns -
TryComputeHash · Keccak-384 · AVX512F 1KB 2,781.8 ns 5.02 ns 4.19 ns -
TryComputeHash · Keccak-384 · BouncyCastle 1KB 3,041.5 ns 9.73 ns 8.63 ns -
TryComputeHash · Keccak-384 · Managed 1025B 1,971.5 ns 17.73 ns 16.59 ns -
TryComputeHash · Keccak-384 · AVX2 1025B 2,695.8 ns 4.47 ns 3.97 ns -
TryComputeHash · Keccak-384 · AVX512F 1025B 2,790.1 ns 11.88 ns 10.53 ns -
TryComputeHash · Keccak-384 · BouncyCastle 1025B 3,042.1 ns 17.61 ns 16.48 ns -
TryComputeHash · Keccak-384 · Managed 8KB 15,399.7 ns 66.96 ns 59.36 ns -
TryComputeHash · Keccak-384 · AVX2 8KB 21,194.1 ns 36.02 ns 33.70 ns -
TryComputeHash · Keccak-384 · AVX512F 8KB 21,797.6 ns 44.02 ns 39.03 ns -
TryComputeHash · Keccak-384 · BouncyCastle 8KB 23,814.0 ns 63.91 ns 56.65 ns -
TryComputeHash · Keccak-384 · Managed 128KB 245,553.5 ns 1,417.93 ns 1,256.96 ns -
TryComputeHash · Keccak-384 · AVX2 128KB 336,844.7 ns 1,001.68 ns 887.96 ns -
TryComputeHash · Keccak-384 · AVX512F 128KB 347,933.4 ns 944.25 ns 837.06 ns -
TryComputeHash · Keccak-384 · BouncyCastle 128KB 381,363.7 ns 2,875.67 ns 2,401.32 ns -

Keccak-512

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Keccak-512 · Managed 128B 407.2 ns 2.00 ns 1.87 ns -
TryComputeHash · Keccak-512 · AVX2 128B 557.8 ns 1.28 ns 1.07 ns -
TryComputeHash · Keccak-512 · AVX512F 128B 578.5 ns 1.17 ns 1.09 ns -
TryComputeHash · Keccak-512 · BouncyCastle 128B 623.1 ns 3.62 ns 3.38 ns -
TryComputeHash · Keccak-512 · Managed 137B 400.4 ns 1.51 ns 1.34 ns -
TryComputeHash · Keccak-512 · AVX2 137B 547.9 ns 2.74 ns 2.29 ns -
TryComputeHash · Keccak-512 · AVX512F 137B 560.5 ns 1.21 ns 1.13 ns -
TryComputeHash · Keccak-512 · BouncyCastle 137B 623.0 ns 2.13 ns 1.78 ns -
TryComputeHash · Keccak-512 · Managed 1KB 2,937.7 ns 10.70 ns 10.01 ns -
TryComputeHash · Keccak-512 · AVX2 1KB 4,023.0 ns 8.55 ns 8.00 ns -
TryComputeHash · Keccak-512 · AVX512F 1KB 4,152.0 ns 7.25 ns 5.66 ns -
TryComputeHash · Keccak-512 · BouncyCastle 1KB 4,498.2 ns 17.91 ns 15.88 ns -
TryComputeHash · Keccak-512 · Managed 1025B 2,939.5 ns 10.52 ns 9.33 ns -
TryComputeHash · Keccak-512 · AVX2 1025B 4,033.4 ns 10.35 ns 9.68 ns -
TryComputeHash · Keccak-512 · AVX512F 1025B 4,153.4 ns 7.77 ns 7.27 ns -
TryComputeHash · Keccak-512 · BouncyCastle 1025B 4,494.8 ns 13.88 ns 11.59 ns -
TryComputeHash · Keccak-512 · Managed 8KB 22,062.7 ns 75.81 ns 67.20 ns -
TryComputeHash · Keccak-512 · AVX2 8KB 30,350.5 ns 66.48 ns 55.51 ns -
TryComputeHash · Keccak-512 · AVX512F 8KB 31,273.0 ns 51.39 ns 48.07 ns -
TryComputeHash · Keccak-512 · BouncyCastle 8KB 34,214.6 ns 120.30 ns 112.53 ns -
TryComputeHash · Keccak-512 · Managed 128KB 352,953.2 ns 1,994.76 ns 1,865.90 ns -
TryComputeHash · Keccak-512 · AVX2 128KB 484,018.5 ns 1,079.69 ns 1,009.94 ns -
TryComputeHash · Keccak-512 · AVX512F 128KB 499,250.8 ns 1,355.89 ns 1,268.30 ns -
TryComputeHash · Keccak-512 · BouncyCastle 128KB 545,445.9 ns 2,698.10 ns 2,523.81 ns -

SHAKE Family

SHAKE128

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHAKE128 · Managed 128B 244.1 ns 1.31 ns 1.10 ns -
TryComputeHash · SHAKE128 · AVX2 128B 315.8 ns 0.92 ns 0.86 ns -
TryComputeHash · SHAKE128 · AVX512F 128B 324.6 ns 0.87 ns 0.82 ns -
TryComputeHash · SHAKE128 · BouncyCastle 128B 334.0 ns 1.54 ns 1.44 ns -
TryComputeHash · SHAKE128 · OS Native 128B 358.6 ns 1.62 ns 1.52 ns -
TryComputeHash · SHAKE128 · Managed 137B 241.7 ns 1.52 ns 1.35 ns -
TryComputeHash · SHAKE128 · AVX2 137B 312.8 ns 0.63 ns 0.55 ns -
TryComputeHash · SHAKE128 · AVX512F 137B 320.6 ns 1.04 ns 0.98 ns -
TryComputeHash · SHAKE128 · BouncyCastle 137B 333.0 ns 1.64 ns 1.53 ns -
TryComputeHash · SHAKE128 · OS Native 137B 358.8 ns 2.54 ns 2.37 ns -
TryComputeHash · SHAKE128 · Managed 1KB 1,485.8 ns 4.89 ns 4.33 ns -
TryComputeHash · SHAKE128 · OS Native 1KB 1,777.4 ns 4.11 ns 3.43 ns -
TryComputeHash · SHAKE128 · AVX2 1KB 1,996.8 ns 7.95 ns 7.44 ns -
TryComputeHash · SHAKE128 · AVX512F 1KB 2,042.9 ns 5.80 ns 5.14 ns -
TryComputeHash · SHAKE128 · BouncyCastle 1KB 2,170.9 ns 7.58 ns 6.72 ns -
TryComputeHash · SHAKE128 · Managed 1025B 1,485.0 ns 10.08 ns 9.43 ns -
TryComputeHash · SHAKE128 · OS Native 1025B 1,773.7 ns 6.55 ns 6.12 ns -
TryComputeHash · SHAKE128 · AVX2 1025B 1,992.2 ns 5.76 ns 5.39 ns -
TryComputeHash · SHAKE128 · AVX512F 1025B 2,043.4 ns 3.80 ns 3.55 ns -
TryComputeHash · SHAKE128 · BouncyCastle 1025B 2,161.2 ns 9.79 ns 8.68 ns -
TryComputeHash · SHAKE128 · Managed 8KB 9,773.8 ns 52.26 ns 48.89 ns -
TryComputeHash · SHAKE128 · OS Native 8KB 11,695.0 ns 39.91 ns 35.38 ns -
TryComputeHash · SHAKE128 · AVX2 8KB 13,288.0 ns 17.78 ns 15.76 ns -
TryComputeHash · SHAKE128 · AVX512F 8KB 13,611.2 ns 22.10 ns 19.59 ns -
TryComputeHash · SHAKE128 · BouncyCastle 8KB 14,992.4 ns 50.70 ns 47.42 ns -
TryComputeHash · SHAKE128 · Managed 128KB 155,257.5 ns 1,757.42 ns 1,643.89 ns -
TryComputeHash · SHAKE128 · OS Native 128KB 184,993.6 ns 1,302.82 ns 1,218.66 ns -
TryComputeHash · SHAKE128 · AVX2 128KB 211,627.5 ns 490.62 ns 458.93 ns -
TryComputeHash · SHAKE128 · AVX512F 128KB 215,844.5 ns 401.85 ns 375.89 ns -
TryComputeHash · SHAKE128 · BouncyCastle 128KB 239,279.5 ns 951.13 ns 889.69 ns -

SHAKE256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHAKE256 · Managed 128B 250.4 ns 1.40 ns 1.24 ns -
TryComputeHash · SHAKE256 · AVX2 128B 326.6 ns 0.81 ns 0.68 ns -
TryComputeHash · SHAKE256 · BouncyCastle 128B 331.3 ns 2.13 ns 1.89 ns -
TryComputeHash · SHAKE256 · AVX512F 128B 332.5 ns 1.76 ns 1.47 ns -
TryComputeHash · SHAKE256 · OS Native 128B 355.5 ns 2.69 ns 2.52 ns -
TryComputeHash · SHAKE256 · Managed 137B 504.5 ns 5.16 ns 4.83 ns -
TryComputeHash · SHAKE256 · OS Native 137B 590.2 ns 2.69 ns 2.51 ns -
TryComputeHash · SHAKE256 · BouncyCastle 137B 628.1 ns 2.39 ns 2.23 ns -
TryComputeHash · SHAKE256 · AVX2 137B 653.0 ns 2.00 ns 1.87 ns -
TryComputeHash · SHAKE256 · AVX512F 137B 678.2 ns 1.19 ns 1.00 ns -
TryComputeHash · SHAKE256 · Managed 1KB 1,655.1 ns 10.38 ns 9.71 ns -
TryComputeHash · SHAKE256 · OS Native 1KB 1,992.3 ns 8.17 ns 7.24 ns -
TryComputeHash · SHAKE256 · AVX2 1KB 2,243.3 ns 5.24 ns 4.64 ns -
TryComputeHash · SHAKE256 · AVX512F 1KB 2,301.7 ns 7.64 ns 6.78 ns -
TryComputeHash · SHAKE256 · BouncyCastle 1KB 2,460.0 ns 10.76 ns 10.07 ns -
TryComputeHash · SHAKE256 · Managed 1025B 1,658.6 ns 13.45 ns 11.92 ns -
TryComputeHash · SHAKE256 · OS Native 1025B 1,999.7 ns 21.58 ns 19.13 ns -
TryComputeHash · SHAKE256 · AVX2 1025B 2,245.7 ns 11.51 ns 10.20 ns -
TryComputeHash · SHAKE256 · AVX512F 1025B 2,305.9 ns 4.19 ns 3.71 ns -
TryComputeHash · SHAKE256 · BouncyCastle 1025B 2,522.9 ns 11.34 ns 10.61 ns -
TryComputeHash · SHAKE256 · Managed 8KB 12,251.7 ns 57.35 ns 50.84 ns -
TryComputeHash · SHAKE256 · OS Native 8KB 14,402.5 ns 72.91 ns 68.20 ns -
TryComputeHash · SHAKE256 · AVX2 8KB 16,495.4 ns 47.78 ns 44.70 ns -
TryComputeHash · SHAKE256 · AVX512F 8KB 16,925.4 ns 44.77 ns 39.69 ns -
TryComputeHash · SHAKE256 · BouncyCastle 8KB 18,488.5 ns 47.01 ns 41.68 ns -
TryComputeHash · SHAKE256 · Managed 128KB 189,474.0 ns 932.69 ns 826.80 ns -
TryComputeHash · SHAKE256 · OS Native 128KB 226,085.8 ns 1,248.89 ns 1,168.21 ns -
TryComputeHash · SHAKE256 · AVX2 128KB 259,193.5 ns 452.91 ns 401.49 ns -
TryComputeHash · SHAKE256 · AVX512F 128KB 265,761.5 ns 727.08 ns 680.11 ns -
TryComputeHash · SHAKE256 · BouncyCastle 128KB 293,178.7 ns 671.83 ns 524.52 ns -

cSHAKE Family

cSHAKE128

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · cSHAKE128 · Managed 128B 243.2 ns 1.59 ns 1.41 ns -
TryComputeHash · cSHAKE128 · AVX2 128B 316.5 ns 1.23 ns 1.09 ns -
TryComputeHash · cSHAKE128 · AVX512F 128B 323.8 ns 1.85 ns 1.54 ns -
TryComputeHash · cSHAKE128 · BouncyCastle 128B 333.7 ns 0.99 ns 0.93 ns -
TryComputeHash · cSHAKE128 · Managed 137B 241.8 ns 1.06 ns 0.94 ns -
TryComputeHash · cSHAKE128 · AVX2 137B 312.8 ns 0.83 ns 0.74 ns -
TryComputeHash · cSHAKE128 · AVX512F 137B 320.6 ns 1.18 ns 0.99 ns -
TryComputeHash · cSHAKE128 · BouncyCastle 137B 334.0 ns 2.23 ns 2.09 ns -
TryComputeHash · cSHAKE128 · Managed 1KB 1,488.3 ns 14.73 ns 13.06 ns -
TryComputeHash · cSHAKE128 · AVX2 1KB 1,994.0 ns 6.82 ns 6.38 ns -
TryComputeHash · cSHAKE128 · AVX512F 1KB 2,047.9 ns 5.14 ns 4.56 ns -
TryComputeHash · cSHAKE128 · BouncyCastle 1KB 2,164.9 ns 6.48 ns 5.42 ns -
TryComputeHash · cSHAKE128 · Managed 1025B 1,485.1 ns 7.98 ns 7.47 ns -
TryComputeHash · cSHAKE128 · AVX2 1025B 2,016.1 ns 6.09 ns 5.69 ns -
TryComputeHash · cSHAKE128 · AVX512F 1025B 2,041.5 ns 5.81 ns 5.44 ns -
TryComputeHash · cSHAKE128 · BouncyCastle 1025B 2,170.2 ns 11.75 ns 10.42 ns -
TryComputeHash · cSHAKE128 · Managed 8KB 9,742.4 ns 46.32 ns 38.68 ns -
TryComputeHash · cSHAKE128 · AVX2 8KB 13,312.8 ns 41.62 ns 34.75 ns -
TryComputeHash · cSHAKE128 · AVX512F 8KB 13,600.8 ns 23.09 ns 21.60 ns -
TryComputeHash · cSHAKE128 · BouncyCastle 8KB 15,056.2 ns 49.15 ns 43.57 ns -
TryComputeHash · cSHAKE128 · Managed 128KB 154,680.8 ns 661.00 ns 618.30 ns -
TryComputeHash · cSHAKE128 · AVX2 128KB 211,334.1 ns 295.35 ns 276.28 ns -
TryComputeHash · cSHAKE128 · AVX512F 128KB 215,808.6 ns 543.06 ns 481.41 ns -
TryComputeHash · cSHAKE128 · BouncyCastle 128KB 238,815.8 ns 443.33 ns 393.00 ns -

cSHAKE256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · cSHAKE256 · Managed 128B 250.4 ns 1.64 ns 1.46 ns -
TryComputeHash · cSHAKE256 · AVX2 128B 325.4 ns 0.91 ns 0.85 ns -
TryComputeHash · cSHAKE256 · BouncyCastle 128B 330.1 ns 1.96 ns 1.83 ns -
TryComputeHash · cSHAKE256 · AVX512F 128B 331.7 ns 1.01 ns 0.89 ns -
TryComputeHash · cSHAKE256 · Managed 137B 502.0 ns 3.86 ns 3.61 ns -
TryComputeHash · cSHAKE256 · BouncyCastle 137B 629.8 ns 2.69 ns 2.38 ns -
TryComputeHash · cSHAKE256 · AVX2 137B 653.0 ns 1.38 ns 1.22 ns -
TryComputeHash · cSHAKE256 · AVX512F 137B 671.7 ns 1.09 ns 0.85 ns -
TryComputeHash · cSHAKE256 · Managed 1KB 1,649.1 ns 7.90 ns 7.39 ns -
TryComputeHash · cSHAKE256 · AVX2 1KB 2,237.4 ns 4.41 ns 3.68 ns -
TryComputeHash · cSHAKE256 · AVX512F 1KB 2,297.2 ns 7.20 ns 6.73 ns -
TryComputeHash · cSHAKE256 · BouncyCastle 1KB 2,455.3 ns 15.41 ns 14.42 ns -
TryComputeHash · cSHAKE256 · Managed 1025B 1,654.9 ns 6.05 ns 5.36 ns -
TryComputeHash · cSHAKE256 · AVX2 1025B 2,239.4 ns 7.12 ns 6.66 ns -
TryComputeHash · cSHAKE256 · AVX512F 1025B 2,300.2 ns 7.05 ns 5.89 ns -
TryComputeHash · cSHAKE256 · BouncyCastle 1025B 2,447.7 ns 6.97 ns 6.18 ns -
TryComputeHash · cSHAKE256 · Managed 8KB 12,115.2 ns 38.90 ns 36.39 ns -
TryComputeHash · cSHAKE256 · AVX2 8KB 16,502.7 ns 40.67 ns 33.96 ns -
TryComputeHash · cSHAKE256 · AVX512F 8KB 16,949.2 ns 76.67 ns 71.72 ns -
TryComputeHash · cSHAKE256 · BouncyCastle 8KB 18,567.2 ns 60.53 ns 53.66 ns -
TryComputeHash · cSHAKE256 · Managed 128KB 189,923.9 ns 1,437.78 ns 1,344.90 ns -
TryComputeHash · cSHAKE256 · AVX2 128KB 259,461.3 ns 746.12 ns 697.92 ns -
TryComputeHash · cSHAKE256 · AVX512F 128KB 265,726.3 ns 732.81 ns 649.61 ns -
TryComputeHash · cSHAKE256 · BouncyCastle 128KB 292,811.5 ns 1,825.53 ns 1,707.61 ns -

KangarooTwelve Family

KT128

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · KT128 · Managed 128B 154.7 ns 1.00 ns 0.94 ns -
TryComputeHash · KT128 · AVX2 128B 181.8 ns 0.52 ns 0.43 ns -
TryComputeHash · KT128 · AVX512F 128B 186.6 ns 0.32 ns 0.28 ns -
TryComputeHash · KT128 · Managed 137B 152.1 ns 1.04 ns 0.92 ns -
TryComputeHash · KT128 · AVX2 137B 179.6 ns 0.83 ns 0.73 ns -
TryComputeHash · KT128 · AVX512F 137B 183.1 ns 0.62 ns 0.58 ns -
TryComputeHash · KT128 · Managed 1KB 849.2 ns 4.91 ns 4.60 ns -
TryComputeHash · KT128 · AVX2 1KB 1,086.9 ns 4.55 ns 3.56 ns -
TryComputeHash · KT128 · AVX512F 1KB 1,121.1 ns 2.37 ns 2.21 ns -
TryComputeHash · KT128 · Managed 1025B 845.5 ns 3.88 ns 3.63 ns -
TryComputeHash · KT128 · AVX2 1025B 1,093.9 ns 3.24 ns 3.03 ns -
TryComputeHash · KT128 · AVX512F 1025B 1,138.5 ns 2.98 ns 2.65 ns -
TryComputeHash · KT128 · Managed 8KB 6,033.1 ns 52.33 ns 48.95 ns -
TryComputeHash · KT128 · AVX2 8KB 7,705.1 ns 24.37 ns 22.80 ns -
TryComputeHash · KT128 · AVX512F 8KB 7,810.9 ns 14.54 ns 11.35 ns -
TryComputeHash · KT128 · Managed 128KB 88,617.5 ns 511.75 ns 453.66 ns -
TryComputeHash · KT128 · AVX2 128KB 115,695.7 ns 168.04 ns 157.19 ns -
TryComputeHash · KT128 · AVX512F 128KB 118,452.4 ns 186.81 ns 165.61 ns -

KT256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · KT256 · Managed 128B 164.0 ns 0.76 ns 0.67 ns -
TryComputeHash · KT256 · AVX2 128B 190.2 ns 0.66 ns 0.62 ns -
TryComputeHash · KT256 · AVX512F 128B 198.1 ns 0.41 ns 0.34 ns -
TryComputeHash · KT256 · Managed 137B 315.0 ns 2.45 ns 2.29 ns -
TryComputeHash · KT256 · AVX2 137B 371.3 ns 0.87 ns 0.77 ns -
TryComputeHash · KT256 · AVX512F 137B 381.1 ns 0.46 ns 0.43 ns -
TryComputeHash · KT256 · Managed 1KB 924.1 ns 5.31 ns 4.97 ns -
TryComputeHash · KT256 · AVX2 1KB 1,204.1 ns 4.60 ns 4.07 ns -
TryComputeHash · KT256 · AVX512F 1KB 1,237.3 ns 3.59 ns 3.36 ns -
TryComputeHash · KT256 · Managed 1025B 923.8 ns 5.25 ns 4.91 ns -
TryComputeHash · KT256 · AVX2 1025B 1,204.7 ns 2.09 ns 1.95 ns -
TryComputeHash · KT256 · AVX512F 1025B 1,241.4 ns 3.96 ns 3.70 ns -
TryComputeHash · KT256 · Managed 8KB 6,901.0 ns 31.08 ns 29.08 ns -
TryComputeHash · KT256 · AVX2 8KB 9,219.4 ns 16.63 ns 15.56 ns -
TryComputeHash · KT256 · AVX512F 8KB 9,648.6 ns 34.03 ns 30.17 ns -
TryComputeHash · KT256 · Managed 128KB 108,866.3 ns 782.88 ns 732.30 ns -
TryComputeHash · KT256 · AVX2 128KB 142,240.1 ns 233.37 ns 194.87 ns -
TryComputeHash · KT256 · AVX512F 128KB 146,595.3 ns 372.78 ns 330.46 ns -

TurboSHAKE Family

TurboSHAKE128

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · TurboSHAKE128-32 · Managed 128B 153.8 ns 1.35 ns 1.26 ns -
TryComputeHash · TurboSHAKE128-32 · AVX2 128B 177.1 ns 0.88 ns 0.78 ns -
TryComputeHash · TurboSHAKE128-32 · AVX512F 128B 182.6 ns 0.47 ns 0.44 ns -
TryComputeHash · TurboSHAKE128-32 · Managed 137B 149.6 ns 1.14 ns 1.01 ns -
TryComputeHash · TurboSHAKE128-32 · AVX2 137B 175.1 ns 1.46 ns 1.29 ns -
TryComputeHash · TurboSHAKE128-32 · AVX512F 137B 179.4 ns 1.22 ns 1.08 ns -
TryComputeHash · TurboSHAKE128-32 · Managed 1KB 844.5 ns 2.38 ns 2.22 ns -
TryComputeHash · TurboSHAKE128-32 · AVX2 1KB 1,090.5 ns 4.94 ns 4.62 ns -
TryComputeHash · TurboSHAKE128-32 · AVX512F 1KB 1,128.0 ns 7.23 ns 6.41 ns -
TryComputeHash · TurboSHAKE128-32 · Managed 1025B 847.1 ns 4.36 ns 3.64 ns -
TryComputeHash · TurboSHAKE128-32 · AVX2 1025B 1,089.0 ns 3.26 ns 2.89 ns -
TryComputeHash · TurboSHAKE128-32 · AVX512F 1025B 1,122.8 ns 3.56 ns 2.97 ns -
TryComputeHash · TurboSHAKE128-32 · Managed 8KB 5,316.5 ns 33.30 ns 31.15 ns -
TryComputeHash · TurboSHAKE128-32 · AVX2 8KB 6,959.3 ns 10.06 ns 9.41 ns -
TryComputeHash · TurboSHAKE128-32 · AVX512F 8KB 7,174.9 ns 16.49 ns 15.42 ns -
TryComputeHash · TurboSHAKE128-32 · Managed 128KB 83,788.8 ns 288.72 ns 255.94 ns -
TryComputeHash · TurboSHAKE128-32 · AVX2 128KB 110,369.2 ns 219.84 ns 183.57 ns -
TryComputeHash · TurboSHAKE128-32 · AVX512F 128KB 113,634.3 ns 162.63 ns 144.17 ns -
TryComputeHash · TurboSHAKE128-64 · Managed 128B 172.4 ns 0.65 ns 0.54 ns -
TryComputeHash · TurboSHAKE128-64 · AVX2 128B 197.8 ns 0.69 ns 0.54 ns -
TryComputeHash · TurboSHAKE128-64 · AVX512F 128B 202.7 ns 0.60 ns 0.56 ns -
TryComputeHash · TurboSHAKE128-64 · Managed 137B 171.9 ns 1.61 ns 1.35 ns -
TryComputeHash · TurboSHAKE128-64 · AVX2 137B 194.2 ns 0.62 ns 0.58 ns -
TryComputeHash · TurboSHAKE128-64 · AVX512F 137B 198.7 ns 0.28 ns 0.25 ns -
TryComputeHash · TurboSHAKE128-64 · Managed 1KB 864.2 ns 3.93 ns 3.68 ns -
TryComputeHash · TurboSHAKE128-64 · AVX2 1KB 1,110.7 ns 4.08 ns 3.61 ns -
TryComputeHash · TurboSHAKE128-64 · AVX512F 1KB 1,147.3 ns 4.06 ns 3.60 ns -
TryComputeHash · TurboSHAKE128-64 · Managed 1025B 865.2 ns 3.31 ns 2.93 ns -
TryComputeHash · TurboSHAKE128-64 · AVX2 1025B 1,111.6 ns 5.86 ns 5.48 ns -
TryComputeHash · TurboSHAKE128-64 · AVX512F 1025B 1,147.2 ns 6.65 ns 5.19 ns -
TryComputeHash · TurboSHAKE128-64 · Managed 8KB 5,314.3 ns 18.66 ns 15.58 ns -
TryComputeHash · TurboSHAKE128-64 · AVX2 8KB 6,983.6 ns 7.02 ns 6.22 ns -
TryComputeHash · TurboSHAKE128-64 · AVX512F 8KB 7,187.0 ns 7.60 ns 6.35 ns -
TryComputeHash · TurboSHAKE128-64 · Managed 128KB 83,521.0 ns 307.33 ns 272.44 ns -
TryComputeHash · TurboSHAKE128-64 · AVX2 128KB 110,149.1 ns 120.24 ns 93.88 ns -
TryComputeHash · TurboSHAKE128-64 · AVX512F 128KB 113,535.2 ns 214.85 ns 179.41 ns -

TurboSHAKE256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · TurboSHAKE256 · Managed 128B 159.1 ns 1.12 ns 1.05 ns -
TryComputeHash · TurboSHAKE256 · AVX2 128B 185.8 ns 0.39 ns 0.33 ns -
TryComputeHash · TurboSHAKE256 · AVX512F 128B 189.8 ns 0.32 ns 0.28 ns -
TryComputeHash · TurboSHAKE256 · Managed 137B 320.7 ns 1.72 ns 1.61 ns -
TryComputeHash · TurboSHAKE256 · AVX2 137B 375.3 ns 0.92 ns 0.81 ns -
TryComputeHash · TurboSHAKE256 · AVX512F 137B 388.2 ns 1.22 ns 1.15 ns -
TryComputeHash · TurboSHAKE256 · Managed 1KB 927.5 ns 6.68 ns 6.25 ns -
TryComputeHash · TurboSHAKE256 · AVX2 1KB 1,205.3 ns 3.79 ns 3.54 ns -
TryComputeHash · TurboSHAKE256 · AVX512F 1KB 1,244.8 ns 3.23 ns 3.03 ns -
TryComputeHash · TurboSHAKE256 · Managed 1025B 923.7 ns 4.80 ns 4.49 ns -
TryComputeHash · TurboSHAKE256 · AVX2 1025B 1,202.0 ns 4.87 ns 4.56 ns -
TryComputeHash · TurboSHAKE256 · AVX512F 1025B 1,244.2 ns 4.86 ns 4.06 ns -
TryComputeHash · TurboSHAKE256 · Managed 8KB 6,543.2 ns 38.09 ns 35.63 ns -
TryComputeHash · TurboSHAKE256 · AVX2 8KB 8,599.4 ns 18.75 ns 17.54 ns -
TryComputeHash · TurboSHAKE256 · AVX512F 8KB 8,911.2 ns 19.66 ns 17.43 ns -
TryComputeHash · TurboSHAKE256 · Managed 128KB 101,215.2 ns 338.83 ns 300.36 ns -
TryComputeHash · TurboSHAKE256 · AVX2 128KB 134,094.9 ns 360.29 ns 319.39 ns -
TryComputeHash · TurboSHAKE256 · AVX512F 128KB 139,133.1 ns 514.02 ns 455.66 ns -

BLAKE2 Family

BouncyCastle leads the BLAKE2 benchmarks due to highly optimized native code. The managed AVX2/SSSE3/SSE2 SIMD implementations are competitive (within ~15% of BouncyCastle or even), while the scalar fallback is significantly slower (~3.5× for BLAKE2b, ~4× for BLAKE2s).

Key observations:

  • BouncyCastle: Highly optimized reference
  • Managed AVX2: Competitive SIMD implementation
  • Managed scalar: Fallback for non-SIMD platforms

BLAKE2b-256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · BLAKE2b-256 · BouncyCastle 128B 98.77 ns 0.182 ns 0.161 ns -
TryComputeHash · BLAKE2b-256 · AVX2 128B 107.30 ns 0.247 ns 0.231 ns -
TryComputeHash · BLAKE2b-256 · Managed 128B 364.75 ns 1.445 ns 1.352 ns -
TryComputeHash · BLAKE2b-256 · BLAKE2b-256 (Konscious) 128B 486.42 ns 2.493 ns 2.332 ns 1120 B
TryComputeHash · BLAKE2b-256 · BouncyCastle 137B 186.87 ns 0.528 ns 0.494 ns -
TryComputeHash · BLAKE2b-256 · AVX2 137B 204.71 ns 0.640 ns 0.599 ns -
TryComputeHash · BLAKE2b-256 · Managed 137B 715.95 ns 4.027 ns 3.767 ns -
TryComputeHash · BLAKE2b-256 · BLAKE2b-256 (Konscious) 137B 909.54 ns 1.678 ns 1.401 ns 1136 B
TryComputeHash · BLAKE2b-256 · BouncyCastle 1KB 717.79 ns 2.119 ns 1.982 ns -
TryComputeHash · BLAKE2b-256 · AVX2 1KB 819.39 ns 2.971 ns 2.779 ns -
TryComputeHash · BLAKE2b-256 · Managed 1KB 2,819.30 ns 6.932 ns 6.145 ns -
TryComputeHash · BLAKE2b-256 · BLAKE2b-256 (Konscious) 1KB 2,993.45 ns 4.124 ns 3.655 ns 2016 B
TryComputeHash · BLAKE2b-256 · BouncyCastle 1025B 801.14 ns 2.909 ns 2.721 ns -
TryComputeHash · BLAKE2b-256 · AVX2 1025B 924.95 ns 4.650 ns 4.349 ns -
TryComputeHash · BLAKE2b-256 · Managed 1025B 3,172.66 ns 10.301 ns 9.635 ns -
TryComputeHash · BLAKE2b-256 · BLAKE2b-256 (Konscious) 1025B 3,413.68 ns 11.563 ns 10.816 ns 2024 B
TryComputeHash · BLAKE2b-256 · BouncyCastle 8KB 5,639.65 ns 16.957 ns 14.160 ns -
TryComputeHash · BLAKE2b-256 · AVX2 8KB 6,524.74 ns 18.712 ns 16.588 ns -
TryComputeHash · BLAKE2b-256 · Managed 8KB 22,588.89 ns 47.420 ns 42.036 ns -
TryComputeHash · BLAKE2b-256 · BLAKE2b-256 (Konscious) 8KB 23,084.37 ns 74.722 ns 69.895 ns 9184 B
TryComputeHash · BLAKE2b-256 · BouncyCastle 128KB 88,882.87 ns 191.387 ns 159.816 ns -
TryComputeHash · BLAKE2b-256 · AVX2 128KB 104,729.18 ns 158.411 ns 148.178 ns -
TryComputeHash · BLAKE2b-256 · Managed 128KB 360,613.04 ns 767.925 ns 641.252 ns -
TryComputeHash · BLAKE2b-256 · BLAKE2b-256 (Konscious) 128KB 394,263.23 ns 1,333.598 ns 1,247.448 ns 132078 B

BLAKE2b-512

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · BLAKE2b-512 · BouncyCastle 128B 102.9 ns 0.26 ns 0.25 ns -
TryComputeHash · BLAKE2b-512 · AVX2 128B 108.4 ns 0.32 ns 0.29 ns -
TryComputeHash · BLAKE2b-512 · Managed 128B 365.6 ns 1.23 ns 1.15 ns -
TryComputeHash · BLAKE2b-512 · BLAKE2b-512 (Konscious) 128B 502.7 ns 3.95 ns 3.69 ns 1216 B
TryComputeHash · BLAKE2b-512 · BouncyCastle 137B 190.1 ns 0.86 ns 0.81 ns -
TryComputeHash · BLAKE2b-512 · AVX2 137B 205.8 ns 0.46 ns 0.41 ns -
TryComputeHash · BLAKE2b-512 · Managed 137B 713.0 ns 1.53 ns 1.28 ns -
TryComputeHash · BLAKE2b-512 · BLAKE2b-512 (Konscious) 137B 913.2 ns 2.70 ns 2.52 ns 1232 B
TryComputeHash · BLAKE2b-512 · BouncyCastle 1KB 718.2 ns 1.57 ns 1.31 ns -
TryComputeHash · BLAKE2b-512 · AVX2 1KB 823.2 ns 3.79 ns 3.55 ns -
TryComputeHash · BLAKE2b-512 · Managed 1KB 2,823.3 ns 7.98 ns 7.46 ns -
TryComputeHash · BLAKE2b-512 · BLAKE2b-512 (Konscious) 1KB 3,030.5 ns 7.91 ns 7.40 ns 2112 B
TryComputeHash · BLAKE2b-512 · BouncyCastle 1025B 805.0 ns 1.76 ns 1.65 ns -
TryComputeHash · BLAKE2b-512 · AVX2 1025B 921.8 ns 7.44 ns 6.96 ns -
TryComputeHash · BLAKE2b-512 · Managed 1025B 3,179.3 ns 11.48 ns 10.74 ns -
TryComputeHash · BLAKE2b-512 · BLAKE2b-512 (Konscious) 1025B 3,433.9 ns 12.32 ns 11.52 ns 2120 B
TryComputeHash · BLAKE2b-512 · BouncyCastle 8KB 5,594.6 ns 9.53 ns 8.92 ns -
TryComputeHash · BLAKE2b-512 · AVX2 8KB 6,538.1 ns 17.74 ns 16.59 ns -
TryComputeHash · BLAKE2b-512 · Managed 8KB 22,439.4 ns 40.78 ns 31.84 ns -
TryComputeHash · BLAKE2b-512 · BLAKE2b-512 (Konscious) 8KB 23,134.7 ns 47.25 ns 39.46 ns 9280 B
TryComputeHash · BLAKE2b-512 · BouncyCastle 128KB 89,132.1 ns 269.63 ns 239.02 ns -
TryComputeHash · BLAKE2b-512 · AVX2 128KB 104,527.7 ns 174.19 ns 154.42 ns -
TryComputeHash · BLAKE2b-512 · Managed 128KB 359,655.5 ns 700.37 ns 584.84 ns -
TryComputeHash · BLAKE2b-512 · BLAKE2b-512 (Konscious) 128KB 397,470.6 ns 1,673.69 ns 1,565.57 ns 132174 B

BLAKE2s-128

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · BLAKE2s-128 · Ssse3 128B 156.6 ns 0.24 ns 0.20 ns -
TryComputeHash · BLAKE2s-128 · AVX2 128B 156.9 ns 0.70 ns 0.65 ns -
TryComputeHash · BLAKE2s-128 · Sse2 128B 160.0 ns 0.16 ns 0.13 ns -
TryComputeHash · BLAKE2s-128 · BouncyCastle 128B 162.3 ns 2.45 ns 2.29 ns -
TryComputeHash · BLAKE2s-128 · Managed 128B 593.0 ns 3.78 ns 3.53 ns -
TryComputeHash · BLAKE2s-128 · AVX2 137B 235.4 ns 0.53 ns 0.50 ns -
TryComputeHash · BLAKE2s-128 · Ssse3 137B 239.2 ns 0.54 ns 0.50 ns -
TryComputeHash · BLAKE2s-128 · BouncyCastle 137B 243.1 ns 1.59 ns 1.24 ns -
TryComputeHash · BLAKE2s-128 · Sse2 137B 244.0 ns 0.18 ns 0.16 ns -
TryComputeHash · BLAKE2s-128 · Managed 137B 883.9 ns 3.99 ns 3.73 ns -
TryComputeHash · BLAKE2s-128 · AVX2 1KB 1,203.2 ns 2.61 ns 2.31 ns -
TryComputeHash · BLAKE2s-128 · Ssse3 1KB 1,215.2 ns 1.00 ns 0.94 ns -
TryComputeHash · BLAKE2s-128 · BouncyCastle 1KB 1,225.0 ns 3.62 ns 3.39 ns -
TryComputeHash · BLAKE2s-128 · Sse2 1KB 1,241.5 ns 1.66 ns 1.55 ns -
TryComputeHash · BLAKE2s-128 · Managed 1KB 4,644.0 ns 23.02 ns 21.53 ns -
TryComputeHash · BLAKE2s-128 · AVX2 1025B 1,287.3 ns 2.71 ns 2.27 ns -
TryComputeHash · BLAKE2s-128 · Ssse3 1025B 1,296.1 ns 0.91 ns 0.76 ns -
TryComputeHash · BLAKE2s-128 · BouncyCastle 1025B 1,299.3 ns 2.93 ns 2.74 ns -
TryComputeHash · BLAKE2s-128 · Sse2 1025B 1,324.3 ns 1.17 ns 1.10 ns -
TryComputeHash · BLAKE2s-128 · Managed 1025B 4,925.0 ns 22.87 ns 20.27 ns -
TryComputeHash · BLAKE2s-128 · AVX2 8KB 9,592.6 ns 15.91 ns 14.10 ns -
TryComputeHash · BLAKE2s-128 · BouncyCastle 8KB 9,659.6 ns 26.50 ns 22.13 ns -
TryComputeHash · BLAKE2s-128 · Ssse3 8KB 9,680.3 ns 10.52 ns 9.84 ns -
TryComputeHash · BLAKE2s-128 · Sse2 8KB 9,889.1 ns 10.53 ns 9.34 ns -
TryComputeHash · BLAKE2s-128 · Managed 8KB 37,084.5 ns 162.22 ns 151.74 ns -
TryComputeHash · BLAKE2s-128 · BouncyCastle 128KB 153,650.0 ns 491.31 ns 435.53 ns -
TryComputeHash · BLAKE2s-128 · AVX2 128KB 153,760.9 ns 565.84 ns 529.29 ns -
TryComputeHash · BLAKE2s-128 · Ssse3 128KB 154,896.7 ns 220.16 ns 205.94 ns -
TryComputeHash · BLAKE2s-128 · Sse2 128KB 158,149.3 ns 191.20 ns 178.85 ns -
TryComputeHash · BLAKE2s-128 · Managed 128KB 591,773.3 ns 1,006.67 ns 941.64 ns -

BLAKE2s-256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · BLAKE2s-256 · Ssse3 128B 157.7 ns 0.28 ns 0.26 ns -
TryComputeHash · BLAKE2s-256 · AVX2 128B 158.0 ns 0.38 ns 0.33 ns -
TryComputeHash · BLAKE2s-256 · Sse2 128B 160.8 ns 0.21 ns 0.19 ns -
TryComputeHash · BLAKE2s-256 · BouncyCastle 128B 161.7 ns 0.70 ns 0.62 ns -
TryComputeHash · BLAKE2s-256 · Managed 128B 594.6 ns 3.66 ns 3.43 ns -
TryComputeHash · BLAKE2s-256 · AVX2 137B 236.1 ns 1.17 ns 1.10 ns -
TryComputeHash · BLAKE2s-256 · Ssse3 137B 239.7 ns 0.30 ns 0.28 ns -
TryComputeHash · BLAKE2s-256 · Sse2 137B 244.5 ns 0.29 ns 0.26 ns -
TryComputeHash · BLAKE2s-256 · BouncyCastle 137B 245.6 ns 0.48 ns 0.43 ns -
TryComputeHash · BLAKE2s-256 · Managed 137B 883.9 ns 4.74 ns 4.43 ns -
TryComputeHash · BLAKE2s-256 · AVX2 1KB 1,206.2 ns 2.89 ns 2.56 ns -
TryComputeHash · BLAKE2s-256 · Ssse3 1KB 1,215.5 ns 1.54 ns 1.44 ns -
TryComputeHash · BLAKE2s-256 · BouncyCastle 1KB 1,230.9 ns 3.97 ns 3.52 ns -
TryComputeHash · BLAKE2s-256 · Sse2 1KB 1,240.8 ns 1.12 ns 0.99 ns -
TryComputeHash · BLAKE2s-256 · Managed 1KB 4,631.9 ns 15.03 ns 13.32 ns -
TryComputeHash · BLAKE2s-256 · AVX2 1025B 1,286.8 ns 5.32 ns 4.97 ns -
TryComputeHash · BLAKE2s-256 · Ssse3 1025B 1,297.5 ns 1.10 ns 1.03 ns -
TryComputeHash · BLAKE2s-256 · BouncyCastle 1025B 1,305.5 ns 4.15 ns 3.47 ns -
TryComputeHash · BLAKE2s-256 · Sse2 1025B 1,325.0 ns 0.99 ns 0.92 ns -
TryComputeHash · BLAKE2s-256 · Managed 1025B 4,926.4 ns 11.71 ns 10.38 ns -
TryComputeHash · BLAKE2s-256 · AVX2 8KB 9,621.8 ns 42.54 ns 39.79 ns -
TryComputeHash · BLAKE2s-256 · BouncyCastle 8KB 9,672.1 ns 23.61 ns 20.93 ns -
TryComputeHash · BLAKE2s-256 · Ssse3 8KB 9,679.6 ns 11.17 ns 10.44 ns -
TryComputeHash · BLAKE2s-256 · Sse2 8KB 9,885.4 ns 8.98 ns 8.40 ns -
TryComputeHash · BLAKE2s-256 · Managed 8KB 36,998.4 ns 113.31 ns 100.45 ns -
TryComputeHash · BLAKE2s-256 · AVX2 128KB 153,491.8 ns 438.60 ns 366.25 ns -
TryComputeHash · BLAKE2s-256 · BouncyCastle 128KB 153,809.1 ns 341.77 ns 302.97 ns -
TryComputeHash · BLAKE2s-256 · Ssse3 128KB 154,941.4 ns 165.67 ns 154.97 ns -
TryComputeHash · BLAKE2s-256 · Sse2 128KB 158,103.2 ns 176.54 ns 165.14 ns -
TryComputeHash · BLAKE2s-256 · Managed 128KB 592,589.6 ns 1,672.05 ns 1,482.23 ns -

BLAKE3

BLAKE3 is a modern hash function designed for extreme parallelism and speed. It can leverage tree hashing to process multiple chunks simultaneously, making it ideal for hashing large files. The Native (Rust) variant uses blake3-dotnet, which wraps the official Rust implementation via P/Invoke—this is the fastest option and recommended when native dependencies are acceptable.

The managed CryptoHives implementation uses SSSE3 SIMD instructions with optimized state management. At small inputs (128B-1kb), the SSSE3 path is ~1.4× slower than the native Rust implementation and ~9× faster than BouncyCastle. At large inputs (128KB), the gap widens to ~12× because the native implementation parallelizes chunk compression across SIMD lanes (AVX2/AVX-512 hash_many), while the managed version processes chunks sequentially.

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · BLAKE3 · Native 128B 101.4 ns 1.43 ns 1.33 ns -
TryComputeHash · BLAKE3 · Ssse3 128B 143.9 ns 1.93 ns 1.81 ns -
TryComputeHash · BLAKE3 · Managed 128B 542.1 ns 0.99 ns 0.78 ns -
TryComputeHash · BLAKE3 · BouncyCastle 128B 1,268.0 ns 4.94 ns 4.62 ns -
TryComputeHash · BLAKE3 · Native 137B 150.5 ns 0.31 ns 0.29 ns -
TryComputeHash · BLAKE3 · Ssse3 137B 221.8 ns 1.05 ns 0.98 ns -
TryComputeHash · BLAKE3 · Managed 137B 800.4 ns 3.44 ns 3.21 ns -
TryComputeHash · BLAKE3 · BouncyCastle 137B 1,876.7 ns 4.64 ns 4.11 ns -
TryComputeHash · BLAKE3 · Native 1KB 745.5 ns 1.46 ns 1.36 ns -
TryComputeHash · BLAKE3 · Ssse3 1KB 1,073.6 ns 3.03 ns 2.84 ns -
TryComputeHash · BLAKE3 · Managed 1KB 4,212.7 ns 19.71 ns 17.47 ns -
TryComputeHash · BLAKE3 · BouncyCastle 1KB 9,458.4 ns 32.20 ns 30.12 ns -
TryComputeHash · BLAKE3 · Native 1025B 849.1 ns 1.93 ns 1.71 ns -
TryComputeHash · BLAKE3 · Ssse3 1025B 1,225.7 ns 2.72 ns 2.27 ns -
TryComputeHash · BLAKE3 · Managed 1025B 4,714.9 ns 10.05 ns 8.91 ns -
TryComputeHash · BLAKE3 · BouncyCastle 1025B 10,585.0 ns 32.92 ns 30.79 ns 56 B
TryComputeHash · BLAKE3 · Native 8KB 1,166.5 ns 2.57 ns 2.28 ns -
TryComputeHash · BLAKE3 · Ssse3 8KB 10,208.8 ns 50.20 ns 44.50 ns -
TryComputeHash · BLAKE3 · Managed 8KB 35,299.8 ns 150.17 ns 133.12 ns -
TryComputeHash · BLAKE3 · BouncyCastle 8KB 81,207.4 ns 171.09 ns 151.67 ns 392 B
TryComputeHash · BLAKE3 · Native 128KB 14,276.1 ns 29.44 ns 22.99 ns -
TryComputeHash · BLAKE3 · Ssse3 128KB 163,229.8 ns 553.37 ns 462.09 ns -
TryComputeHash · BLAKE3 · Managed 128KB 564,676.6 ns 1,373.35 ns 1,146.81 ns -
TryComputeHash · BLAKE3 · BouncyCastle 128KB 1,281,956.7 ns 1,637.00 ns 1,366.97 ns 7112 B

Ascon Family

Ascon is a lightweight authenticated encryption and hashing family, selected as the NIST Lightweight Cryptography standard in 2023. It is designed for constrained environments (IoT, embedded systems) where resources are limited but security is paramount.

The managed implementation is approximately 33% faster than BouncyCastle across all input sizes, with consistent zero-allocation behavior regardless of input size—ideal for memory-constrained environments.

Ascon-Hash256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Ascon-Hash256 · Managed 128B 565.4 ns 3.23 ns 2.86 ns -
TryComputeHash · Ascon-Hash256 · BouncyCastle 128B 761.2 ns 2.59 ns 2.43 ns -
TryComputeHash · Ascon-Hash256 · Managed 137B 597.3 ns 2.11 ns 1.97 ns -
TryComputeHash · Ascon-Hash256 · BouncyCastle 137B 803.2 ns 2.82 ns 2.63 ns -
TryComputeHash · Ascon-Hash256 · Managed 1KB 3,662.4 ns 13.94 ns 13.04 ns -
TryComputeHash · Ascon-Hash256 · BouncyCastle 1KB 4,957.2 ns 21.35 ns 19.97 ns -
TryComputeHash · Ascon-Hash256 · Managed 1025B 3,661.7 ns 16.07 ns 15.03 ns -
TryComputeHash · Ascon-Hash256 · BouncyCastle 1025B 4,949.9 ns 18.97 ns 15.84 ns -
TryComputeHash · Ascon-Hash256 · Managed 8KB 28,385.4 ns 72.01 ns 67.35 ns -
TryComputeHash · Ascon-Hash256 · BouncyCastle 8KB 38,337.8 ns 76.00 ns 63.46 ns -
TryComputeHash · Ascon-Hash256 · Managed 128KB 452,199.2 ns 1,165.82 ns 973.51 ns -
TryComputeHash · Ascon-Hash256 · BouncyCastle 128KB 612,759.8 ns 1,521.26 ns 1,348.56 ns -

Ascon-XOF128

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Ascon-XOF128 · Managed 128B 566.8 ns 2.44 ns 2.28 ns -
TryComputeHash · Ascon-XOF128 · BouncyCastle 128B 769.2 ns 2.82 ns 2.64 ns -
TryComputeHash · Ascon-XOF128 · Managed 137B 598.4 ns 1.79 ns 1.50 ns -
TryComputeHash · Ascon-XOF128 · BouncyCastle 137B 799.3 ns 3.25 ns 3.04 ns -
TryComputeHash · Ascon-XOF128 · Managed 1KB 3,666.3 ns 9.90 ns 8.78 ns -
TryComputeHash · Ascon-XOF128 · BouncyCastle 1KB 4,896.0 ns 10.00 ns 8.35 ns -
TryComputeHash · Ascon-XOF128 · Managed 1025B 3,670.9 ns 11.41 ns 10.67 ns -
TryComputeHash · Ascon-XOF128 · BouncyCastle 1025B 4,893.9 ns 15.05 ns 13.34 ns -
TryComputeHash · Ascon-XOF128 · Managed 8KB 28,353.1 ns 48.73 ns 43.20 ns -
TryComputeHash · Ascon-XOF128 · BouncyCastle 8KB 38,066.7 ns 157.73 ns 139.83 ns -
TryComputeHash · Ascon-XOF128 · Managed 128KB 453,383.1 ns 1,562.41 ns 1,461.48 ns -
TryComputeHash · Ascon-XOF128 · BouncyCastle 128KB 606,453.8 ns 2,086.59 ns 1,849.71 ns -

KMAC Family

KMAC (Keccak Message Authentication Code) is defined in NIST SP 800-185 and provides a Keccak-based keyed hash function. Like SHA-3, SHAKE, and cSHAKE, KMAC shares the same optimized Keccak permutation core, benefiting from the scalar optimizations described in the Keccak section above.

The managed CryptoHives implementation is the fastest at all input sizes, outperforming the OS-provided KMAC by ~30% and BouncyCastle by ~48%. This advantage comes from the highly optimized scalar Keccak core that benefits both the hash computation and the KMAC-specific cSHAKE encoding overhead.

KMAC128

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · KMAC-128 · Managed 128B 663.0 ns 4.79 ns 4.48 ns -
TryComputeHash · KMAC-128 · OS Native 128B 1,002.6 ns 4.56 ns 4.05 ns 184 B
TryComputeHash · KMAC-128 · BouncyCastle 128B 1,968.0 ns 11.58 ns 10.27 ns 256 B
TryComputeHash · KMAC-128 · Managed 137B 658.5 ns 3.18 ns 2.97 ns -
TryComputeHash · KMAC-128 · OS Native 137B 1,021.5 ns 9.15 ns 8.11 ns 200 B
TryComputeHash · KMAC-128 · BouncyCastle 137B 1,964.5 ns 7.34 ns 6.51 ns 256 B
TryComputeHash · KMAC-128 · Managed 1KB 1,890.0 ns 6.21 ns 5.50 ns -
TryComputeHash · KMAC-128 · OS Native 1KB 2,480.8 ns 9.25 ns 8.66 ns 1080 B
TryComputeHash · KMAC-128 · BouncyCastle 1KB 3,778.8 ns 22.56 ns 21.10 ns 256 B
TryComputeHash · KMAC-128 · Managed 1025B 1,890.2 ns 7.46 ns 6.98 ns -
TryComputeHash · KMAC-128 · OS Native 1025B 2,491.5 ns 14.28 ns 13.36 ns 1088 B
TryComputeHash · KMAC-128 · BouncyCastle 1025B 3,799.9 ns 21.49 ns 20.10 ns 256 B
TryComputeHash · KMAC-128 · Managed 8KB 10,151.4 ns 46.49 ns 43.49 ns -
TryComputeHash · KMAC-128 · OS Native 8KB 12,855.6 ns 41.59 ns 34.73 ns 8248 B
TryComputeHash · KMAC-128 · BouncyCastle 8KB 16,693.3 ns 84.67 ns 75.06 ns 256 B
TryComputeHash · KMAC-128 · Managed 128KB 154,955.0 ns 883.94 ns 783.59 ns -
TryComputeHash · KMAC-128 · OS Native 128KB 223,594.4 ns 1,454.16 ns 1,360.22 ns 131151 B
TryComputeHash · KMAC-128 · BouncyCastle 128KB 240,585.1 ns 1,056.01 ns 987.80 ns 256 B

KMAC256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · KMAC-256 · Managed 128B 666.6 ns 3.65 ns 3.05 ns -
TryComputeHash · KMAC-256 · OS Native 128B 998.1 ns 4.72 ns 3.94 ns 184 B
TryComputeHash · KMAC-256 · BouncyCastle 128B 1,946.6 ns 10.75 ns 9.53 ns 256 B
TryComputeHash · KMAC-256 · Managed 137B 911.5 ns 3.40 ns 3.19 ns -
TryComputeHash · KMAC-256 · OS Native 137B 1,258.0 ns 11.30 ns 10.57 ns 200 B
TryComputeHash · KMAC-256 · BouncyCastle 137B 2,238.9 ns 15.88 ns 14.86 ns 256 B
TryComputeHash · KMAC-256 · Managed 1KB 2,067.5 ns 14.56 ns 13.62 ns -
TryComputeHash · KMAC-256 · OS Native 1KB 2,702.5 ns 6.43 ns 5.70 ns 1080 B
TryComputeHash · KMAC-256 · BouncyCastle 1KB 4,070.0 ns 28.05 ns 26.23 ns 256 B
TryComputeHash · KMAC-256 · Managed 1025B 2,056.8 ns 10.78 ns 9.56 ns -
TryComputeHash · KMAC-256 · OS Native 1025B 2,696.0 ns 17.38 ns 16.26 ns 1088 B
TryComputeHash · KMAC-256 · BouncyCastle 1025B 4,067.2 ns 24.84 ns 22.02 ns 256 B
TryComputeHash · KMAC-256 · Managed 8KB 12,491.8 ns 88.68 ns 82.95 ns -
TryComputeHash · KMAC-256 · OS Native 8KB 15,646.1 ns 139.58 ns 130.57 ns 8248 B
TryComputeHash · KMAC-256 · BouncyCastle 8KB 20,164.1 ns 110.33 ns 103.21 ns 256 B
TryComputeHash · KMAC-256 · Managed 128KB 189,838.3 ns 1,320.60 ns 1,235.29 ns -
TryComputeHash · KMAC-256 · OS Native 128KB 263,347.0 ns 1,215.03 ns 1,014.60 ns 131151 B
TryComputeHash · KMAC-256 · BouncyCastle 128KB 293,350.7 ns 1,650.91 ns 1,463.49 ns 256 B

Legacy Algorithms

MD5 and SHA-1 are provided exclusively for backward compatibility with legacy protocols and file formats (e.g., verifying old checksums, interoperability with legacy systems). Both algorithms have known cryptographic weaknesses:

  • MD5: Vulnerable to collision attacks since 2004; should not be used for security
  • SHA-1: Collision attacks demonstrated in 2017 (SHAttered); deprecated by NIST

The OS implementations are fastest due to potential hardware acceleration. The managed implementations prioritize correctness and portability over optimization, as these algorithms should only be used for non-security purposes.

MD5

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · MD5 · OS Native 128B 268.5 ns 0.41 ns 0.36 ns -
TryComputeHash · MD5 · Managed 128B 306.6 ns 1.40 ns 1.24 ns -
TryComputeHash · MD5 · BouncyCastle 128B 369.2 ns 0.55 ns 0.46 ns -
TryComputeHash · MD5 · OS Native 137B 266.5 ns 0.53 ns 0.47 ns -
TryComputeHash · MD5 · Managed 137B 312.9 ns 1.37 ns 1.29 ns -
TryComputeHash · MD5 · BouncyCastle 137B 368.4 ns 0.91 ns 0.85 ns -
TryComputeHash · MD5 · OS Native 1KB 1,369.3 ns 2.21 ns 2.07 ns -
TryComputeHash · MD5 · Managed 1KB 1,700.0 ns 9.62 ns 9.00 ns -
TryComputeHash · MD5 · BouncyCastle 1KB 2,011.0 ns 3.28 ns 2.56 ns -
TryComputeHash · MD5 · OS Native 1025B 1,369.3 ns 1.73 ns 1.62 ns -
TryComputeHash · MD5 · Managed 1025B 1,707.1 ns 5.34 ns 5.00 ns -
TryComputeHash · MD5 · BouncyCastle 1025B 2,008.3 ns 3.85 ns 3.41 ns -
TryComputeHash · MD5 · OS Native 8KB 10,153.5 ns 10.22 ns 9.56 ns -
TryComputeHash · MD5 · Managed 8KB 12,810.9 ns 75.89 ns 67.27 ns -
TryComputeHash · MD5 · BouncyCastle 8KB 15,129.1 ns 20.69 ns 17.27 ns -
TryComputeHash · MD5 · OS Native 128KB 160,797.5 ns 172.63 ns 153.03 ns -
TryComputeHash · MD5 · Managed 128KB 202,861.9 ns 884.49 ns 827.35 ns -
TryComputeHash · MD5 · BouncyCastle 128KB 240,458.7 ns 440.91 ns 412.42 ns -

SHA-1

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA-1 · OS Native 128B 228.4 ns 0.75 ns 0.70 ns -
TryComputeHash · SHA-1 · BouncyCastle 128B 441.7 ns 1.51 ns 1.41 ns -
TryComputeHash · SHA-1 · Managed 128B 455.4 ns 2.53 ns 2.37 ns -
TryComputeHash · SHA-1 · OS Native 137B 226.8 ns 0.62 ns 0.55 ns -
TryComputeHash · SHA-1 · BouncyCastle 137B 439.0 ns 1.81 ns 1.70 ns -
TryComputeHash · SHA-1 · Managed 137B 452.8 ns 1.66 ns 1.55 ns -
TryComputeHash · SHA-1 · OS Native 1KB 1,098.1 ns 5.82 ns 5.44 ns -
TryComputeHash · SHA-1 · BouncyCastle 1KB 2,426.2 ns 9.21 ns 8.62 ns -
TryComputeHash · SHA-1 · Managed 1KB 2,447.8 ns 7.84 ns 7.34 ns -
TryComputeHash · SHA-1 · OS Native 1025B 1,097.4 ns 5.38 ns 5.03 ns -
TryComputeHash · SHA-1 · BouncyCastle 1025B 2,419.9 ns 8.67 ns 6.77 ns -
TryComputeHash · SHA-1 · Managed 1025B 2,449.6 ns 15.64 ns 14.63 ns -
TryComputeHash · SHA-1 · OS Native 8KB 8,029.1 ns 10.25 ns 8.01 ns -
TryComputeHash · SHA-1 · BouncyCastle 8KB 18,214.6 ns 50.03 ns 41.78 ns -
TryComputeHash · SHA-1 · Managed 8KB 18,331.6 ns 64.63 ns 60.46 ns -
TryComputeHash · SHA-1 · OS Native 128KB 127,393.9 ns 355.35 ns 332.39 ns -
TryComputeHash · SHA-1 · BouncyCastle 128KB 290,083.7 ns 1,440.77 ns 1,347.69 ns -
TryComputeHash · SHA-1 · Managed 128KB 291,925.0 ns 902.88 ns 800.38 ns -

Regional Standards

These algorithms serve regulatory compliance requirements in specific jurisdictions. While not commonly used in Western applications, they are mandatory in their respective regions:

Algorithm Region Use Case
SM3 China Required for Chinese government and financial systems (GB/T 32905-2016)
Streebog Russia Russian federal standard GOST R 34.11-2012, required for government communications
Kupyna Ukraine Ukrainian national standard DSTU 7564:2014, required for government systems
LSH South Korea Korean national standard KS X 3262, approved by KCMVP
Whirlpool ISO/NESSIE European cryptographic standard (ISO/IEC 10118-3)
RIPEMD-160 Europe/Crypto Used in Bitcoin address generation and some European standards

The managed Streebog implementation is notably faster (1.4–1.8×) than reference implementations while using less memory—important for embedded systems in constrained environments. The managed Kupyna implementation uses T-table optimization (combining SubBytes, ShiftBytes, and MixColumns) to outperform BouncyCastle by 30–45%.

SM3

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SM3 · Managed 128B 692.6 ns 2.28 ns 2.14 ns -
TryComputeHash · SM3 · BouncyCastle 128B 782.8 ns 6.58 ns 5.14 ns -
TryComputeHash · SM3 · Managed 137B 698.3 ns 3.23 ns 3.02 ns -
TryComputeHash · SM3 · BouncyCastle 137B 782.5 ns 3.93 ns 3.49 ns -
TryComputeHash · SM3 · Managed 1KB 3,876.5 ns 21.10 ns 19.74 ns -
TryComputeHash · SM3 · BouncyCastle 1KB 4,387.0 ns 32.79 ns 27.38 ns -
TryComputeHash · SM3 · Managed 1025B 3,896.0 ns 24.37 ns 22.80 ns -
TryComputeHash · SM3 · BouncyCastle 1025B 4,372.0 ns 28.28 ns 26.45 ns -
TryComputeHash · SM3 · Managed 8KB 29,382.2 ns 136.44 ns 113.93 ns -
TryComputeHash · SM3 · BouncyCastle 8KB 33,101.4 ns 311.18 ns 275.85 ns -
TryComputeHash · SM3 · Managed 128KB 465,447.6 ns 3,096.12 ns 2,744.63 ns -
TryComputeHash · SM3 · BouncyCastle 128KB 523,842.6 ns 2,370.73 ns 2,101.59 ns -

Streebog-256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Streebog-256 · Managed 128B 2.384 μs 0.0084 μs 0.0078 μs -
TryComputeHash · Streebog-256 · OpenGost 128B 3.437 μs 0.0135 μs 0.0126 μs 408 B
TryComputeHash · Streebog-256 · BouncyCastle 128B 4.267 μs 0.0443 μs 0.0414 μs -
TryComputeHash · Streebog-256 · Managed 137B 2.406 μs 0.0106 μs 0.0099 μs -
TryComputeHash · Streebog-256 · OpenGost 137B 3.448 μs 0.0258 μs 0.0228 μs 408 B
TryComputeHash · Streebog-256 · BouncyCastle 137B 4.279 μs 0.0229 μs 0.0203 μs -
TryComputeHash · Streebog-256 · Managed 1KB 9.023 μs 0.0397 μs 0.0371 μs -
TryComputeHash · Streebog-256 · OpenGost 1KB 12.749 μs 0.1175 μs 0.1099 μs 408 B
TryComputeHash · Streebog-256 · BouncyCastle 1KB 16.247 μs 0.1146 μs 0.1072 μs -
TryComputeHash · Streebog-256 · Managed 1025B 9.069 μs 0.0466 μs 0.0436 μs -
TryComputeHash · Streebog-256 · OpenGost 1025B 12.721 μs 0.0680 μs 0.0603 μs 408 B
TryComputeHash · Streebog-256 · BouncyCastle 1025B 16.323 μs 0.1521 μs 0.1423 μs -
TryComputeHash · Streebog-256 · Managed 8KB 63.100 μs 0.2803 μs 0.2622 μs -
TryComputeHash · Streebog-256 · OpenGost 8KB 87.146 μs 0.7910 μs 0.7399 μs 408 B
TryComputeHash · Streebog-256 · BouncyCastle 8KB 111.290 μs 0.5364 μs 0.4479 μs -
TryComputeHash · Streebog-256 · Managed 128KB 975.244 μs 3.2397 μs 3.0304 μs -
TryComputeHash · Streebog-256 · OpenGost 128KB 1,369.374 μs 14.4580 μs 12.8166 μs 408 B
TryComputeHash · Streebog-256 · BouncyCastle 128KB 1,750.307 μs 9.4760 μs 8.8638 μs -

Streebog-512

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Streebog-512 · Managed 128B 2.392 μs 0.0112 μs 0.0105 μs -
TryComputeHash · Streebog-512 · OpenGost 128B 3.364 μs 0.0171 μs 0.0152 μs 176 B
TryComputeHash · Streebog-512 · BouncyCastle 128B 4.244 μs 0.0283 μs 0.0251 μs -
TryComputeHash · Streebog-512 · Managed 137B 2.383 μs 0.0068 μs 0.0057 μs -
TryComputeHash · Streebog-512 · OpenGost 137B 3.375 μs 0.0270 μs 0.0253 μs 176 B
TryComputeHash · Streebog-512 · BouncyCastle 137B 4.250 μs 0.0277 μs 0.0259 μs -
TryComputeHash · Streebog-512 · Managed 1KB 9.155 μs 0.0258 μs 0.0215 μs -
TryComputeHash · Streebog-512 · OpenGost 1KB 12.638 μs 0.0596 μs 0.0528 μs 176 B
TryComputeHash · Streebog-512 · BouncyCastle 1KB 16.219 μs 0.1396 μs 0.1306 μs -
TryComputeHash · Streebog-512 · Managed 1025B 9.118 μs 0.0309 μs 0.0289 μs -
TryComputeHash · Streebog-512 · OpenGost 1025B 12.688 μs 0.1122 μs 0.1049 μs 176 B
TryComputeHash · Streebog-512 · BouncyCastle 1025B 16.243 μs 0.1715 μs 0.1604 μs -
TryComputeHash · Streebog-512 · Managed 8KB 63.075 μs 0.2877 μs 0.2691 μs -
TryComputeHash · Streebog-512 · OpenGost 8KB 87.287 μs 0.7096 μs 0.6638 μs 176 B
TryComputeHash · Streebog-512 · BouncyCastle 8KB 112.265 μs 0.8141 μs 0.7615 μs -
TryComputeHash · Streebog-512 · Managed 128KB 961.985 μs 2.5844 μs 2.4174 μs -
TryComputeHash · Streebog-512 · OpenGost 128KB 1,365.909 μs 7.7554 μs 6.4761 μs 176 B
TryComputeHash · Streebog-512 · BouncyCastle 128KB 1,749.143 μs 10.1758 μs 9.5184 μs -

Whirlpool

Description TestDataSize Mean Error StdDev Median Allocated
TryComputeHash · Whirlpool · Managed 128B 1.345 μs 0.0265 μs 0.0261 μs 1.344 μs -
TryComputeHash · Whirlpool · Hashify .NET 128B 2.079 μs 0.0399 μs 0.0560 μs 2.075 μs 6336 B
TryComputeHash · Whirlpool · BouncyCastle 128B 5.107 μs 0.0535 μs 0.0501 μs 5.094 μs 56 B
TryComputeHash · Whirlpool · Managed 137B 1.328 μs 0.0087 μs 0.0082 μs 1.326 μs -
TryComputeHash · Whirlpool · Hashify .NET 137B 2.066 μs 0.0411 μs 0.0403 μs 2.053 μs 6328 B
TryComputeHash · Whirlpool · BouncyCastle 137B 5.143 μs 0.0814 μs 0.0761 μs 5.135 μs 56 B
TryComputeHash · Whirlpool · Managed 1KB 7.624 μs 0.1062 μs 0.0941 μs 7.621 μs -
TryComputeHash · Whirlpool · Hashify .NET 1KB 10.440 μs 0.0591 μs 0.0524 μs 10.418 μs 12032 B
TryComputeHash · Whirlpool · BouncyCastle 1KB 31.852 μs 0.6259 μs 0.6697 μs 31.603 μs 56 B
TryComputeHash · Whirlpool · Managed 1025B 9.148 μs 0.1751 μs 0.2338 μs 9.064 μs -
TryComputeHash · Whirlpool · Hashify .NET 1025B 10.854 μs 0.2152 μs 0.3086 μs 10.750 μs 12040 B
TryComputeHash · Whirlpool · BouncyCastle 1025B 31.762 μs 0.6230 μs 0.5827 μs 31.757 μs 56 B
TryComputeHash · Whirlpool · Managed 8KB 58.836 μs 1.1718 μs 3.0038 μs 57.556 μs -
TryComputeHash · Whirlpool · Hashify .NET 8KB 76.728 μs 0.6145 μs 0.5131 μs 76.800 μs 58624 B
TryComputeHash · Whirlpool · BouncyCastle 8KB 240.887 μs 1.0425 μs 0.9752 μs 240.714 μs 56 B
TryComputeHash · Whirlpool · Managed 128KB 913.005 μs 6.1540 μs 5.7564 μs 913.813 μs -
TryComputeHash · Whirlpool · Hashify .NET 128KB 1,310.202 μs 25.4117 μs 33.0423 μs 1,309.372 μs 857372 B
TryComputeHash · Whirlpool · BouncyCastle 128KB 3,860.332 μs 74.5913 μs 73.2586 μs 3,821.104 μs 56 B

RIPEMD-160

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · RIPEMD-160 · BouncyCastle 128B 641.7 ns 1.48 ns 1.31 ns -
TryComputeHash · RIPEMD-160 · Managed 128B 703.3 ns 4.18 ns 3.91 ns -
TryComputeHash · RIPEMD-160 · BouncyCastle 137B 638.4 ns 2.69 ns 2.39 ns -
TryComputeHash · RIPEMD-160 · Managed 137B 704.8 ns 2.92 ns 2.73 ns -
TryComputeHash · RIPEMD-160 · BouncyCastle 1KB 3,552.2 ns 7.05 ns 6.25 ns -
TryComputeHash · RIPEMD-160 · Managed 1KB 3,932.4 ns 28.19 ns 26.37 ns -
TryComputeHash · RIPEMD-160 · BouncyCastle 1025B 3,559.0 ns 9.88 ns 9.24 ns -
TryComputeHash · RIPEMD-160 · Managed 1025B 3,929.3 ns 18.79 ns 16.66 ns -
TryComputeHash · RIPEMD-160 · BouncyCastle 8KB 26,875.9 ns 56.46 ns 50.05 ns -
TryComputeHash · RIPEMD-160 · Managed 8KB 29,747.4 ns 181.94 ns 151.93 ns -
TryComputeHash · RIPEMD-160 · BouncyCastle 128KB 426,248.4 ns 1,480.62 ns 1,384.98 ns -
TryComputeHash · RIPEMD-160 · Managed 128KB 471,273.7 ns 2,642.99 ns 2,472.25 ns -

Kupyna-256 (DSTU 7564)

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Kupyna-256 · Managed 128B 2.219 μs 0.0095 μs 0.0079 μs -
TryComputeHash · Kupyna-256 · BouncyCastle 128B 3.254 μs 0.0117 μs 0.0104 μs -
TryComputeHash · Kupyna-256 · Managed 137B 2.215 μs 0.0149 μs 0.0132 μs -
TryComputeHash · Kupyna-256 · BouncyCastle 137B 3.259 μs 0.0130 μs 0.0122 μs -
TryComputeHash · Kupyna-256 · Managed 1KB 11.039 μs 0.0720 μs 0.0673 μs -
TryComputeHash · Kupyna-256 · BouncyCastle 1KB 16.235 μs 0.0594 μs 0.0496 μs -
TryComputeHash · Kupyna-256 · Managed 1025B 11.032 μs 0.1018 μs 0.0953 μs -
TryComputeHash · Kupyna-256 · BouncyCastle 1025B 16.327 μs 0.1228 μs 0.1149 μs -
TryComputeHash · Kupyna-256 · Managed 8KB 81.341 μs 0.4505 μs 0.3994 μs -
TryComputeHash · Kupyna-256 · BouncyCastle 8KB 120.315 μs 0.6395 μs 0.5982 μs -
TryComputeHash · Kupyna-256 · Managed 128KB 1,290.112 μs 11.5268 μs 10.7822 μs -
TryComputeHash · Kupyna-256 · BouncyCastle 128KB 1,894.703 μs 2.8173 μs 2.1996 μs -

Kupyna-384 (DSTU 7564)

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Kupyna-384 · Managed 128B 4.326 μs 0.0308 μs 0.0273 μs -
TryComputeHash · Kupyna-384 · BouncyCastle 128B 6.628 μs 0.0207 μs 0.0193 μs -
TryComputeHash · Kupyna-384 · Managed 137B 4.318 μs 0.0281 μs 0.0262 μs -
TryComputeHash · Kupyna-384 · BouncyCastle 137B 6.629 μs 0.0175 μs 0.0155 μs -
TryComputeHash · Kupyna-384 · Managed 1KB 16.415 μs 0.1117 μs 0.1045 μs -
TryComputeHash · Kupyna-384 · BouncyCastle 1KB 25.293 μs 0.1173 μs 0.1098 μs -
TryComputeHash · Kupyna-384 · Managed 1025B 16.453 μs 0.1207 μs 0.1129 μs -
TryComputeHash · Kupyna-384 · BouncyCastle 1025B 25.293 μs 0.0921 μs 0.0862 μs -
TryComputeHash · Kupyna-384 · Managed 8KB 112.686 μs 0.5792 μs 0.5418 μs -
TryComputeHash · Kupyna-384 · BouncyCastle 8KB 174.548 μs 0.7726 μs 0.6849 μs -
TryComputeHash · Kupyna-384 · Managed 128KB 1,765.146 μs 8.1956 μs 7.2652 μs -
TryComputeHash · Kupyna-384 · BouncyCastle 128KB 2,733.068 μs 13.6616 μs 11.4081 μs -

Kupyna-512 (DSTU 7564)

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Kupyna-512 · Managed 128B 4.319 μs 0.0257 μs 0.0227 μs -
TryComputeHash · Kupyna-512 · BouncyCastle 128B 6.620 μs 0.0240 μs 0.0201 μs -
TryComputeHash · Kupyna-512 · Managed 137B 4.325 μs 0.0205 μs 0.0182 μs -
TryComputeHash · Kupyna-512 · BouncyCastle 137B 6.630 μs 0.0184 μs 0.0163 μs -
TryComputeHash · Kupyna-512 · Managed 1KB 16.387 μs 0.1101 μs 0.1029 μs -
TryComputeHash · Kupyna-512 · BouncyCastle 1KB 25.276 μs 0.1349 μs 0.1262 μs -
TryComputeHash · Kupyna-512 · Managed 1025B 16.358 μs 0.0767 μs 0.0640 μs -
TryComputeHash · Kupyna-512 · BouncyCastle 1025B 25.428 μs 0.1356 μs 0.1202 μs -
TryComputeHash · Kupyna-512 · Managed 8KB 112.719 μs 0.3260 μs 0.2890 μs -
TryComputeHash · Kupyna-512 · BouncyCastle 8KB 174.818 μs 0.7154 μs 0.6342 μs -
TryComputeHash · Kupyna-512 · Managed 128KB 1,763.256 μs 8.4060 μs 7.8630 μs -
TryComputeHash · Kupyna-512 · BouncyCastle 128KB 2,731.852 μs 12.8837 μs 12.0514 μs -

LSH-256-256 (KS X 3262)

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · LSH-256-256 · Managed 128B 1.846 μs 0.0074 μs 0.0069 μs -
TryComputeHash · LSH-256-256 · Managed 137B 1.850 μs 0.0068 μs 0.0064 μs -
TryComputeHash · LSH-256-256 · Managed 1KB 8.122 μs 0.0345 μs 0.0306 μs -
TryComputeHash · LSH-256-256 · Managed 1025B 8.120 μs 0.0368 μs 0.0344 μs -
TryComputeHash · LSH-256-256 · Managed 8KB 58.127 μs 0.1996 μs 0.1867 μs -
TryComputeHash · LSH-256-256 · Managed 128KB 916.027 μs 2.7993 μs 2.6185 μs -

LSH-512-256 (KS X 3262)

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · LSH-512-256 · Managed 128B 1.038 μs 0.0047 μs 0.0042 μs -
TryComputeHash · LSH-512-256 · Managed 137B 1.034 μs 0.0050 μs 0.0046 μs -
TryComputeHash · LSH-512-256 · Managed 1KB 4.935 μs 0.0275 μs 0.0257 μs -
TryComputeHash · LSH-512-256 · Managed 1025B 4.946 μs 0.0079 μs 0.0070 μs -
TryComputeHash · LSH-512-256 · Managed 8KB 32.047 μs 0.2102 μs 0.1966 μs -
TryComputeHash · LSH-512-256 · Managed 128KB 495.859 μs 2.3437 μs 1.9571 μs -

LSH-512-512 (KS X 3262)

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · LSH-512-512 · Managed 128B 1.037 μs 0.0021 μs 0.0019 μs -
TryComputeHash · LSH-512-512 · Managed 137B 1.035 μs 0.0034 μs 0.0030 μs -
TryComputeHash · LSH-512-512 · Managed 1KB 4.954 μs 0.0181 μs 0.0170 μs -
TryComputeHash · LSH-512-512 · Managed 1025B 4.952 μs 0.0186 μs 0.0165 μs -
TryComputeHash · LSH-512-512 · Managed 8KB 31.994 μs 0.1344 μs 0.1258 μs -
TryComputeHash · LSH-512-512 · Managed 128KB 496.102 μs 2.4450 μs 2.2871 μs -

See also