Table of Contents

Cryptography Benchmarks

This page collects the BenchmarkDotNet measurements for every hash implementation that ships with CryptoHives.Foundation.Security.Cryptography. Each algorithm family has its own benchmark, measuring performance across representative payload sizes (128 bytes through 128 KiB) to capture both latency and throughput characteristics.

Updating benchmark documentation

  1. Run the cryptography benchmarks (either via the helper script or directly through BenchmarkSwitcher):
    # Run a specific algorithm family
    .\scripts\run-benchmarks.ps1 -Project Cryptography -Family BLAKE
    
    # Run a single algorithm
    .\scripts\run-benchmarks.ps1 -Project Cryptography -Family SHA256
    
    # Direct invocation
    cd tests/Security/Cryptography
    dotnet run -c Release --framework net10.0 -- --filter *SHA256*
    
  2. Mirror the freshly generated markdown into the documentation folder:
    .\scripts\update-benchmark-docs.ps1 -Package Cryptography
    
    The script trims the machine header from the BenchmarkDotNet export, writes it once to benchmarks/machine-spec.md, and stores each algorithm's benchmark table in its own file.

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
Method=TryComputeHash  Job=.NET 10.0  Runtime=.NET 10.0
Toolchain=net10.0

Note: Results are machine-specific and may vary between systems. Run benchmarks locally for your specific hardware.

Highlights by algorithm family

Family Leader Key Insight
SHA-2 OS (SHA-NI) Hardware SHA-NI gives OS ~4.5× advantage; managed beats BouncyCastle by ~13%
SHA-3/Keccak Managed Scalar Keccak outperforms OS by ~30% and SIMD variants by 25–35%
BLAKE2b/2s BouncyCastle Native optimizations give BouncyCastle ~15% edge; managed SIMD competitive
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 beats BouncyCastle by 30–45%
LSH Managed First .NET implementation; no BouncyCastle comparison available
KMAC Managed Managed beats OS by ~30% and BouncyCastle by ~48% at all sizes
Ascon Managed ~33% faster than BouncyCastle across all input sizes

Benchmark results by algorithm family

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 (106 ns @ 128B): Uses SHA-NI hardware acceleration
  • Managed (476 ns @ 128B): Optimized scalar with unrolled rounds
  • BouncyCastle (545 ns @ 128B): Reference scalar implementation

SHA-224

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA-224 · Managed 128B 477.8 ns 2.75 ns 2.44 ns -
TryComputeHash · SHA-224 · BouncyCastle 128B 554.2 ns 3.75 ns 3.51 ns -
TryComputeHash · SHA-224 · Managed 137B 477.9 ns 3.62 ns 3.38 ns -
TryComputeHash · SHA-224 · BouncyCastle 137B 555.5 ns 1.65 ns 1.37 ns -
TryComputeHash · SHA-224 · Managed 1KB 2,658.8 ns 19.53 ns 18.27 ns -
TryComputeHash · SHA-224 · BouncyCastle 1KB 3,084.0 ns 16.98 ns 15.88 ns -
TryComputeHash · SHA-224 · Managed 1025B 2,653.2 ns 8.80 ns 7.81 ns -
TryComputeHash · SHA-224 · BouncyCastle 1025B 3,068.3 ns 8.17 ns 6.83 ns -
TryComputeHash · SHA-224 · Managed 8KB 20,159.0 ns 104.45 ns 97.70 ns -
TryComputeHash · SHA-224 · BouncyCastle 8KB 23,220.9 ns 89.18 ns 79.06 ns -
TryComputeHash · SHA-224 · Managed 128KB 319,156.5 ns 1,513.25 ns 1,341.46 ns -
TryComputeHash · SHA-224 · BouncyCastle 128KB 368,010.8 ns 1,549.08 ns 1,449.01 ns -

SHA-256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA-256 · OS Native 128B 105.9 ns 0.10 ns 0.09 ns -
TryComputeHash · SHA-256 · Managed 128B 475.7 ns 1.77 ns 1.65 ns -
TryComputeHash · SHA-256 · BouncyCastle 128B 544.6 ns 2.10 ns 1.75 ns -
TryComputeHash · SHA-256 · OS Native 137B 107.1 ns 0.13 ns 0.11 ns -
TryComputeHash · SHA-256 · Managed 137B 479.5 ns 3.93 ns 3.68 ns -
TryComputeHash · SHA-256 · BouncyCastle 137B 557.0 ns 2.47 ns 2.19 ns -
TryComputeHash · SHA-256 · OS Native 1KB 463.9 ns 0.82 ns 0.76 ns -
TryComputeHash · SHA-256 · Managed 1KB 2,653.8 ns 4.73 ns 3.69 ns -
TryComputeHash · SHA-256 · BouncyCastle 1KB 3,029.7 ns 11.72 ns 10.96 ns -
TryComputeHash · SHA-256 · OS Native 1025B 464.7 ns 0.63 ns 0.58 ns -
TryComputeHash · SHA-256 · Managed 1025B 2,662.7 ns 9.97 ns 9.33 ns -
TryComputeHash · SHA-256 · BouncyCastle 1025B 3,030.8 ns 12.01 ns 11.23 ns -
TryComputeHash · SHA-256 · OS Native 8KB 3,279.1 ns 7.85 ns 7.34 ns -
TryComputeHash · SHA-256 · Managed 8KB 20,110.8 ns 80.43 ns 71.30 ns -
TryComputeHash · SHA-256 · BouncyCastle 8KB 22,913.2 ns 126.59 ns 112.22 ns -
TryComputeHash · SHA-256 · OS Native 128KB 51,507.6 ns 116.16 ns 102.97 ns -
TryComputeHash · SHA-256 · Managed 128KB 319,496.5 ns 1,958.00 ns 1,735.72 ns -
TryComputeHash · SHA-256 · BouncyCastle 128KB 363,341.9 ns 1,262.36 ns 1,119.05 ns -

SHA-384

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA-384 · OS Native 128B 347.2 ns 1.73 ns 1.53 ns -
TryComputeHash · SHA-384 · Managed 128B 408.4 ns 1.82 ns 1.70 ns -
TryComputeHash · SHA-384 · BouncyCastle 128B 476.3 ns 2.86 ns 2.67 ns -
TryComputeHash · SHA-384 · OS Native 137B 346.6 ns 1.34 ns 1.25 ns -
TryComputeHash · SHA-384 · Managed 137B 410.6 ns 1.18 ns 1.10 ns -
TryComputeHash · SHA-384 · BouncyCastle 137B 479.3 ns 2.93 ns 2.74 ns -
TryComputeHash · SHA-384 · OS Native 1KB 1,386.6 ns 6.47 ns 6.06 ns -
TryComputeHash · SHA-384 · Managed 1KB 1,800.5 ns 6.05 ns 5.37 ns -
TryComputeHash · SHA-384 · BouncyCastle 1KB 2,099.4 ns 8.92 ns 8.34 ns -
TryComputeHash · SHA-384 · OS Native 1025B 1,388.2 ns 5.00 ns 4.43 ns -
TryComputeHash · SHA-384 · Managed 1025B 1,806.5 ns 9.75 ns 9.12 ns -
TryComputeHash · SHA-384 · BouncyCastle 1025B 2,103.6 ns 5.42 ns 5.07 ns -
TryComputeHash · SHA-384 · OS Native 8KB 9,661.3 ns 32.85 ns 29.12 ns -
TryComputeHash · SHA-384 · Managed 8KB 12,947.5 ns 49.51 ns 41.34 ns -
TryComputeHash · SHA-384 · BouncyCastle 8KB 15,073.9 ns 67.43 ns 63.07 ns -
TryComputeHash · SHA-384 · OS Native 128KB 152,381.4 ns 858.42 ns 760.96 ns -
TryComputeHash · SHA-384 · Managed 128KB 202,934.2 ns 508.43 ns 450.71 ns -
TryComputeHash · SHA-384 · BouncyCastle 128KB 237,772.4 ns 988.84 ns 924.96 ns -

SHA-512

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA-512 · OS Native 128B 342.3 ns 1.80 ns 1.68 ns -
TryComputeHash · SHA-512 · Managed 128B 410.5 ns 1.77 ns 1.66 ns -
TryComputeHash · SHA-512 · BouncyCastle 128B 476.9 ns 2.13 ns 1.89 ns -
TryComputeHash · SHA-512 · OS Native 137B 341.9 ns 1.16 ns 1.03 ns -
TryComputeHash · SHA-512 · Managed 137B 414.2 ns 1.24 ns 1.04 ns -
TryComputeHash · SHA-512 · BouncyCastle 137B 481.8 ns 1.39 ns 1.23 ns -
TryComputeHash · SHA-512 · OS Native 1KB 1,388.8 ns 9.06 ns 8.47 ns -
TryComputeHash · SHA-512 · Managed 1KB 1,797.8 ns 6.02 ns 5.34 ns -
TryComputeHash · SHA-512 · BouncyCastle 1KB 2,098.4 ns 5.73 ns 4.79 ns -
TryComputeHash · SHA-512 · OS Native 1025B 1,385.7 ns 6.32 ns 5.91 ns -
TryComputeHash · SHA-512 · Managed 1025B 1,809.3 ns 14.31 ns 12.68 ns -
TryComputeHash · SHA-512 · BouncyCastle 1025B 2,106.2 ns 12.93 ns 11.46 ns -
TryComputeHash · SHA-512 · OS Native 8KB 9,697.6 ns 34.06 ns 31.86 ns -
TryComputeHash · SHA-512 · Managed 8KB 12,974.6 ns 41.78 ns 37.04 ns -
TryComputeHash · SHA-512 · BouncyCastle 8KB 15,086.1 ns 56.08 ns 52.46 ns -
TryComputeHash · SHA-512 · OS Native 128KB 152,037.3 ns 654.76 ns 580.42 ns -
TryComputeHash · SHA-512 · Managed 128KB 203,532.8 ns 721.82 ns 675.19 ns -
TryComputeHash · SHA-512 · BouncyCastle 128KB 237,491.1 ns 730.41 ns 647.49 ns -

SHA-512/224

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA-512/224 · Managed 128B 407.5 ns 1.55 ns 1.45 ns -
TryComputeHash · SHA-512/224 · BouncyCastle 128B 488.5 ns 2.02 ns 1.89 ns -
TryComputeHash · SHA-512/224 · Managed 137B 409.5 ns 1.52 ns 1.42 ns -
TryComputeHash · SHA-512/224 · BouncyCastle 137B 493.8 ns 2.88 ns 2.70 ns -
TryComputeHash · SHA-512/224 · Managed 1KB 1,824.8 ns 8.85 ns 8.28 ns -
TryComputeHash · SHA-512/224 · BouncyCastle 1KB 2,111.5 ns 5.59 ns 5.23 ns -
TryComputeHash · SHA-512/224 · Managed 1025B 1,804.4 ns 4.00 ns 3.34 ns -
TryComputeHash · SHA-512/224 · BouncyCastle 1025B 2,113.9 ns 10.21 ns 9.55 ns -
TryComputeHash · SHA-512/224 · Managed 8KB 12,933.2 ns 39.76 ns 37.20 ns -
TryComputeHash · SHA-512/224 · BouncyCastle 8KB 15,082.9 ns 48.16 ns 45.05 ns -
TryComputeHash · SHA-512/224 · Managed 128KB 203,338.8 ns 389.89 ns 345.63 ns -
TryComputeHash · SHA-512/224 · BouncyCastle 128KB 237,308.5 ns 533.76 ns 445.72 ns -

SHA-512/256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA-512/256 · Managed 128B 407.0 ns 0.83 ns 0.65 ns -
TryComputeHash · SHA-512/256 · BouncyCastle 128B 489.4 ns 1.40 ns 1.17 ns -
TryComputeHash · SHA-512/256 · Managed 137B 409.4 ns 1.55 ns 1.37 ns -
TryComputeHash · SHA-512/256 · BouncyCastle 137B 494.2 ns 4.63 ns 4.33 ns -
TryComputeHash · SHA-512/256 · Managed 1KB 1,800.5 ns 8.13 ns 7.20 ns -
TryComputeHash · SHA-512/256 · BouncyCastle 1KB 2,122.1 ns 10.22 ns 9.06 ns -
TryComputeHash · SHA-512/256 · Managed 1025B 1,801.0 ns 6.46 ns 5.72 ns -
TryComputeHash · SHA-512/256 · BouncyCastle 1025B 2,124.1 ns 13.17 ns 11.67 ns -
TryComputeHash · SHA-512/256 · Managed 8KB 12,936.4 ns 55.83 ns 52.23 ns -
TryComputeHash · SHA-512/256 · BouncyCastle 8KB 15,107.9 ns 79.57 ns 74.43 ns -
TryComputeHash · SHA-512/256 · Managed 128KB 203,372.9 ns 674.11 ns 630.56 ns -
TryComputeHash · SHA-512/256 · BouncyCastle 128KB 237,803.7 ns 777.49 ns 649.24 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.0 ns 0.69 ns 0.61 ns -
TryComputeHash · SHA3-224 · AVX2 128B 283.7 ns 0.85 ns 0.80 ns -
TryComputeHash · SHA3-224 · AVX512F 128B 293.6 ns 0.86 ns 0.81 ns -
TryComputeHash · SHA3-224 · BouncyCastle 128B 332.9 ns 0.92 ns 0.82 ns -
TryComputeHash · SHA3-224 · Managed 137B 211.1 ns 0.90 ns 0.84 ns -
TryComputeHash · SHA3-224 · AVX2 137B 282.7 ns 0.87 ns 0.82 ns -
TryComputeHash · SHA3-224 · AVX512F 137B 291.0 ns 0.75 ns 0.70 ns -
TryComputeHash · SHA3-224 · BouncyCastle 137B 331.1 ns 0.99 ns 0.87 ns -
TryComputeHash · SHA3-224 · Managed 1KB 1,635.5 ns 7.08 ns 6.62 ns -
TryComputeHash · SHA3-224 · AVX2 1KB 2,217.6 ns 7.35 ns 6.88 ns -
TryComputeHash · SHA3-224 · AVX512F 1KB 2,280.9 ns 6.59 ns 6.17 ns -
TryComputeHash · SHA3-224 · BouncyCastle 1KB 2,455.5 ns 11.45 ns 10.15 ns -
TryComputeHash · SHA3-224 · Managed 1025B 1,630.5 ns 5.98 ns 5.30 ns -
TryComputeHash · SHA3-224 · AVX2 1025B 2,221.0 ns 3.75 ns 3.51 ns -
TryComputeHash · SHA3-224 · AVX512F 1025B 2,281.7 ns 8.33 ns 7.79 ns -
TryComputeHash · SHA3-224 · BouncyCastle 1025B 2,455.3 ns 8.87 ns 7.87 ns -
TryComputeHash · SHA3-224 · Managed 8KB 11,272.2 ns 61.36 ns 57.40 ns -
TryComputeHash · SHA3-224 · AVX2 8KB 15,369.2 ns 47.67 ns 44.59 ns -
TryComputeHash · SHA3-224 · AVX512F 8KB 15,847.0 ns 36.74 ns 34.36 ns -
TryComputeHash · SHA3-224 · BouncyCastle 8KB 17,371.0 ns 74.00 ns 61.79 ns -
TryComputeHash · SHA3-224 · Managed 128KB 180,312.4 ns 646.17 ns 604.43 ns -
TryComputeHash · SHA3-224 · AVX2 128KB 246,186.0 ns 988.98 ns 876.71 ns -
TryComputeHash · SHA3-224 · AVX512F 128KB 253,422.3 ns 608.78 ns 569.45 ns -
TryComputeHash · SHA3-224 · BouncyCastle 128KB 277,812.2 ns 1,350.14 ns 1,196.86 ns -

SHA3-256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA3-256 · Managed 128B 208.8 ns 0.87 ns 0.81 ns -
TryComputeHash · SHA3-256 · OS Native 128B 273.1 ns 1.68 ns 1.58 ns -
TryComputeHash · SHA3-256 · AVX2 128B 280.1 ns 0.70 ns 0.65 ns -
TryComputeHash · SHA3-256 · AVX512F 128B 291.4 ns 0.79 ns 0.74 ns -
TryComputeHash · SHA3-256 · BouncyCastle 128B 330.4 ns 1.34 ns 1.19 ns -
TryComputeHash · SHA3-256 · Managed 137B 450.3 ns 2.00 ns 1.87 ns -
TryComputeHash · SHA3-256 · OS Native 137B 502.9 ns 2.64 ns 2.34 ns -
TryComputeHash · SHA3-256 · AVX2 137B 599.0 ns 1.62 ns 1.44 ns -
TryComputeHash · SHA3-256 · AVX512F 137B 615.6 ns 1.78 ns 1.58 ns -
TryComputeHash · SHA3-256 · BouncyCastle 137B 628.1 ns 2.21 ns 2.07 ns -
TryComputeHash · SHA3-256 · Managed 1KB 1,599.4 ns 5.20 ns 4.61 ns -
TryComputeHash · SHA3-256 · OS Native 1KB 1,912.2 ns 5.95 ns 5.56 ns -
TryComputeHash · SHA3-256 · AVX2 1KB 2,194.4 ns 5.90 ns 5.52 ns -
TryComputeHash · SHA3-256 · AVX512F 1KB 2,274.9 ns 7.04 ns 6.58 ns -
TryComputeHash · SHA3-256 · BouncyCastle 1KB 2,455.3 ns 7.73 ns 7.23 ns -
TryComputeHash · SHA3-256 · Managed 1025B 1,604.9 ns 6.70 ns 6.27 ns -
TryComputeHash · SHA3-256 · OS Native 1025B 1,909.8 ns 9.60 ns 8.51 ns -
TryComputeHash · SHA3-256 · AVX2 1025B 2,191.8 ns 6.26 ns 5.55 ns -
TryComputeHash · SHA3-256 · AVX512F 1025B 2,278.3 ns 4.61 ns 4.31 ns -
TryComputeHash · SHA3-256 · BouncyCastle 1025B 2,465.4 ns 10.44 ns 9.77 ns -
TryComputeHash · SHA3-256 · Managed 8KB 12,045.7 ns 53.66 ns 50.19 ns -
TryComputeHash · SHA3-256 · OS Native 8KB 14,299.9 ns 59.39 ns 55.55 ns -
TryComputeHash · SHA3-256 · AVX2 8KB 16,529.0 ns 61.12 ns 57.17 ns -
TryComputeHash · SHA3-256 · AVX512F 8KB 17,086.3 ns 24.39 ns 21.62 ns -
TryComputeHash · SHA3-256 · BouncyCastle 8KB 18,518.4 ns 51.01 ns 47.71 ns -
TryComputeHash · SHA3-256 · Managed 128KB 189,531.8 ns 831.72 ns 777.99 ns -
TryComputeHash · SHA3-256 · OS Native 128KB 226,179.4 ns 770.67 ns 643.54 ns -
TryComputeHash · SHA3-256 · AVX2 128KB 261,732.8 ns 794.16 ns 742.86 ns -
TryComputeHash · SHA3-256 · AVX512F 128KB 270,652.9 ns 558.58 ns 522.50 ns -
TryComputeHash · SHA3-256 · BouncyCastle 128KB 292,516.8 ns 1,033.31 ns 916.00 ns -

SHA3-384

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA3-384 · Managed 128B 426.9 ns 2.26 ns 2.12 ns -
TryComputeHash · SHA3-384 · OS Native 128B 500.4 ns 2.42 ns 2.14 ns -
TryComputeHash · SHA3-384 · AVX2 128B 578.3 ns 1.62 ns 1.52 ns -
TryComputeHash · SHA3-384 · AVX512F 128B 594.8 ns 1.71 ns 1.51 ns -
TryComputeHash · SHA3-384 · BouncyCastle 128B 624.0 ns 1.70 ns 1.59 ns -
TryComputeHash · SHA3-384 · Managed 137B 423.5 ns 2.17 ns 2.03 ns -
TryComputeHash · SHA3-384 · OS Native 137B 509.9 ns 2.39 ns 2.23 ns -
TryComputeHash · SHA3-384 · AVX2 137B 573.9 ns 1.65 ns 1.55 ns -
TryComputeHash · SHA3-384 · AVX512F 137B 590.8 ns 1.96 ns 1.84 ns -
TryComputeHash · SHA3-384 · BouncyCastle 137B 627.3 ns 3.13 ns 2.77 ns -
TryComputeHash · SHA3-384 · Managed 1KB 1,964.1 ns 8.64 ns 7.66 ns -
TryComputeHash · SHA3-384 · OS Native 1KB 2,367.2 ns 5.95 ns 4.97 ns -
TryComputeHash · SHA3-384 · AVX2 1KB 2,706.5 ns 5.90 ns 5.52 ns -
TryComputeHash · SHA3-384 · AVX512F 1KB 2,775.3 ns 8.08 ns 7.56 ns -
TryComputeHash · SHA3-384 · BouncyCastle 1KB 3,042.4 ns 8.91 ns 7.44 ns -
TryComputeHash · SHA3-384 · Managed 1025B 1,968.4 ns 7.80 ns 6.52 ns -
TryComputeHash · SHA3-384 · OS Native 1025B 2,365.9 ns 9.99 ns 8.34 ns -
TryComputeHash · SHA3-384 · AVX2 1025B 2,698.1 ns 7.54 ns 5.88 ns -
TryComputeHash · SHA3-384 · AVX512F 1025B 2,775.3 ns 8.47 ns 7.92 ns -
TryComputeHash · SHA3-384 · BouncyCastle 1025B 3,049.1 ns 10.22 ns 9.56 ns -
TryComputeHash · SHA3-384 · Managed 8KB 15,436.4 ns 64.35 ns 60.19 ns -
TryComputeHash · SHA3-384 · OS Native 8KB 18,445.2 ns 120.56 ns 112.77 ns -
TryComputeHash · SHA3-384 · AVX2 8KB 21,322.1 ns 58.38 ns 54.61 ns -
TryComputeHash · SHA3-384 · AVX512F 8KB 21,829.7 ns 49.24 ns 46.06 ns -
TryComputeHash · SHA3-384 · BouncyCastle 8KB 23,753.0 ns 85.34 ns 71.26 ns -
TryComputeHash · SHA3-384 · Managed 128KB 245,891.6 ns 1,305.02 ns 1,220.72 ns -
TryComputeHash · SHA3-384 · OS Native 128KB 293,420.5 ns 1,306.29 ns 1,090.81 ns -
TryComputeHash · SHA3-384 · AVX2 128KB 337,590.9 ns 911.71 ns 852.82 ns -
TryComputeHash · SHA3-384 · AVX512F 128KB 348,559.4 ns 750.71 ns 702.22 ns -
TryComputeHash · SHA3-384 · BouncyCastle 128KB 378,405.6 ns 1,033.03 ns 915.76 ns -

SHA3-512

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA3-512 · Managed 128B 402.0 ns 2.03 ns 1.90 ns -
TryComputeHash · SHA3-512 · OS Native 128B 508.1 ns 2.03 ns 1.70 ns -
TryComputeHash · SHA3-512 · AVX2 128B 549.3 ns 1.56 ns 1.46 ns -
TryComputeHash · SHA3-512 · AVX512F 128B 565.3 ns 1.66 ns 1.55 ns -
TryComputeHash · SHA3-512 · BouncyCastle 128B 625.9 ns 5.15 ns 4.57 ns -
TryComputeHash · SHA3-512 · Managed 137B 400.6 ns 1.30 ns 1.21 ns -
TryComputeHash · SHA3-512 · OS Native 137B 502.7 ns 3.19 ns 2.98 ns -
TryComputeHash · SHA3-512 · AVX2 137B 545.4 ns 1.10 ns 1.03 ns -
TryComputeHash · SHA3-512 · AVX512F 137B 563.8 ns 1.52 ns 1.42 ns -
TryComputeHash · SHA3-512 · BouncyCastle 137B 624.7 ns 2.23 ns 1.97 ns -
TryComputeHash · SHA3-512 · Managed 1KB 2,929.5 ns 9.12 ns 7.61 ns -
TryComputeHash · SHA3-512 · OS Native 1KB 3,519.9 ns 18.26 ns 17.08 ns -
TryComputeHash · SHA3-512 · AVX2 1KB 4,023.6 ns 9.42 ns 8.35 ns -
TryComputeHash · SHA3-512 · AVX512F 1KB 4,151.4 ns 12.26 ns 11.47 ns -
TryComputeHash · SHA3-512 · BouncyCastle 1KB 4,496.8 ns 21.77 ns 19.30 ns -
TryComputeHash · SHA3-512 · Managed 1025B 2,932.0 ns 11.60 ns 10.28 ns -
TryComputeHash · SHA3-512 · OS Native 1025B 3,514.2 ns 22.02 ns 20.60 ns -
TryComputeHash · SHA3-512 · AVX2 1025B 4,036.2 ns 11.24 ns 10.51 ns -
TryComputeHash · SHA3-512 · AVX512F 1025B 4,151.0 ns 9.89 ns 9.25 ns -
TryComputeHash · SHA3-512 · BouncyCastle 1025B 4,495.4 ns 26.49 ns 24.78 ns -
TryComputeHash · SHA3-512 · Managed 8KB 22,100.6 ns 137.03 ns 128.18 ns -
TryComputeHash · SHA3-512 · OS Native 8KB 26,472.7 ns 130.16 ns 121.75 ns -
TryComputeHash · SHA3-512 · AVX2 8KB 30,487.9 ns 39.67 ns 37.11 ns -
TryComputeHash · SHA3-512 · AVX512F 8KB 31,315.5 ns 54.82 ns 51.28 ns -
TryComputeHash · SHA3-512 · BouncyCastle 8KB 34,251.3 ns 145.04 ns 135.67 ns -
TryComputeHash · SHA3-512 · Managed 128KB 352,819.9 ns 1,937.21 ns 1,717.29 ns -
TryComputeHash · SHA3-512 · OS Native 128KB 420,227.6 ns 2,276.89 ns 2,129.80 ns -
TryComputeHash · SHA3-512 · AVX2 128KB 486,894.1 ns 815.49 ns 762.81 ns -
TryComputeHash · SHA3-512 · AVX512F 128KB 501,264.3 ns 2,018.41 ns 1,888.02 ns -
TryComputeHash · SHA3-512 · BouncyCastle 128KB 559,765.9 ns 2,256.90 ns 2,000.68 ns -

Keccak Family

Keccak-256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Keccak-256 · Managed 128B 209.6 ns 0.47 ns 0.41 ns -
TryComputeHash · Keccak-256 · AVX2 128B 280.6 ns 0.63 ns 0.59 ns -
TryComputeHash · Keccak-256 · AVX512F 128B 291.3 ns 0.91 ns 0.85 ns -
TryComputeHash · Keccak-256 · BouncyCastle 128B 330.6 ns 1.21 ns 1.01 ns -
TryComputeHash · Keccak-256 · Managed 137B 450.5 ns 1.77 ns 1.65 ns -
TryComputeHash · Keccak-256 · AVX2 137B 599.2 ns 2.09 ns 1.95 ns -
TryComputeHash · Keccak-256 · AVX512F 137B 618.0 ns 1.62 ns 1.44 ns -
TryComputeHash · Keccak-256 · BouncyCastle 137B 627.8 ns 2.70 ns 2.52 ns -
TryComputeHash · Keccak-256 · Managed 1KB 1,603.2 ns 3.09 ns 2.58 ns -
TryComputeHash · Keccak-256 · AVX2 1KB 2,187.7 ns 6.83 ns 6.39 ns -
TryComputeHash · Keccak-256 · AVX512F 1KB 2,280.9 ns 6.47 ns 6.05 ns -
TryComputeHash · Keccak-256 · BouncyCastle 1KB 2,452.6 ns 7.81 ns 7.31 ns -
TryComputeHash · Keccak-256 · Managed 1025B 1,603.6 ns 9.09 ns 8.51 ns -
TryComputeHash · Keccak-256 · AVX2 1025B 2,188.2 ns 6.32 ns 5.91 ns -
TryComputeHash · Keccak-256 · AVX512F 1025B 2,275.6 ns 5.25 ns 4.91 ns -
TryComputeHash · Keccak-256 · BouncyCastle 1025B 2,456.8 ns 9.22 ns 8.17 ns -
TryComputeHash · Keccak-256 · Managed 8KB 12,068.1 ns 29.65 ns 24.76 ns -
TryComputeHash · Keccak-256 · AVX2 8KB 16,474.6 ns 43.59 ns 38.64 ns -
TryComputeHash · Keccak-256 · AVX512F 8KB 17,112.5 ns 35.77 ns 29.87 ns -
TryComputeHash · Keccak-256 · BouncyCastle 8KB 18,558.5 ns 56.69 ns 50.26 ns -
TryComputeHash · Keccak-256 · Managed 128KB 189,304.2 ns 471.95 ns 368.47 ns -
TryComputeHash · Keccak-256 · AVX2 128KB 260,115.2 ns 716.76 ns 635.39 ns -
TryComputeHash · Keccak-256 · AVX512F 128KB 270,612.5 ns 1,132.29 ns 1,059.14 ns -
TryComputeHash · Keccak-256 · BouncyCastle 128KB 292,417.8 ns 931.83 ns 778.12 ns -

Keccak-384

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Keccak-384 · Managed 128B 427.2 ns 1.25 ns 1.11 ns -
TryComputeHash · Keccak-384 · AVX2 128B 579.3 ns 2.15 ns 1.91 ns -
TryComputeHash · Keccak-384 · AVX512F 128B 596.4 ns 1.72 ns 1.53 ns -
TryComputeHash · Keccak-384 · BouncyCastle 128B 622.4 ns 1.59 ns 1.24 ns -
TryComputeHash · Keccak-384 · Managed 137B 423.5 ns 1.15 ns 0.96 ns -
TryComputeHash · Keccak-384 · AVX2 137B 579.5 ns 1.31 ns 1.23 ns -
TryComputeHash · Keccak-384 · AVX512F 137B 592.1 ns 1.38 ns 1.29 ns -
TryComputeHash · Keccak-384 · BouncyCastle 137B 624.8 ns 2.31 ns 1.93 ns -
TryComputeHash · Keccak-384 · Managed 1KB 1,966.5 ns 12.97 ns 12.14 ns -
TryComputeHash · Keccak-384 · AVX2 1KB 2,706.6 ns 6.45 ns 6.03 ns -
TryComputeHash · Keccak-384 · AVX512F 1KB 2,780.6 ns 8.18 ns 7.65 ns -
TryComputeHash · Keccak-384 · BouncyCastle 1KB 3,067.9 ns 12.27 ns 11.48 ns -
TryComputeHash · Keccak-384 · Managed 1025B 1,969.1 ns 7.49 ns 7.01 ns -
TryComputeHash · Keccak-384 · AVX2 1025B 2,698.2 ns 3.58 ns 3.18 ns -
TryComputeHash · Keccak-384 · AVX512F 1025B 2,777.3 ns 3.40 ns 3.18 ns -
TryComputeHash · Keccak-384 · BouncyCastle 1025B 3,038.3 ns 5.97 ns 4.98 ns -
TryComputeHash · Keccak-384 · Managed 8KB 15,424.2 ns 57.98 ns 54.24 ns -
TryComputeHash · Keccak-384 · AVX2 8KB 21,243.9 ns 46.84 ns 43.81 ns -
TryComputeHash · Keccak-384 · AVX512F 8KB 21,837.4 ns 65.96 ns 58.47 ns -
TryComputeHash · Keccak-384 · BouncyCastle 8KB 23,770.6 ns 49.33 ns 43.73 ns -
TryComputeHash · Keccak-384 · Managed 128KB 246,315.5 ns 2,286.23 ns 2,026.68 ns -
TryComputeHash · Keccak-384 · AVX2 128KB 337,710.0 ns 573.88 ns 536.81 ns -
TryComputeHash · Keccak-384 · AVX512F 128KB 348,988.1 ns 647.17 ns 573.70 ns -
TryComputeHash · Keccak-384 · BouncyCastle 128KB 379,818.2 ns 800.01 ns 709.19 ns -

Keccak-512

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Keccak-512 · Managed 128B 402.4 ns 1.96 ns 1.84 ns -
TryComputeHash · Keccak-512 · AVX2 128B 549.6 ns 0.94 ns 0.88 ns -
TryComputeHash · Keccak-512 · AVX512F 128B 566.7 ns 1.54 ns 1.44 ns -
TryComputeHash · Keccak-512 · BouncyCastle 128B 625.9 ns 2.26 ns 2.12 ns -
TryComputeHash · Keccak-512 · Managed 137B 399.1 ns 1.11 ns 0.99 ns -
TryComputeHash · Keccak-512 · AVX2 137B 545.8 ns 1.67 ns 1.56 ns -
TryComputeHash · Keccak-512 · AVX512F 137B 568.2 ns 1.27 ns 1.12 ns -
TryComputeHash · Keccak-512 · BouncyCastle 137B 624.9 ns 2.09 ns 1.86 ns -
TryComputeHash · Keccak-512 · Managed 1KB 2,936.7 ns 12.89 ns 12.06 ns -
TryComputeHash · Keccak-512 · AVX2 1KB 4,029.4 ns 13.89 ns 11.60 ns -
TryComputeHash · Keccak-512 · AVX512F 1KB 4,154.9 ns 14.25 ns 12.63 ns -
TryComputeHash · Keccak-512 · BouncyCastle 1KB 4,509.7 ns 6.93 ns 5.41 ns -
TryComputeHash · Keccak-512 · Managed 1025B 2,937.1 ns 16.07 ns 15.03 ns -
TryComputeHash · Keccak-512 · AVX2 1025B 4,040.1 ns 12.55 ns 11.74 ns -
TryComputeHash · Keccak-512 · AVX512F 1025B 4,160.6 ns 13.79 ns 12.90 ns -
TryComputeHash · Keccak-512 · BouncyCastle 1025B 4,499.2 ns 18.01 ns 15.97 ns -
TryComputeHash · Keccak-512 · Managed 8KB 22,091.8 ns 103.18 ns 91.46 ns -
TryComputeHash · Keccak-512 · AVX2 8KB 30,444.7 ns 52.96 ns 49.54 ns -
TryComputeHash · Keccak-512 · AVX512F 8KB 31,330.5 ns 63.21 ns 59.12 ns -
TryComputeHash · Keccak-512 · BouncyCastle 8KB 34,086.9 ns 99.24 ns 82.87 ns -
TryComputeHash · Keccak-512 · Managed 128KB 353,099.0 ns 1,907.87 ns 1,784.63 ns -
TryComputeHash · Keccak-512 · AVX2 128KB 485,847.9 ns 574.51 ns 509.29 ns -
TryComputeHash · Keccak-512 · AVX512F 128KB 500,355.1 ns 1,233.11 ns 1,153.45 ns -
TryComputeHash · Keccak-512 · BouncyCastle 128KB 553,680.8 ns 2,674.98 ns 2,371.30 ns -

SHAKE Family

SHAKE128

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHAKE128 · Managed 128B 242.2 ns 0.85 ns 0.71 ns -
TryComputeHash · SHAKE128 · AVX2 128B 316.2 ns 0.92 ns 0.86 ns -
TryComputeHash · SHAKE128 · AVX512F 128B 323.9 ns 0.63 ns 0.59 ns -
TryComputeHash · SHAKE128 · BouncyCastle 128B 331.1 ns 0.96 ns 0.90 ns -
TryComputeHash · SHAKE128 · OS Native 128B 353.8 ns 0.86 ns 0.72 ns -
TryComputeHash · SHAKE128 · Managed 137B 241.0 ns 1.74 ns 1.63 ns -
TryComputeHash · SHAKE128 · AVX2 137B 313.3 ns 1.01 ns 0.95 ns -
TryComputeHash · SHAKE128 · AVX512F 137B 320.5 ns 0.58 ns 0.51 ns -
TryComputeHash · SHAKE128 · BouncyCastle 137B 331.6 ns 0.84 ns 0.75 ns -
TryComputeHash · SHAKE128 · OS Native 137B 355.2 ns 1.28 ns 1.20 ns -
TryComputeHash · SHAKE128 · Managed 1KB 1,470.3 ns 8.81 ns 8.24 ns -
TryComputeHash · SHAKE128 · OS Native 1KB 1,768.1 ns 9.11 ns 7.61 ns -
TryComputeHash · SHAKE128 · AVX2 1KB 1,985.3 ns 8.25 ns 7.31 ns -
TryComputeHash · SHAKE128 · AVX512F 1KB 2,048.5 ns 5.70 ns 5.33 ns -
TryComputeHash · SHAKE128 · BouncyCastle 1KB 2,160.5 ns 6.27 ns 5.55 ns -
TryComputeHash · SHAKE128 · Managed 1025B 1,469.0 ns 4.37 ns 3.87 ns -
TryComputeHash · SHAKE128 · OS Native 1025B 1,765.2 ns 4.26 ns 3.99 ns -
TryComputeHash · SHAKE128 · AVX2 1025B 1,984.3 ns 4.49 ns 3.98 ns -
TryComputeHash · SHAKE128 · AVX512F 1025B 2,051.2 ns 4.02 ns 3.57 ns -
TryComputeHash · SHAKE128 · BouncyCastle 1025B 2,163.8 ns 9.86 ns 8.74 ns -
TryComputeHash · SHAKE128 · Managed 8KB 9,751.8 ns 42.73 ns 37.88 ns -
TryComputeHash · SHAKE128 · OS Native 8KB 11,727.2 ns 70.74 ns 62.71 ns -
TryComputeHash · SHAKE128 · AVX2 8KB 13,318.4 ns 26.75 ns 25.02 ns -
TryComputeHash · SHAKE128 · AVX512F 8KB 13,786.4 ns 17.17 ns 15.22 ns -
TryComputeHash · SHAKE128 · BouncyCastle 8KB 15,047.9 ns 49.30 ns 46.11 ns -
TryComputeHash · SHAKE128 · Managed 128KB 154,600.7 ns 538.23 ns 477.13 ns -
TryComputeHash · SHAKE128 · OS Native 128KB 184,772.8 ns 1,558.66 ns 1,457.98 ns -
TryComputeHash · SHAKE128 · AVX2 128KB 211,494.2 ns 268.90 ns 238.37 ns -
TryComputeHash · SHAKE128 · AVX512F 128KB 218,372.0 ns 388.23 ns 363.15 ns -
TryComputeHash · SHAKE128 · BouncyCastle 128KB 238,364.1 ns 688.62 ns 644.14 ns -

SHAKE256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHAKE256 · Managed 128B 250.0 ns 1.18 ns 1.05 ns -
TryComputeHash · SHAKE256 · AVX2 128B 324.9 ns 0.69 ns 0.64 ns -
TryComputeHash · SHAKE256 · BouncyCastle 128B 331.2 ns 1.71 ns 1.60 ns -
TryComputeHash · SHAKE256 · AVX512F 128B 333.0 ns 0.80 ns 0.71 ns -
TryComputeHash · SHAKE256 · OS Native 128B 352.5 ns 1.87 ns 1.75 ns -
TryComputeHash · SHAKE256 · Managed 137B 490.8 ns 2.18 ns 2.04 ns -
TryComputeHash · SHAKE256 · OS Native 137B 583.9 ns 2.07 ns 1.73 ns -
TryComputeHash · SHAKE256 · BouncyCastle 137B 629.2 ns 2.77 ns 2.59 ns -
TryComputeHash · SHAKE256 · AVX2 137B 641.6 ns 2.42 ns 2.26 ns -
TryComputeHash · SHAKE256 · AVX512F 137B 659.1 ns 1.79 ns 1.67 ns -
TryComputeHash · SHAKE256 · Managed 1KB 1,644.5 ns 6.84 ns 6.40 ns -
TryComputeHash · SHAKE256 · OS Native 1KB 1,995.6 ns 7.25 ns 6.43 ns -
TryComputeHash · SHAKE256 · AVX2 1KB 2,225.3 ns 3.80 ns 3.37 ns -
TryComputeHash · SHAKE256 · AVX512F 1KB 2,324.8 ns 5.71 ns 5.06 ns -
TryComputeHash · SHAKE256 · BouncyCastle 1KB 2,460.1 ns 9.68 ns 9.05 ns -
TryComputeHash · SHAKE256 · Managed 1025B 1,639.1 ns 3.78 ns 3.53 ns -
TryComputeHash · SHAKE256 · OS Native 1025B 2,000.1 ns 12.67 ns 11.24 ns -
TryComputeHash · SHAKE256 · AVX2 1025B 2,225.6 ns 9.82 ns 9.18 ns -
TryComputeHash · SHAKE256 · AVX512F 1025B 2,324.4 ns 9.18 ns 8.59 ns -
TryComputeHash · SHAKE256 · BouncyCastle 1025B 2,459.1 ns 10.70 ns 10.01 ns -
TryComputeHash · SHAKE256 · Managed 8KB 12,136.0 ns 80.99 ns 75.76 ns -
TryComputeHash · SHAKE256 · OS Native 8KB 14,395.7 ns 53.46 ns 50.01 ns -
TryComputeHash · SHAKE256 · AVX2 8KB 16,526.7 ns 61.52 ns 57.55 ns -
TryComputeHash · SHAKE256 · AVX512F 8KB 17,242.2 ns 31.10 ns 29.09 ns -
TryComputeHash · SHAKE256 · BouncyCastle 8KB 18,505.7 ns 66.80 ns 62.48 ns -
TryComputeHash · SHAKE256 · Managed 128KB 189,786.5 ns 576.15 ns 510.74 ns -
TryComputeHash · SHAKE256 · OS Native 128KB 226,152.7 ns 968.64 ns 906.07 ns -
TryComputeHash · SHAKE256 · AVX2 128KB 259,879.5 ns 854.69 ns 799.48 ns -
TryComputeHash · SHAKE256 · AVX512F 128KB 270,569.7 ns 852.96 ns 797.86 ns -
TryComputeHash · SHAKE256 · BouncyCastle 128KB 291,624.5 ns 755.72 ns 631.06 ns -

cSHAKE Family

cSHAKE128

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · cSHAKE128 · Managed 128B 257.6 ns 5.07 ns 6.94 ns -
TryComputeHash · cSHAKE128 · AVX2 128B 328.2 ns 5.12 ns 4.79 ns -
TryComputeHash · cSHAKE128 · AVX512F 128B 336.4 ns 6.59 ns 6.16 ns -
TryComputeHash · cSHAKE128 · BouncyCastle 128B 346.5 ns 6.67 ns 6.24 ns -
TryComputeHash · cSHAKE128 · Managed 137B 256.5 ns 5.08 ns 6.95 ns -
TryComputeHash · cSHAKE128 · AVX2 137B 326.4 ns 6.43 ns 7.40 ns -
TryComputeHash · cSHAKE128 · AVX512F 137B 332.0 ns 5.15 ns 4.81 ns -
TryComputeHash · cSHAKE128 · BouncyCastle 137B 348.1 ns 6.74 ns 7.21 ns -
TryComputeHash · cSHAKE128 · Managed 1KB 1,556.4 ns 29.02 ns 27.15 ns -
TryComputeHash · cSHAKE128 · AVX2 1KB 2,023.8 ns 30.77 ns 27.28 ns -
TryComputeHash · cSHAKE128 · AVX512F 1KB 2,089.4 ns 41.56 ns 46.19 ns -
TryComputeHash · cSHAKE128 · BouncyCastle 1KB 2,233.7 ns 44.49 ns 57.86 ns -
TryComputeHash · cSHAKE128 · Managed 1025B 1,548.1 ns 30.79 ns 40.03 ns -
TryComputeHash · cSHAKE128 · AVX2 1025B 2,025.4 ns 29.48 ns 28.95 ns -
TryComputeHash · cSHAKE128 · AVX512F 1025B 2,064.7 ns 16.17 ns 13.50 ns -
TryComputeHash · cSHAKE128 · BouncyCastle 1025B 2,231.9 ns 43.26 ns 38.35 ns -
TryComputeHash · cSHAKE128 · Managed 8KB 10,300.2 ns 204.19 ns 235.15 ns -
TryComputeHash · cSHAKE128 · AVX2 8KB 13,515.4 ns 148.16 ns 138.59 ns -
TryComputeHash · cSHAKE128 · AVX512F 8KB 13,864.5 ns 85.53 ns 71.42 ns -
TryComputeHash · cSHAKE128 · BouncyCastle 8KB 15,915.0 ns 287.61 ns 307.74 ns -
TryComputeHash · cSHAKE128 · Managed 128KB 162,801.0 ns 3,213.21 ns 4,809.38 ns -
TryComputeHash · cSHAKE128 · AVX2 128KB 214,898.5 ns 2,345.07 ns 1,958.24 ns -
TryComputeHash · cSHAKE128 · AVX512F 128KB 219,509.7 ns 951.92 ns 743.20 ns -
TryComputeHash · cSHAKE128 · BouncyCastle 128KB 249,286.3 ns 4,833.24 ns 5,171.52 ns -

cSHAKE256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · cSHAKE256 · Managed 128B 253.9 ns 1.49 ns 1.39 ns -
TryComputeHash · cSHAKE256 · AVX2 128B 326.5 ns 0.63 ns 0.59 ns -
TryComputeHash · cSHAKE256 · BouncyCastle 128B 332.4 ns 1.41 ns 1.32 ns -
TryComputeHash · cSHAKE256 · AVX512F 128B 334.5 ns 0.80 ns 0.75 ns -
TryComputeHash · cSHAKE256 · Managed 137B 501.0 ns 1.52 ns 1.34 ns -
TryComputeHash · cSHAKE256 · BouncyCastle 137B 630.3 ns 2.25 ns 2.10 ns -
TryComputeHash · cSHAKE256 · AVX2 137B 645.3 ns 2.19 ns 1.94 ns -
TryComputeHash · cSHAKE256 · AVX512F 137B 661.3 ns 2.25 ns 2.11 ns -
TryComputeHash · cSHAKE256 · Managed 1KB 1,658.1 ns 5.28 ns 4.94 ns -
TryComputeHash · cSHAKE256 · AVX2 1KB 2,238.2 ns 7.01 ns 6.56 ns -
TryComputeHash · cSHAKE256 · AVX512F 1KB 2,325.7 ns 4.90 ns 4.34 ns -
TryComputeHash · cSHAKE256 · BouncyCastle 1KB 2,464.9 ns 5.69 ns 5.32 ns -
TryComputeHash · cSHAKE256 · Managed 1025B 1,653.3 ns 8.19 ns 7.66 ns -
TryComputeHash · cSHAKE256 · AVX2 1025B 2,237.0 ns 5.48 ns 4.86 ns -
TryComputeHash · cSHAKE256 · AVX512F 1025B 2,333.7 ns 6.06 ns 5.67 ns -
TryComputeHash · cSHAKE256 · BouncyCastle 1025B 2,453.7 ns 4.52 ns 3.78 ns -
TryComputeHash · cSHAKE256 · Managed 8KB 12,241.1 ns 132.24 ns 110.43 ns -
TryComputeHash · cSHAKE256 · AVX2 8KB 16,575.0 ns 43.03 ns 40.25 ns -
TryComputeHash · cSHAKE256 · AVX512F 8KB 17,241.0 ns 49.78 ns 46.56 ns -
TryComputeHash · cSHAKE256 · BouncyCastle 8KB 18,537.4 ns 72.34 ns 64.13 ns -
TryComputeHash · cSHAKE256 · Managed 128KB 189,916.8 ns 398.58 ns 332.84 ns -
TryComputeHash · cSHAKE256 · AVX2 128KB 259,795.3 ns 1,014.98 ns 949.41 ns -
TryComputeHash · cSHAKE256 · AVX512F 128KB 271,097.8 ns 859.74 ns 762.14 ns -
TryComputeHash · cSHAKE256 · BouncyCastle 128KB 292,560.7 ns 356.06 ns 297.33 ns -

KangarooTwelve Family

KT128

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · KT128 · Managed 128B 158.1 ns 1.05 ns 0.98 ns -
TryComputeHash · KT128 · AVX2 128B 183.2 ns 0.64 ns 0.60 ns -
TryComputeHash · KT128 · AVX512F 128B 190.1 ns 0.83 ns 0.78 ns -
TryComputeHash · KT128 · Managed 137B 154.8 ns 0.73 ns 0.68 ns -
TryComputeHash · KT128 · AVX2 137B 180.3 ns 0.18 ns 0.15 ns -
TryComputeHash · KT128 · AVX512F 137B 184.8 ns 0.43 ns 0.38 ns -
TryComputeHash · KT128 · Managed 1KB 851.0 ns 3.69 ns 3.45 ns -
TryComputeHash · KT128 · AVX2 1KB 1,101.1 ns 2.97 ns 2.78 ns -
TryComputeHash · KT128 · AVX512F 1KB 1,139.9 ns 2.90 ns 2.72 ns -
TryComputeHash · KT128 · Managed 1025B 874.6 ns 4.54 ns 4.25 ns -
TryComputeHash · KT128 · AVX2 1025B 1,093.0 ns 3.42 ns 3.20 ns -
TryComputeHash · KT128 · AVX512F 1025B 1,149.8 ns 3.52 ns 2.94 ns -
TryComputeHash · KT128 · Managed 8KB 5,898.1 ns 12.50 ns 11.08 ns -
TryComputeHash · KT128 · AVX512F 8KB 8,077.4 ns 27.74 ns 25.95 ns -
TryComputeHash · KT128 · AVX2 8KB 9,597.5 ns 16.66 ns 14.77 ns -
TryComputeHash · KT128 · Managed 128KB 89,215.0 ns 392.62 ns 348.05 ns -
TryComputeHash · KT128 · AVX2 128KB 116,323.9 ns 162.79 ns 152.27 ns -
TryComputeHash · KT128 · AVX512F 128KB 122,323.6 ns 382.08 ns 357.40 ns -

KT256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · KT256 · Managed 128B 166.7 ns 1.10 ns 1.02 ns -
TryComputeHash · KT256 · AVX512F 128B 196.8 ns 0.40 ns 0.38 ns -
TryComputeHash · KT256 · AVX2 128B 199.1 ns 0.52 ns 0.49 ns -
TryComputeHash · KT256 · Managed 137B 317.1 ns 0.46 ns 0.39 ns -
TryComputeHash · KT256 · AVX2 137B 371.3 ns 1.17 ns 1.09 ns -
TryComputeHash · KT256 · AVX512F 137B 383.1 ns 1.14 ns 1.07 ns -
TryComputeHash · KT256 · Managed 1KB 936.7 ns 3.04 ns 2.84 ns -
TryComputeHash · KT256 · AVX2 1KB 1,214.0 ns 2.64 ns 2.47 ns -
TryComputeHash · KT256 · AVX512F 1KB 1,272.8 ns 2.26 ns 1.88 ns -
TryComputeHash · KT256 · Managed 1025B 936.3 ns 4.15 ns 3.67 ns -
TryComputeHash · KT256 · AVX2 1025B 1,214.7 ns 4.50 ns 4.21 ns -
TryComputeHash · KT256 · AVX512F 1025B 1,269.7 ns 3.28 ns 3.07 ns -
TryComputeHash · KT256 · Managed 8KB 6,972.7 ns 28.44 ns 25.21 ns -
TryComputeHash · KT256 · AVX2 8KB 9,111.6 ns 30.34 ns 28.38 ns -
TryComputeHash · KT256 · AVX512F 8KB 9,554.2 ns 28.85 ns 25.57 ns -
TryComputeHash · KT256 · Managed 128KB 109,262.2 ns 318.12 ns 297.57 ns -
TryComputeHash · KT256 · AVX2 128KB 143,710.0 ns 288.33 ns 269.70 ns -
TryComputeHash · KT256 · AVX512F 128KB 151,698.4 ns 413.55 ns 366.61 ns -

TurboSHAKE Family

TurboSHAKE128

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · TurboSHAKE128-32 · Managed 128B 152.9 ns 0.54 ns 0.45 ns -
TryComputeHash · TurboSHAKE128-32 · AVX2 128B 179.6 ns 0.58 ns 0.55 ns -
TryComputeHash · TurboSHAKE128-32 · AVX512F 128B 183.8 ns 0.45 ns 0.42 ns -
TryComputeHash · TurboSHAKE128-32 · Managed 137B 151.1 ns 0.58 ns 0.52 ns -
TryComputeHash · TurboSHAKE128-32 · AVX2 137B 179.3 ns 0.87 ns 0.81 ns -
TryComputeHash · TurboSHAKE128-32 · AVX512F 137B 181.0 ns 0.27 ns 0.25 ns -
TryComputeHash · TurboSHAKE128-32 · Managed 1KB 836.3 ns 3.34 ns 3.12 ns -
TryComputeHash · TurboSHAKE128-32 · AVX2 1KB 1,081.2 ns 4.23 ns 3.96 ns -
TryComputeHash · TurboSHAKE128-32 · AVX512F 1KB 1,127.3 ns 3.86 ns 3.61 ns -
TryComputeHash · TurboSHAKE128-32 · Managed 1025B 838.2 ns 4.13 ns 3.87 ns -
TryComputeHash · TurboSHAKE128-32 · AVX2 1025B 1,080.4 ns 3.88 ns 3.63 ns -
TryComputeHash · TurboSHAKE128-32 · AVX512F 1025B 1,131.9 ns 3.78 ns 3.35 ns -
TryComputeHash · TurboSHAKE128-32 · Managed 8KB 5,300.1 ns 20.54 ns 17.15 ns -
TryComputeHash · TurboSHAKE128-32 · AVX2 8KB 6,973.4 ns 9.20 ns 7.68 ns -
TryComputeHash · TurboSHAKE128-32 · AVX512F 8KB 7,322.5 ns 10.40 ns 9.73 ns -
TryComputeHash · TurboSHAKE128-32 · Managed 128KB 84,326.7 ns 541.44 ns 479.97 ns -
TryComputeHash · TurboSHAKE128-32 · AVX2 128KB 110,936.0 ns 283.17 ns 264.87 ns -
TryComputeHash · TurboSHAKE128-32 · AVX512F 128KB 117,818.0 ns 207.08 ns 193.71 ns -
TryComputeHash · TurboSHAKE128-64 · Managed 128B 173.3 ns 0.61 ns 0.54 ns -
TryComputeHash · TurboSHAKE128-64 · AVX2 128B 199.4 ns 0.52 ns 0.49 ns -
TryComputeHash · TurboSHAKE128-64 · AVX512F 128B 204.0 ns 0.85 ns 0.80 ns -
TryComputeHash · TurboSHAKE128-64 · Managed 137B 170.6 ns 0.59 ns 0.52 ns -
TryComputeHash · TurboSHAKE128-64 · AVX2 137B 196.2 ns 0.54 ns 0.51 ns -
TryComputeHash · TurboSHAKE128-64 · AVX512F 137B 201.9 ns 0.59 ns 0.56 ns -
TryComputeHash · TurboSHAKE128-64 · Managed 1KB 857.8 ns 3.37 ns 3.15 ns -
TryComputeHash · TurboSHAKE128-64 · AVX2 1KB 1,099.8 ns 2.02 ns 1.69 ns -
TryComputeHash · TurboSHAKE128-64 · AVX512F 1KB 1,148.5 ns 3.49 ns 3.09 ns -
TryComputeHash · TurboSHAKE128-64 · Managed 1025B 858.5 ns 3.47 ns 3.07 ns -
TryComputeHash · TurboSHAKE128-64 · AVX2 1025B 1,101.1 ns 3.63 ns 3.39 ns -
TryComputeHash · TurboSHAKE128-64 · AVX512F 1025B 1,171.8 ns 3.04 ns 2.84 ns -
TryComputeHash · TurboSHAKE128-64 · Managed 8KB 5,327.8 ns 18.23 ns 16.16 ns -
TryComputeHash · TurboSHAKE128-64 · AVX2 8KB 7,018.7 ns 13.11 ns 12.26 ns -
TryComputeHash · TurboSHAKE128-64 · AVX512F 8KB 7,339.8 ns 11.86 ns 11.09 ns -
TryComputeHash · TurboSHAKE128-64 · Managed 128KB 84,230.5 ns 525.58 ns 491.63 ns -
TryComputeHash · TurboSHAKE128-64 · AVX2 128KB 110,918.1 ns 275.68 ns 215.23 ns -
TryComputeHash · TurboSHAKE128-64 · AVX512F 128KB 117,827.9 ns 201.75 ns 178.84 ns -

TurboSHAKE256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · TurboSHAKE256 · Managed 128B 161.2 ns 0.70 ns 0.62 ns -
TryComputeHash · TurboSHAKE256 · AVX2 128B 188.6 ns 0.50 ns 0.46 ns -
TryComputeHash · TurboSHAKE256 · AVX512F 128B 194.2 ns 0.37 ns 0.34 ns -
TryComputeHash · TurboSHAKE256 · Managed 137B 309.6 ns 0.98 ns 0.82 ns -
TryComputeHash · TurboSHAKE256 · AVX2 137B 365.9 ns 1.14 ns 1.01 ns -
TryComputeHash · TurboSHAKE256 · AVX512F 137B 376.5 ns 0.40 ns 0.31 ns -
TryComputeHash · TurboSHAKE256 · Managed 1KB 919.7 ns 2.81 ns 2.62 ns -
TryComputeHash · TurboSHAKE256 · AVX2 1KB 1,192.4 ns 2.74 ns 2.56 ns -
TryComputeHash · TurboSHAKE256 · AVX512F 1KB 1,260.5 ns 2.00 ns 1.87 ns -
TryComputeHash · TurboSHAKE256 · Managed 1025B 920.8 ns 2.55 ns 2.39 ns -
TryComputeHash · TurboSHAKE256 · AVX2 1025B 1,201.0 ns 3.81 ns 3.56 ns -
TryComputeHash · TurboSHAKE256 · AVX512F 1025B 1,259.6 ns 3.46 ns 3.06 ns -
TryComputeHash · TurboSHAKE256 · Managed 8KB 6,582.2 ns 19.69 ns 17.45 ns -
TryComputeHash · TurboSHAKE256 · AVX2 8KB 8,677.5 ns 20.60 ns 19.27 ns -
TryComputeHash · TurboSHAKE256 · AVX512F 8KB 9,131.7 ns 19.32 ns 17.12 ns -
TryComputeHash · TurboSHAKE256 · Managed 128KB 102,694.7 ns 484.86 ns 453.54 ns -
TryComputeHash · TurboSHAKE256 · AVX2 128KB 135,525.7 ns 261.62 ns 204.25 ns -
TryComputeHash · TurboSHAKE256 · AVX512F 128KB 142,204.0 ns 251.94 ns 235.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), while the scalar fallback is significantly slower (~3.5× for BLAKE2b, ~4× for BLAKE2s).

Key observations:

  • BouncyCastle (102 ns @ 128B for BLAKE2b-256): Highly optimized reference
  • Managed AVX2 (117 ns @ 128B): Competitive SIMD implementation
  • Managed scalar (371 ns @ 128B): Fallback for non-SIMD platforms

BLAKE2b-256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · BLAKE2b-256 · BouncyCastle 128B 99.60 ns 0.622 ns 0.582 ns -
TryComputeHash · BLAKE2b-256 · AVX2 128B 119.96 ns 2.218 ns 2.179 ns -
TryComputeHash · BLAKE2b-256 · Managed 128B 370.40 ns 2.608 ns 2.312 ns -
TryComputeHash · BLAKE2b-256 · BouncyCastle 137B 189.67 ns 0.822 ns 0.729 ns -
TryComputeHash · BLAKE2b-256 · AVX2 137B 210.14 ns 1.379 ns 1.290 ns -
TryComputeHash · BLAKE2b-256 · Managed 137B 724.00 ns 4.439 ns 3.935 ns -
TryComputeHash · BLAKE2b-256 · BouncyCastle 1KB 715.98 ns 4.807 ns 4.261 ns -
TryComputeHash · BLAKE2b-256 · AVX2 1KB 796.95 ns 7.405 ns 6.565 ns -
TryComputeHash · BLAKE2b-256 · Managed 1KB 2,849.76 ns 14.322 ns 12.696 ns -
TryComputeHash · BLAKE2b-256 · BouncyCastle 1025B 807.91 ns 3.485 ns 3.089 ns -
TryComputeHash · BLAKE2b-256 · AVX2 1025B 900.86 ns 12.477 ns 11.671 ns -
TryComputeHash · BLAKE2b-256 · Managed 1025B 3,196.15 ns 20.950 ns 19.597 ns -
TryComputeHash · BLAKE2b-256 · BouncyCastle 8KB 5,614.11 ns 33.398 ns 31.240 ns -
TryComputeHash · BLAKE2b-256 · AVX2 8KB 6,331.31 ns 84.972 ns 75.326 ns -
TryComputeHash · BLAKE2b-256 · Managed 8KB 22,838.37 ns 134.214 ns 125.544 ns -
TryComputeHash · BLAKE2b-256 · AVX2 128KB 101,277.89 ns 1,017.042 ns 901.581 ns -
TryComputeHash · BLAKE2b-256 · BouncyCastle 128KB 105,416.37 ns 1,552.811 ns 1,452.501 ns -
TryComputeHash · BLAKE2b-256 · Managed 128KB 368,544.80 ns 3,821.455 ns 3,574.592 ns -

BLAKE2b-512

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · BLAKE2b-512 · BouncyCastle 128B 101.2 ns 0.40 ns 0.37 ns -
TryComputeHash · BLAKE2b-512 · AVX2 128B 121.2 ns 0.98 ns 0.92 ns -
TryComputeHash · BLAKE2b-512 · Managed 128B 378.8 ns 2.76 ns 2.58 ns -
TryComputeHash · BLAKE2b-512 · BouncyCastle 137B 184.2 ns 2.19 ns 2.05 ns -
TryComputeHash · BLAKE2b-512 · AVX2 137B 216.9 ns 1.76 ns 1.65 ns -
TryComputeHash · BLAKE2b-512 · Managed 137B 741.3 ns 14.10 ns 13.19 ns -
TryComputeHash · BLAKE2b-512 · BouncyCastle 1KB 715.2 ns 2.15 ns 2.01 ns -
TryComputeHash · BLAKE2b-512 · AVX2 1KB 818.0 ns 15.79 ns 22.13 ns -
TryComputeHash · BLAKE2b-512 · Managed 1KB 2,909.2 ns 53.10 ns 44.34 ns -
TryComputeHash · BLAKE2b-512 · BouncyCastle 1025B 800.7 ns 1.90 ns 1.69 ns -
TryComputeHash · BLAKE2b-512 · AVX2 1025B 897.4 ns 6.00 ns 5.01 ns -
TryComputeHash · BLAKE2b-512 · Managed 1025B 3,223.0 ns 41.31 ns 36.62 ns -
TryComputeHash · BLAKE2b-512 · BouncyCastle 8KB 5,645.8 ns 93.75 ns 87.70 ns -
TryComputeHash · BLAKE2b-512 · AVX2 8KB 6,400.6 ns 124.77 ns 170.79 ns -
TryComputeHash · BLAKE2b-512 · Managed 8KB 22,623.6 ns 148.15 ns 138.58 ns -
TryComputeHash · BLAKE2b-512 · BouncyCastle 128KB 92,037.9 ns 1,794.39 ns 3,095.24 ns -
TryComputeHash · BLAKE2b-512 · AVX2 128KB 101,625.6 ns 1,342.75 ns 1,190.31 ns -
TryComputeHash · BLAKE2b-512 · Managed 128KB 366,554.2 ns 4,273.47 ns 3,568.54 ns -

BLAKE2s-128

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · BLAKE2s-128 · Ssse3 128B 158.2 ns 0.48 ns 0.45 ns -
TryComputeHash · BLAKE2s-128 · BouncyCastle 128B 158.3 ns 0.67 ns 0.60 ns -
TryComputeHash · BLAKE2s-128 · AVX2 128B 158.9 ns 2.18 ns 1.93 ns -
TryComputeHash · BLAKE2s-128 · Sse2 128B 163.0 ns 2.11 ns 1.97 ns -
TryComputeHash · BLAKE2s-128 · Managed 128B 596.8 ns 1.73 ns 1.53 ns -
TryComputeHash · BLAKE2s-128 · AVX2 137B 237.4 ns 1.19 ns 1.11 ns -
TryComputeHash · BLAKE2s-128 · Ssse3 137B 240.6 ns 0.84 ns 0.66 ns -
TryComputeHash · BLAKE2s-128 · BouncyCastle 137B 243.3 ns 1.09 ns 0.91 ns -
TryComputeHash · BLAKE2s-128 · Sse2 137B 245.6 ns 0.60 ns 0.56 ns -
TryComputeHash · BLAKE2s-128 · Managed 137B 895.0 ns 8.05 ns 7.53 ns -
TryComputeHash · BLAKE2s-128 · Ssse3 1KB 1,218.7 ns 2.81 ns 2.19 ns -
TryComputeHash · BLAKE2s-128 · AVX2 1KB 1,225.7 ns 14.26 ns 13.34 ns -
TryComputeHash · BLAKE2s-128 · BouncyCastle 1KB 1,227.2 ns 3.20 ns 2.50 ns -
TryComputeHash · BLAKE2s-128 · Sse2 1KB 1,247.4 ns 2.70 ns 2.25 ns -
TryComputeHash · BLAKE2s-128 · Managed 1KB 4,682.4 ns 29.11 ns 24.30 ns -
TryComputeHash · BLAKE2s-128 · AVX2 1025B 1,296.4 ns 5.49 ns 5.13 ns -
TryComputeHash · BLAKE2s-128 · Ssse3 1025B 1,303.3 ns 2.77 ns 2.60 ns -
TryComputeHash · BLAKE2s-128 · BouncyCastle 1025B 1,309.9 ns 10.72 ns 10.03 ns -
TryComputeHash · BLAKE2s-128 · Sse2 1025B 1,333.5 ns 3.80 ns 3.17 ns -
TryComputeHash · BLAKE2s-128 · Managed 1025B 4,972.0 ns 18.90 ns 16.75 ns -
TryComputeHash · BLAKE2s-128 · AVX2 8KB 9,697.8 ns 69.58 ns 61.68 ns -
TryComputeHash · BLAKE2s-128 · BouncyCastle 8KB 9,712.2 ns 87.48 ns 73.05 ns -
TryComputeHash · BLAKE2s-128 · Ssse3 8KB 9,718.3 ns 26.03 ns 21.73 ns -
TryComputeHash · BLAKE2s-128 · Sse2 8KB 9,951.7 ns 23.10 ns 20.48 ns -
TryComputeHash · BLAKE2s-128 · Managed 8KB 37,607.4 ns 478.35 ns 424.04 ns -
TryComputeHash · BLAKE2s-128 · BouncyCastle 128KB 154,890.9 ns 1,429.09 ns 1,266.85 ns -
TryComputeHash · BLAKE2s-128 · Ssse3 128KB 155,336.3 ns 457.55 ns 427.99 ns -
TryComputeHash · BLAKE2s-128 · AVX2 128KB 157,423.7 ns 2,592.44 ns 2,424.97 ns -
TryComputeHash · BLAKE2s-128 · Sse2 128KB 160,574.9 ns 1,991.14 ns 1,862.51 ns -
TryComputeHash · BLAKE2s-128 · Managed 128KB 598,904.3 ns 3,504.74 ns 2,926.61 ns -

BLAKE2s-256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · BLAKE2s-256 · Ssse3 128B 159.6 ns 1.60 ns 1.33 ns -
TryComputeHash · BLAKE2s-256 · AVX2 128B 161.6 ns 1.24 ns 1.16 ns -
TryComputeHash · BLAKE2s-256 · BouncyCastle 128B 162.3 ns 2.01 ns 1.88 ns -
TryComputeHash · BLAKE2s-256 · Sse2 128B 162.7 ns 1.07 ns 0.95 ns -
TryComputeHash · BLAKE2s-256 · Managed 128B 608.0 ns 9.37 ns 8.76 ns -
TryComputeHash · BLAKE2s-256 · Ssse3 137B 242.3 ns 0.96 ns 0.80 ns -
TryComputeHash · BLAKE2s-256 · BouncyCastle 137B 244.9 ns 1.65 ns 1.38 ns -
TryComputeHash · BLAKE2s-256 · AVX2 137B 245.5 ns 4.93 ns 5.27 ns -
TryComputeHash · BLAKE2s-256 · Sse2 137B 251.2 ns 3.75 ns 3.51 ns -
TryComputeHash · BLAKE2s-256 · Managed 137B 896.7 ns 7.74 ns 6.86 ns -
TryComputeHash · BLAKE2s-256 · AVX2 1KB 1,223.1 ns 8.26 ns 7.32 ns -
TryComputeHash · BLAKE2s-256 · BouncyCastle 1KB 1,237.8 ns 13.01 ns 11.53 ns -
TryComputeHash · BLAKE2s-256 · Ssse3 1KB 1,238.1 ns 20.82 ns 19.47 ns -
TryComputeHash · BLAKE2s-256 · Sse2 1KB 1,260.9 ns 18.10 ns 16.04 ns -
TryComputeHash · BLAKE2s-256 · Managed 1KB 4,741.3 ns 93.85 ns 92.18 ns -
TryComputeHash · BLAKE2s-256 · Ssse3 1025B 1,317.9 ns 18.39 ns 17.20 ns -
TryComputeHash · BLAKE2s-256 · AVX2 1025B 1,324.8 ns 26.22 ns 29.14 ns -
TryComputeHash · BLAKE2s-256 · BouncyCastle 1025B 1,329.5 ns 26.20 ns 24.51 ns -
TryComputeHash · BLAKE2s-256 · Sse2 1025B 1,344.4 ns 14.66 ns 13.00 ns -
TryComputeHash · BLAKE2s-256 · Managed 1025B 4,993.0 ns 49.90 ns 46.68 ns -
TryComputeHash · BLAKE2s-256 · BouncyCastle 8KB 9,726.0 ns 115.85 ns 96.74 ns -
TryComputeHash · BLAKE2s-256 · Ssse3 8KB 9,744.1 ns 64.38 ns 53.76 ns -
TryComputeHash · BLAKE2s-256 · AVX2 8KB 9,765.7 ns 132.15 ns 123.62 ns -
TryComputeHash · BLAKE2s-256 · Sse2 8KB 10,006.2 ns 116.60 ns 103.36 ns -
TryComputeHash · BLAKE2s-256 · Managed 8KB 37,976.0 ns 737.51 ns 653.78 ns -
TryComputeHash · BLAKE2s-256 · BouncyCastle 128KB 154,952.0 ns 1,259.43 ns 1,051.68 ns -
TryComputeHash · BLAKE2s-256 · AVX2 128KB 155,754.7 ns 2,006.08 ns 1,778.34 ns -
TryComputeHash · BLAKE2s-256 · Ssse3 128KB 156,354.6 ns 1,422.27 ns 1,187.66 ns -
TryComputeHash · BLAKE2s-256 · Sse2 128KB 159,288.7 ns 885.89 ns 785.32 ns -
TryComputeHash · BLAKE2s-256 · Managed 128KB 602,295.5 ns 5,429.99 ns 4,534.29 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 (direct Sse2.LoadVector128/Store for chaining values, zero-copy message casting, and SSSE3-accelerated root squeeze). At small inputs (128B), the SSSE3 path achieves 139ns—only ~1.4× slower than the native Rust implementation (102ns) and ~9× faster than BouncyCastle (1,282ns). 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. The scalar managed fallback (~545ns at 128B) still outperforms BouncyCastle by ~2.4×.

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · BLAKE3 · Native 128B 98.81 ns 0.719 ns 0.600 ns -
TryComputeHash · BLAKE3 · Ssse3 128B 139.20 ns 0.569 ns 0.475 ns -
TryComputeHash · BLAKE3 · Managed 128B 551.47 ns 5.422 ns 4.806 ns -
TryComputeHash · BLAKE3 · BouncyCastle 128B 1,314.20 ns 24.402 ns 21.632 ns -
TryComputeHash · BLAKE3 · Native 137B 151.42 ns 1.009 ns 0.842 ns -
TryComputeHash · BLAKE3 · Ssse3 137B 219.47 ns 3.108 ns 2.907 ns -
TryComputeHash · BLAKE3 · Managed 137B 825.26 ns 6.389 ns 5.335 ns -
TryComputeHash · BLAKE3 · BouncyCastle 137B 1,940.56 ns 3.500 ns 3.274 ns -
TryComputeHash · BLAKE3 · Native 1KB 748.31 ns 1.951 ns 1.729 ns -
TryComputeHash · BLAKE3 · Ssse3 1KB 1,085.16 ns 14.151 ns 11.816 ns -
TryComputeHash · BLAKE3 · Managed 1KB 4,200.94 ns 19.038 ns 16.877 ns -
TryComputeHash · BLAKE3 · BouncyCastle 1KB 9,518.08 ns 60.288 ns 56.394 ns -
TryComputeHash · BLAKE3 · Native 1025B 851.02 ns 3.243 ns 2.875 ns -
TryComputeHash · BLAKE3 · Ssse3 1025B 1,242.36 ns 6.202 ns 5.179 ns -
TryComputeHash · BLAKE3 · Managed 1025B 4,749.47 ns 27.098 ns 25.348 ns -
TryComputeHash · BLAKE3 · BouncyCastle 1025B 10,973.20 ns 77.121 ns 72.139 ns 56 B
TryComputeHash · BLAKE3 · Native 8KB 1,185.75 ns 4.694 ns 4.162 ns -
TryComputeHash · BLAKE3 · Ssse3 8KB 9,855.63 ns 50.941 ns 42.538 ns -
TryComputeHash · BLAKE3 · Managed 8KB 35,446.52 ns 172.789 ns 161.627 ns -
TryComputeHash · BLAKE3 · BouncyCastle 8KB 80,231.04 ns 490.246 ns 458.576 ns 392 B
TryComputeHash · BLAKE3 · Native 128KB 16,884.46 ns 156.944 ns 146.806 ns -
TryComputeHash · BLAKE3 · Ssse3 128KB 164,448.76 ns 707.056 ns 661.381 ns -
TryComputeHash · BLAKE3 · Managed 128KB 571,607.17 ns 2,301.243 ns 2,152.584 ns -
TryComputeHash · BLAKE3 · BouncyCastle 128KB 1,262,952.30 ns 12,870.460 ns 11,409.327 ns 7112 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.8 ns 0.51 ns 0.48 ns -
TryComputeHash · MD5 · Managed 128B 326.0 ns 1.94 ns 1.81 ns -
TryComputeHash · MD5 · BouncyCastle 128B 368.9 ns 0.49 ns 0.41 ns -
TryComputeHash · MD5 · OS Native 137B 268.0 ns 0.66 ns 0.62 ns -
TryComputeHash · MD5 · Managed 137B 328.9 ns 1.11 ns 0.92 ns -
TryComputeHash · MD5 · BouncyCastle 137B 368.7 ns 0.85 ns 0.79 ns -
TryComputeHash · MD5 · OS Native 1KB 1,371.9 ns 2.61 ns 2.44 ns -
TryComputeHash · MD5 · Managed 1KB 1,792.5 ns 6.46 ns 6.04 ns -
TryComputeHash · MD5 · BouncyCastle 1KB 2,010.4 ns 3.58 ns 3.35 ns -
TryComputeHash · MD5 · OS Native 1025B 1,367.8 ns 1.75 ns 1.55 ns -
TryComputeHash · MD5 · Managed 1025B 1,797.9 ns 4.34 ns 3.62 ns -
TryComputeHash · MD5 · BouncyCastle 1025B 2,008.4 ns 4.30 ns 3.82 ns -
TryComputeHash · MD5 · OS Native 8KB 10,158.8 ns 9.82 ns 9.19 ns -
TryComputeHash · MD5 · Managed 8KB 13,507.9 ns 39.10 ns 32.65 ns -
TryComputeHash · MD5 · BouncyCastle 8KB 15,114.1 ns 19.00 ns 16.84 ns -
TryComputeHash · MD5 · OS Native 128KB 160,881.9 ns 129.41 ns 114.72 ns -
TryComputeHash · MD5 · Managed 128KB 214,550.2 ns 588.02 ns 521.26 ns -
TryComputeHash · MD5 · BouncyCastle 128KB 240,087.5 ns 311.72 ns 291.58 ns -

SHA-1

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA-1 · OS Native 128B 227.8 ns 0.96 ns 0.90 ns -
TryComputeHash · SHA-1 · BouncyCastle 128B 434.9 ns 1.45 ns 1.35 ns -
TryComputeHash · SHA-1 · Managed 128B 456.4 ns 2.25 ns 2.11 ns -
TryComputeHash · SHA-1 · OS Native 137B 233.5 ns 0.50 ns 0.45 ns -
TryComputeHash · SHA-1 · BouncyCastle 137B 437.4 ns 1.68 ns 1.57 ns -
TryComputeHash · SHA-1 · Managed 137B 453.4 ns 1.03 ns 0.97 ns -
TryComputeHash · SHA-1 · OS Native 1KB 1,096.1 ns 3.44 ns 3.05 ns -
TryComputeHash · SHA-1 · BouncyCastle 1KB 2,418.0 ns 11.92 ns 11.15 ns -
TryComputeHash · SHA-1 · Managed 1KB 2,449.2 ns 11.50 ns 10.76 ns -
TryComputeHash · SHA-1 · OS Native 1025B 1,098.8 ns 3.32 ns 3.10 ns -
TryComputeHash · SHA-1 · BouncyCastle 1025B 2,420.0 ns 13.36 ns 12.49 ns -
TryComputeHash · SHA-1 · Managed 1025B 2,445.9 ns 6.40 ns 5.99 ns -
TryComputeHash · SHA-1 · OS Native 8KB 8,037.7 ns 23.54 ns 22.02 ns -
TryComputeHash · SHA-1 · BouncyCastle 8KB 18,211.1 ns 63.05 ns 52.65 ns -
TryComputeHash · SHA-1 · Managed 8KB 18,305.6 ns 50.34 ns 42.03 ns -
TryComputeHash · SHA-1 · OS Native 128KB 127,145.3 ns 348.90 ns 326.36 ns -
TryComputeHash · SHA-1 · BouncyCastle 128KB 289,652.4 ns 1,753.58 ns 1,640.30 ns -
TryComputeHash · SHA-1 · Managed 128KB 291,416.7 ns 2,489.95 ns 2,079.22 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%. LSH is the first managed .NET implementation—no BouncyCastle or OS alternative exists.

SM3

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SM3 · Managed 128B 692.4 ns 1.45 ns 1.21 ns -
TryComputeHash · SM3 · BouncyCastle 128B 789.1 ns 1.95 ns 1.82 ns -
TryComputeHash · SM3 · Managed 137B 694.5 ns 0.81 ns 0.63 ns -
TryComputeHash · SM3 · BouncyCastle 137B 791.0 ns 3.94 ns 3.69 ns -
TryComputeHash · SM3 · Managed 1KB 3,866.0 ns 12.26 ns 10.87 ns -
TryComputeHash · SM3 · BouncyCastle 1KB 4,415.2 ns 14.34 ns 12.71 ns -
TryComputeHash · SM3 · Managed 1025B 3,867.0 ns 8.47 ns 7.93 ns -
TryComputeHash · SM3 · BouncyCastle 1025B 4,411.8 ns 14.19 ns 12.58 ns -
TryComputeHash · SM3 · Managed 8KB 29,290.8 ns 76.41 ns 67.74 ns -
TryComputeHash · SM3 · BouncyCastle 8KB 32,932.9 ns 150.48 ns 133.40 ns -
TryComputeHash · SM3 · Managed 128KB 463,188.4 ns 1,546.12 ns 1,446.24 ns -
TryComputeHash · SM3 · BouncyCastle 128KB 528,446.4 ns 1,621.63 ns 1,437.53 ns -

Streebog-256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Streebog-256 · Managed 128B 2.389 μs 0.0082 μs 0.0069 μs -
TryComputeHash · Streebog-256 · OpenGost 128B 3.437 μs 0.0212 μs 0.0199 μs 408 B
TryComputeHash · Streebog-256 · BouncyCastle 128B 4.240 μs 0.0161 μs 0.0142 μs -
TryComputeHash · Streebog-256 · Managed 137B 2.385 μs 0.0044 μs 0.0039 μs -
TryComputeHash · Streebog-256 · OpenGost 137B 3.426 μs 0.0067 μs 0.0056 μs 408 B
TryComputeHash · Streebog-256 · BouncyCastle 137B 4.286 μs 0.0162 μs 0.0143 μs -
TryComputeHash · Streebog-256 · Managed 1KB 9.191 μs 0.0137 μs 0.0115 μs -
TryComputeHash · Streebog-256 · OpenGost 1KB 12.714 μs 0.0358 μs 0.0335 μs 408 B
TryComputeHash · Streebog-256 · BouncyCastle 1KB 16.502 μs 0.0570 μs 0.0505 μs -
TryComputeHash · Streebog-256 · Managed 1025B 9.197 μs 0.0219 μs 0.0183 μs -
TryComputeHash · Streebog-256 · OpenGost 1025B 12.705 μs 0.0748 μs 0.0700 μs 408 B
TryComputeHash · Streebog-256 · BouncyCastle 1025B 16.217 μs 0.0557 μs 0.0493 μs -
TryComputeHash · Streebog-256 · Managed 8KB 62.578 μs 0.1773 μs 0.1659 μs -
TryComputeHash · Streebog-256 · OpenGost 8KB 86.673 μs 0.2282 μs 0.1906 μs 408 B
TryComputeHash · Streebog-256 · BouncyCastle 8KB 115.720 μs 0.2852 μs 0.2667 μs -
TryComputeHash · Streebog-256 · Managed 128KB 979.821 μs 3.1227 μs 2.9210 μs -
TryComputeHash · Streebog-256 · OpenGost 128KB 1,359.226 μs 8.6605 μs 8.1010 μs 408 B
TryComputeHash · Streebog-256 · BouncyCastle 128KB 1,748.872 μs 4.6952 μs 4.1621 μs -

Streebog-512

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Streebog-512 · Managed 128B 2.421 μs 0.0053 μs 0.0050 μs -
TryComputeHash · Streebog-512 · OpenGost 128B 3.381 μs 0.0203 μs 0.0190 μs 176 B
TryComputeHash · Streebog-512 · BouncyCastle 128B 4.238 μs 0.0164 μs 0.0153 μs -
TryComputeHash · Streebog-512 · Managed 137B 2.417 μs 0.0028 μs 0.0025 μs -
TryComputeHash · Streebog-512 · OpenGost 137B 3.374 μs 0.0237 μs 0.0210 μs 176 B
TryComputeHash · Streebog-512 · BouncyCastle 137B 4.245 μs 0.0289 μs 0.0241 μs -
TryComputeHash · Streebog-512 · Managed 1KB 9.224 μs 0.0209 μs 0.0174 μs -
TryComputeHash · Streebog-512 · OpenGost 1KB 12.623 μs 0.0502 μs 0.0469 μs 176 B
TryComputeHash · Streebog-512 · BouncyCastle 1KB 16.161 μs 0.0470 μs 0.0392 μs -
TryComputeHash · Streebog-512 · Managed 1025B 8.996 μs 0.0170 μs 0.0151 μs -
TryComputeHash · Streebog-512 · OpenGost 1025B 12.620 μs 0.0469 μs 0.0438 μs 176 B
TryComputeHash · Streebog-512 · BouncyCastle 1025B 16.171 μs 0.0523 μs 0.0436 μs -
TryComputeHash · Streebog-512 · Managed 8KB 63.743 μs 0.1720 μs 0.1609 μs -
TryComputeHash · Streebog-512 · OpenGost 8KB 86.514 μs 0.3106 μs 0.2905 μs 176 B
TryComputeHash · Streebog-512 · BouncyCastle 8KB 112.461 μs 0.4861 μs 0.4309 μs -
TryComputeHash · Streebog-512 · Managed 128KB 978.931 μs 3.1155 μs 2.7618 μs -
TryComputeHash · Streebog-512 · OpenGost 128KB 1,361.326 μs 4.9066 μs 4.3496 μs 176 B
TryComputeHash · Streebog-512 · BouncyCastle 128KB 1,742.975 μs 6.3171 μs 5.9090 μs -

Whirlpool

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Whirlpool · Managed 128B 1.345 μs 0.0077 μs 0.0072 μs -
TryComputeHash · Whirlpool · Hashify .NET 128B 1.987 μs 0.0236 μs 0.0209 μs 6336 B
TryComputeHash · Whirlpool · BouncyCastle 128B 5.006 μs 0.0262 μs 0.0232 μs 56 B
TryComputeHash · Whirlpool · Managed 137B 1.347 μs 0.0076 μs 0.0071 μs -
TryComputeHash · Whirlpool · Hashify .NET 137B 2.014 μs 0.0234 μs 0.0219 μs 6328 B
TryComputeHash · Whirlpool · BouncyCastle 137B 5.032 μs 0.0162 μs 0.0136 μs 56 B
TryComputeHash · Whirlpool · Managed 1KB 9.012 μs 0.0363 μs 0.0340 μs -
TryComputeHash · Whirlpool · Hashify .NET 1KB 10.253 μs 0.0611 μs 0.0510 μs 12032 B
TryComputeHash · Whirlpool · BouncyCastle 1KB 31.051 μs 0.2385 μs 0.2231 μs 56 B
TryComputeHash · Whirlpool · Managed 1025B 7.449 μs 0.0211 μs 0.0197 μs -
TryComputeHash · Whirlpool · Hashify .NET 1025B 10.285 μs 0.0463 μs 0.0410 μs 12040 B
TryComputeHash · Whirlpool · BouncyCastle 1025B 31.002 μs 0.1677 μs 0.1486 μs 56 B
TryComputeHash · Whirlpool · Managed 8KB 57.461 μs 0.9536 μs 0.7963 μs -
TryComputeHash · Whirlpool · Hashify .NET 8KB 75.981 μs 0.7616 μs 0.6751 μs 58624 B
TryComputeHash · Whirlpool · BouncyCastle 8KB 242.989 μs 4.5670 μs 6.6942 μs 56 B
TryComputeHash · Whirlpool · Managed 128KB 890.438 μs 5.4600 μs 5.1073 μs -
TryComputeHash · Whirlpool · Hashify .NET 128KB 1,251.434 μs 6.2803 μs 5.5673 μs 857372 B
TryComputeHash · Whirlpool · BouncyCastle 128KB 3,790.528 μs 13.4650 μs 11.9364 μs 56 B

RIPEMD-160

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · RIPEMD-160 · BouncyCastle 128B 645.1 ns 2.34 ns 2.19 ns -
TryComputeHash · RIPEMD-160 · Managed 128B 713.1 ns 2.25 ns 1.88 ns -
TryComputeHash · RIPEMD-160 · BouncyCastle 137B 638.2 ns 1.27 ns 1.13 ns -
TryComputeHash · RIPEMD-160 · Managed 137B 717.4 ns 1.65 ns 1.47 ns -
TryComputeHash · RIPEMD-160 · BouncyCastle 1KB 3,548.9 ns 5.48 ns 4.85 ns -
TryComputeHash · RIPEMD-160 · Managed 1KB 3,986.9 ns 20.03 ns 17.76 ns -
TryComputeHash · RIPEMD-160 · BouncyCastle 1025B 3,557.6 ns 9.50 ns 8.89 ns -
TryComputeHash · RIPEMD-160 · Managed 1025B 4,110.9 ns 22.77 ns 19.02 ns -
TryComputeHash · RIPEMD-160 · BouncyCastle 8KB 26,895.6 ns 51.95 ns 46.06 ns -
TryComputeHash · RIPEMD-160 · Managed 8KB 30,059.0 ns 72.77 ns 68.07 ns -
TryComputeHash · RIPEMD-160 · BouncyCastle 128KB 426,223.2 ns 852.40 ns 711.79 ns -
TryComputeHash · RIPEMD-160 · Managed 128KB 476,956.2 ns 2,233.75 ns 2,089.45 ns -

Kupyna-256 (DSTU 7564)

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Kupyna-256 · Managed 128B 2.313 μs 0.0450 μs 0.0518 μs -
TryComputeHash · Kupyna-256 · BouncyCastle 128B 3.294 μs 0.0250 μs 0.0234 μs -
TryComputeHash · Kupyna-256 · Managed 137B 2.268 μs 0.0316 μs 0.0264 μs -
TryComputeHash · Kupyna-256 · BouncyCastle 137B 3.286 μs 0.0152 μs 0.0135 μs -
TryComputeHash · Kupyna-256 · Managed 1KB 11.598 μs 0.0403 μs 0.0377 μs -
TryComputeHash · Kupyna-256 · BouncyCastle 1KB 16.369 μs 0.1402 μs 0.1312 μs -
TryComputeHash · Kupyna-256 · Managed 1025B 11.244 μs 0.0717 μs 0.0670 μs -
TryComputeHash · Kupyna-256 · BouncyCastle 1025B 16.421 μs 0.1096 μs 0.0915 μs -
TryComputeHash · Kupyna-256 · Managed 8KB 83.036 μs 0.7287 μs 0.6460 μs -
TryComputeHash · Kupyna-256 · BouncyCastle 8KB 120.937 μs 0.6058 μs 0.5370 μs -
TryComputeHash · Kupyna-256 · Managed 128KB 1,312.142 μs 12.9352 μs 12.0996 μs -
TryComputeHash · Kupyna-256 · BouncyCastle 128KB 1,915.741 μs 15.9717 μs 14.1585 μs -

Kupyna-384 (DSTU 7564)

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Kupyna-384 · Managed 128B 4.297 μs 0.0458 μs 0.0428 μs -
TryComputeHash · Kupyna-384 · BouncyCastle 128B 6.652 μs 0.0290 μs 0.0271 μs -
TryComputeHash · Kupyna-384 · Managed 137B 4.302 μs 0.0443 μs 0.0392 μs -
TryComputeHash · Kupyna-384 · BouncyCastle 137B 6.681 μs 0.0486 μs 0.0454 μs -
TryComputeHash · Kupyna-384 · Managed 1KB 16.239 μs 0.1845 μs 0.1726 μs -
TryComputeHash · Kupyna-384 · BouncyCastle 1KB 25.479 μs 0.1039 μs 0.0972 μs -
TryComputeHash · Kupyna-384 · Managed 1025B 16.163 μs 0.1263 μs 0.1182 μs -
TryComputeHash · Kupyna-384 · BouncyCastle 1025B 25.562 μs 0.1893 μs 0.1771 μs -
TryComputeHash · Kupyna-384 · Managed 8KB 111.263 μs 0.8444 μs 0.7898 μs -
TryComputeHash · Kupyna-384 · BouncyCastle 8KB 176.300 μs 1.6017 μs 1.4199 μs -
TryComputeHash · Kupyna-384 · Managed 128KB 1,747.562 μs 16.5331 μs 15.4650 μs -
TryComputeHash · Kupyna-384 · BouncyCastle 128KB 2,765.618 μs 20.2107 μs 17.9162 μs -

Kupyna-512 (DSTU 7564)

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Kupyna-512 · Managed 128B 4.307 μs 0.0338 μs 0.0316 μs -
TryComputeHash · Kupyna-512 · BouncyCastle 128B 7.225 μs 0.0477 μs 0.0447 μs -
TryComputeHash · Kupyna-512 · Managed 137B 4.282 μs 0.0347 μs 0.0325 μs -
TryComputeHash · Kupyna-512 · BouncyCastle 137B 6.670 μs 0.0467 μs 0.0437 μs -
TryComputeHash · Kupyna-512 · Managed 1KB 16.213 μs 0.2174 μs 0.2033 μs -
TryComputeHash · Kupyna-512 · BouncyCastle 1KB 25.454 μs 0.1347 μs 0.1194 μs -
TryComputeHash · Kupyna-512 · Managed 1025B 16.273 μs 0.2408 μs 0.2135 μs -
TryComputeHash · Kupyna-512 · BouncyCastle 1025B 25.561 μs 0.1198 μs 0.1121 μs -
TryComputeHash · Kupyna-512 · Managed 8KB 111.827 μs 0.7716 μs 0.7218 μs -
TryComputeHash · Kupyna-512 · BouncyCastle 8KB 175.501 μs 1.6704 μs 1.5625 μs -
TryComputeHash · Kupyna-512 · Managed 128KB 1,748.794 μs 16.5414 μs 15.4728 μs -
TryComputeHash · Kupyna-512 · BouncyCastle 128KB 2,749.887 μs 12.7021 μs 11.2601 μs -

LSH-256-256 (KS X 3262)

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · LSH-256-256 · Managed 128B 1.955 μs 0.0257 μs 0.0228 μs -
TryComputeHash · LSH-256-256 · Managed 137B 1.950 μs 0.0129 μs 0.0115 μs -
TryComputeHash · LSH-256-256 · Managed 1KB 8.515 μs 0.0521 μs 0.0487 μs -
TryComputeHash · LSH-256-256 · Managed 1025B 8.501 μs 0.0643 μs 0.0570 μs -
TryComputeHash · LSH-256-256 · Managed 8KB 61.726 μs 0.6879 μs 0.5744 μs -
TryComputeHash · LSH-256-256 · Managed 128KB 963.219 μs 4.1959 μs 3.9249 μs -

LSH-512-256 (KS X 3262)

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · LSH-512-256 · Managed 128B 1.083 μs 0.0069 μs 0.0058 μs -
TryComputeHash · LSH-512-256 · Managed 137B 1.080 μs 0.0086 μs 0.0076 μs -
TryComputeHash · LSH-512-256 · Managed 1KB 5.223 μs 0.0770 μs 0.0720 μs -
TryComputeHash · LSH-512-256 · Managed 1025B 5.172 μs 0.0280 μs 0.0234 μs -
TryComputeHash · LSH-512-256 · Managed 8KB 33.618 μs 0.2166 μs 0.2026 μs -
TryComputeHash · LSH-512-256 · Managed 128KB 520.900 μs 4.2357 μs 3.9621 μs -

LSH-512-512 (KS X 3262)

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · LSH-512-512 · Managed 128B 1.092 μs 0.0158 μs 0.0132 μs -
TryComputeHash · LSH-512-512 · Managed 137B 1.091 μs 0.0124 μs 0.0116 μs -
TryComputeHash · LSH-512-512 · Managed 1KB 5.181 μs 0.0316 μs 0.0280 μs -
TryComputeHash · LSH-512-512 · Managed 1025B 5.176 μs 0.0314 μs 0.0294 μs -
TryComputeHash · LSH-512-512 · Managed 8KB 33.924 μs 0.4760 μs 0.4452 μs -
TryComputeHash · LSH-512-512 · Managed 128KB 522.502 μs 5.8934 μs 5.5127 μs -

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 579.8 ns 11.36 ns 12.63 ns -
TryComputeHash · Ascon-Hash256 · BouncyCastle 128B 768.4 ns 12.44 ns 11.64 ns -
TryComputeHash · Ascon-Hash256 · Managed 137B 606.2 ns 4.96 ns 4.40 ns -
TryComputeHash · Ascon-Hash256 · BouncyCastle 137B 807.3 ns 9.84 ns 9.21 ns -
TryComputeHash · Ascon-Hash256 · Managed 1KB 3,756.6 ns 61.14 ns 57.19 ns -
TryComputeHash · Ascon-Hash256 · BouncyCastle 1KB 4,999.4 ns 64.27 ns 60.12 ns -
TryComputeHash · Ascon-Hash256 · Managed 1025B 3,747.6 ns 67.41 ns 63.05 ns -
TryComputeHash · Ascon-Hash256 · BouncyCastle 1025B 5,006.1 ns 92.76 ns 86.77 ns -
TryComputeHash · Ascon-Hash256 · Managed 8KB 29,138.6 ns 449.13 ns 420.12 ns -
TryComputeHash · Ascon-Hash256 · BouncyCastle 8KB 38,854.5 ns 681.25 ns 637.24 ns -
TryComputeHash · Ascon-Hash256 · Managed 128KB 462,274.4 ns 8,182.51 ns 7,653.93 ns -
TryComputeHash · Ascon-Hash256 · BouncyCastle 128KB 615,387.2 ns 9,071.26 ns 8,041.44 ns -

Ascon-XOF128

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Ascon-XOF128 · Managed 128B 573.9 ns 5.01 ns 4.18 ns -
TryComputeHash · Ascon-XOF128 · BouncyCastle 128B 764.9 ns 11.42 ns 10.13 ns -
TryComputeHash · Ascon-XOF128 · Managed 137B 608.9 ns 10.42 ns 9.75 ns -
TryComputeHash · Ascon-XOF128 · BouncyCastle 137B 801.8 ns 6.42 ns 5.69 ns -
TryComputeHash · Ascon-XOF128 · Managed 1KB 3,741.9 ns 70.22 ns 65.68 ns -
TryComputeHash · Ascon-XOF128 · BouncyCastle 1KB 4,954.6 ns 83.53 ns 78.14 ns -
TryComputeHash · Ascon-XOF128 · Managed 1025B 3,747.0 ns 50.01 ns 46.78 ns -
TryComputeHash · Ascon-XOF128 · BouncyCastle 1025B 4,926.9 ns 46.99 ns 41.65 ns -
TryComputeHash · Ascon-XOF128 · Managed 8KB 28,987.4 ns 505.25 ns 447.89 ns -
TryComputeHash · Ascon-XOF128 · BouncyCastle 8KB 38,618.1 ns 744.02 ns 695.96 ns -
TryComputeHash · Ascon-XOF128 · Managed 128KB 457,370.8 ns 5,060.83 ns 4,226.02 ns -
TryComputeHash · Ascon-XOF128 · BouncyCastle 128KB 618,939.6 ns 11,905.87 ns 11,693.16 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
ComputeMac · TryComputeHash · Managed 128B 684.1 ns 2.77 ns 2.17 ns -
ComputeMac · ComputeHash · OS Native 128B 979.2 ns 7.54 ns 7.06 ns 32 B
ComputeMac · ComputeHash · BouncyCastle 128B 1,317.1 ns 7.89 ns 7.38 ns 160 B
ComputeMac · TryComputeHash · Managed 137B 681.5 ns 2.98 ns 2.64 ns -
ComputeMac · ComputeHash · OS Native 137B 999.1 ns 6.96 ns 6.17 ns 32 B
ComputeMac · ComputeHash · BouncyCastle 137B 1,313.4 ns 6.31 ns 5.60 ns 160 B
ComputeMac · TryComputeHash · Managed 1KB 1,913.4 ns 12.64 ns 11.21 ns -
ComputeMac · ComputeHash · OS Native 1KB 2,387.7 ns 9.57 ns 7.99 ns 32 B
ComputeMac · ComputeHash · BouncyCastle 1KB 3,144.8 ns 17.82 ns 16.67 ns 160 B
ComputeMac · TryComputeHash · Managed 1025B 1,917.9 ns 15.19 ns 14.21 ns -
ComputeMac · ComputeHash · OS Native 1025B 2,404.8 ns 11.15 ns 10.43 ns 32 B
ComputeMac · ComputeHash · BouncyCastle 1025B 3,141.0 ns 12.15 ns 11.37 ns 160 B
ComputeMac · TryComputeHash · Managed 8KB 10,210.1 ns 62.72 ns 58.66 ns -
ComputeMac · ComputeHash · OS Native 8KB 12,302.0 ns 59.27 ns 55.44 ns 32 B
ComputeMac · ComputeHash · BouncyCastle 8KB 16,053.3 ns 86.60 ns 81.00 ns 160 B
ComputeMac · TryComputeHash · Managed 128KB 155,508.1 ns 692.57 ns 647.83 ns -
ComputeMac · ComputeHash · OS Native 128KB 185,262.8 ns 1,187.57 ns 1,110.86 ns 32 B
ComputeMac · ComputeHash · BouncyCastle 128KB 239,918.3 ns 755.69 ns 706.87 ns 160 B

KMAC256

Description TestDataSize Mean Error StdDev Allocated
ComputeMac · TryComputeHash · Managed 128B 670.2 ns 3.73 ns 3.49 ns -
ComputeMac · ComputeHash · OS Native 128B 981.9 ns 5.51 ns 4.88 ns 32 B
ComputeMac · ComputeHash · BouncyCastle 128B 1,307.9 ns 5.31 ns 4.71 ns 160 B
ComputeMac · TryComputeHash · Managed 137B 910.6 ns 4.05 ns 3.79 ns -
ComputeMac · ComputeHash · OS Native 137B 1,225.4 ns 5.72 ns 5.07 ns 32 B
ComputeMac · ComputeHash · BouncyCastle 137B 1,599.8 ns 5.55 ns 4.92 ns 160 B
ComputeMac · TryComputeHash · Managed 1KB 2,056.8 ns 8.67 ns 7.69 ns -
ComputeMac · ComputeHash · OS Native 1KB 2,613.5 ns 14.35 ns 13.42 ns 32 B
ComputeMac · ComputeHash · BouncyCastle 1KB 3,421.4 ns 6.58 ns 5.83 ns 160 B
ComputeMac · TryComputeHash · Managed 1025B 2,060.7 ns 10.94 ns 9.14 ns -
ComputeMac · ComputeHash · OS Native 1025B 2,671.6 ns 13.54 ns 12.66 ns 32 B
ComputeMac · ComputeHash · BouncyCastle 1025B 3,417.1 ns 12.41 ns 11.61 ns 160 B
ComputeMac · TryComputeHash · Managed 8KB 12,493.1 ns 55.66 ns 52.06 ns -
ComputeMac · ComputeHash · OS Native 8KB 15,070.9 ns 59.46 ns 55.62 ns 32 B
ComputeMac · ComputeHash · BouncyCastle 8KB 19,467.7 ns 55.94 ns 46.71 ns 160 B
ComputeMac · TryComputeHash · Managed 128KB 189,517.1 ns 467.77 ns 390.61 ns -
ComputeMac · ComputeHash · OS Native 128KB 226,397.1 ns 1,119.12 ns 992.07 ns 32 B
ComputeMac · ComputeHash · BouncyCastle 128KB 292,863.5 ns 881.67 ns 781.57 ns 160 B

XOF Mode Benchmarks

The XOF (extendable-output function) benchmarks measure squeeze throughput via the IExtendableOutput interface. Each iteration absorbs a fixed 2 KB of input (two 1 KB blocks), then squeezes a variable number of output bytes (128 B to 128 KB). This isolates the squeeze permutation cost from absorb overhead, which is the defining performance characteristic of XOF algorithms. The fixed-output hash benchmarks above measure TryComputeHash with a small fixed digest; these benchmarks focus on the extendable output path.

Implementations include CryptoHives managed, BouncyCastle, OS native, and native Rust (BLAKE3) where available.

SHAKE128 XOF

Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · SHAKE128 · Managed 128B 2.811 μs 0.0159 μs 0.0149 μs -
AbsorbSqueeze · SHAKE128 · OS Native 128B 3.342 μs 0.0218 μs 0.0204 μs -
AbsorbSqueeze · SHAKE128 · BouncyCastle 128B 4.131 μs 0.0256 μs 0.0240 μs -
AbsorbSqueeze · SHAKE128 · Managed 1KB 4.571 μs 0.0282 μs 0.0263 μs -
AbsorbSqueeze · SHAKE128 · OS Native 1KB 4.801 μs 0.0299 μs 0.0280 μs -
AbsorbSqueeze · SHAKE128 · BouncyCastle 1KB 6.098 μs 0.0553 μs 0.0490 μs 1152 B
AbsorbSqueeze · SHAKE128 · OS Native 8KB 15.088 μs 0.1631 μs 0.1446 μs -
AbsorbSqueeze · SHAKE128 · Managed 8KB 17.424 μs 0.1068 μs 0.0999 μs -
AbsorbSqueeze · SHAKE128 · BouncyCastle 8KB 19.935 μs 0.1608 μs 0.1504 μs 9216 B
AbsorbSqueeze · SHAKE128 · OS Native 128KB 193.946 μs 1.6483 μs 1.5418 μs -
AbsorbSqueeze · SHAKE128 · Managed 128KB 239.547 μs 1.8561 μs 1.6454 μs -
AbsorbSqueeze · SHAKE128 · BouncyCastle 128KB 263.310 μs 2.4667 μs 2.3074 μs 149760 B

SHAKE256 XOF

Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · SHAKE256 · Managed 128B 3.394 μs 0.0199 μs 0.0186 μs -
AbsorbSqueeze · SHAKE256 · OS Native 128B 4.047 μs 0.0343 μs 0.0321 μs -
AbsorbSqueeze · SHAKE256 · BouncyCastle 128B 5.012 μs 0.0297 μs 0.0278 μs -
AbsorbSqueeze · SHAKE256 · Managed 1KB 5.364 μs 0.0526 μs 0.0492 μs -
AbsorbSqueeze · SHAKE256 · OS Native 1KB 5.744 μs 0.0300 μs 0.0281 μs -
AbsorbSqueeze · SHAKE256 · BouncyCastle 1KB 7.299 μs 0.0340 μs 0.0318 μs 1120 B
AbsorbSqueeze · SHAKE256 · OS Native 8KB 18.539 μs 0.1094 μs 0.1023 μs -
AbsorbSqueeze · SHAKE256 · Managed 8KB 20.323 μs 0.1186 μs 0.1109 μs -
AbsorbSqueeze · SHAKE256 · BouncyCastle 8KB 24.710 μs 0.1296 μs 0.1213 μs 9600 B
AbsorbSqueeze · SHAKE256 · OS Native 128KB 237.210 μs 1.4442 μs 1.3509 μs -
AbsorbSqueeze · SHAKE256 · Managed 128KB 276.694 μs 2.3818 μs 2.2279 μs -
AbsorbSqueeze · SHAKE256 · BouncyCastle 128KB 325.734 μs 4.1068 μs 3.8415 μs 154080 B

cSHAKE128 XOF

Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · cSHAKE128 · Managed 128B 2.836 μs 0.0163 μs 0.0136 μs -
AbsorbSqueeze · cSHAKE128 · BouncyCastle 128B 4.156 μs 0.0249 μs 0.0221 μs -
AbsorbSqueeze · cSHAKE128 · Managed 1KB 4.606 μs 0.0315 μs 0.0295 μs -
AbsorbSqueeze · cSHAKE128 · BouncyCastle 1KB 6.181 μs 0.0539 μs 0.0478 μs 1152 B
AbsorbSqueeze · cSHAKE128 · Managed 8KB 17.668 μs 0.3276 μs 0.3065 μs -
AbsorbSqueeze · cSHAKE128 · BouncyCastle 8KB 20.208 μs 0.2379 μs 0.2226 μs 9216 B
AbsorbSqueeze · cSHAKE128 · Managed 128KB 241.793 μs 2.4495 μs 2.1714 μs -
AbsorbSqueeze · cSHAKE128 · BouncyCastle 128KB 267.440 μs 4.3463 μs 4.0655 μs 149760 B

cSHAKE256 XOF

Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · cSHAKE256 · Managed 128B 3.427 μs 0.0293 μs 0.0274 μs -
AbsorbSqueeze · cSHAKE256 · BouncyCastle 128B 5.073 μs 0.0357 μs 0.0316 μs -
AbsorbSqueeze · cSHAKE256 · Managed 1KB 5.355 μs 0.0328 μs 0.0291 μs -
AbsorbSqueeze · cSHAKE256 · BouncyCastle 1KB 7.371 μs 0.0416 μs 0.0389 μs 1120 B
AbsorbSqueeze · cSHAKE256 · Managed 8KB 20.462 μs 0.1933 μs 0.1714 μs -
AbsorbSqueeze · cSHAKE256 · BouncyCastle 8KB 25.064 μs 0.1812 μs 0.1695 μs 9600 B
AbsorbSqueeze · cSHAKE256 · Managed 128KB 277.657 μs 2.9247 μs 2.5927 μs -
AbsorbSqueeze · cSHAKE256 · BouncyCastle 128KB 327.108 μs 2.8319 μs 2.6489 μs 154080 B

TurboSHAKE128 XOF

Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · TurboSHAKE128 · Managed 128B 1.589 μs 0.0141 μs 0.0132 μs -
AbsorbSqueeze · TurboSHAKE128 · Managed 1KB 2.780 μs 0.0183 μs 0.0171 μs -
AbsorbSqueeze · TurboSHAKE128 · Managed 8KB 11.697 μs 0.0939 μs 0.0878 μs -
AbsorbSqueeze · TurboSHAKE128 · Managed 128KB 165.344 μs 1.1889 μs 1.1121 μs -

TurboSHAKE256 XOF

Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · TurboSHAKE256 · Managed 128B 1.893 μs 0.0097 μs 0.0091 μs -
AbsorbSqueeze · TurboSHAKE256 · Managed 1KB 3.187 μs 0.0239 μs 0.0212 μs -
AbsorbSqueeze · TurboSHAKE256 · Managed 8KB 13.181 μs 0.0893 μs 0.0791 μs -
AbsorbSqueeze · TurboSHAKE256 · Managed 128KB 184.614 μs 1.2906 μs 1.2073 μs -

KT128 XOF

Description TestDataSize Mean Error StdDev Median Allocated
AbsorbSqueeze · KT128 · Managed 128B 1.622 μs 0.0118 μs 0.0110 μs 1.622 μs -
AbsorbSqueeze · KT128 · Managed 1KB 2.818 μs 0.0229 μs 0.0214 μs 2.816 μs -
AbsorbSqueeze · KT128 · Managed 8KB 12.010 μs 0.2010 μs 0.3920 μs 11.830 μs -
AbsorbSqueeze · KT128 · Managed 128KB 166.194 μs 1.0116 μs 0.9463 μs 166.569 μs -

KT256 XOF

Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · KT256 · Managed 128B 1.930 μs 0.0130 μs 0.0122 μs -
AbsorbSqueeze · KT256 · Managed 1KB 3.214 μs 0.0193 μs 0.0181 μs -
AbsorbSqueeze · KT256 · Managed 8KB 13.273 μs 0.0754 μs 0.0705 μs -
AbsorbSqueeze · KT256 · Managed 128KB 184.963 μs 1.1531 μs 1.0786 μs -

KMAC128 XOF

Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · KMAC-128 · Managed 128B 3.294 μs 0.0375 μs 0.0350 μs -
AbsorbSqueeze · KMAC-128 · OS Native 128B 4.050 μs 0.0657 μs 0.0548 μs 32 B
AbsorbSqueeze · KMAC-128 · BouncyCastle 128B 5.160 μs 0.0347 μs 0.0325 μs 128 B
AbsorbSqueeze · KMAC-128 · Managed 1KB 5.049 μs 0.0451 μs 0.0400 μs -
AbsorbSqueeze · KMAC-128 · OS Native 1KB 5.467 μs 0.0407 μs 0.0361 μs 32 B
AbsorbSqueeze · KMAC-128 · BouncyCastle 1KB 7.196 μs 0.0541 μs 0.0506 μs 1280 B
AbsorbSqueeze · KMAC-128 · OS Native 8KB 15.919 μs 0.1590 μs 0.1328 μs 32 B
AbsorbSqueeze · KMAC-128 · Managed 8KB 17.989 μs 0.1714 μs 0.1603 μs -
AbsorbSqueeze · KMAC-128 · BouncyCastle 8KB 21.169 μs 0.1310 μs 0.1225 μs 9344 B
AbsorbSqueeze · KMAC-128 · OS Native 128KB 196.669 μs 1.8585 μs 1.6475 μs 32 B
AbsorbSqueeze · KMAC-128 · Managed 128KB 242.259 μs 1.6483 μs 1.4612 μs -
AbsorbSqueeze · KMAC-128 · BouncyCastle 128KB 267.527 μs 2.7007 μs 2.3941 μs 149888 B

KMAC256 XOF

Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · KMAC-256 · Managed 128B 3.867 μs 0.0370 μs 0.0328 μs -
AbsorbSqueeze · KMAC-256 · OS Native 128B 4.763 μs 0.0459 μs 0.0407 μs 32 B
AbsorbSqueeze · KMAC-256 · BouncyCastle 128B 6.103 μs 0.0519 μs 0.0486 μs 128 B
AbsorbSqueeze · KMAC-256 · Managed 1KB 5.824 μs 0.0503 μs 0.0446 μs -
AbsorbSqueeze · KMAC-256 · OS Native 1KB 6.453 μs 0.0809 μs 0.0717 μs 32 B
AbsorbSqueeze · KMAC-256 · BouncyCastle 1KB 8.385 μs 0.0548 μs 0.0458 μs 1248 B
AbsorbSqueeze · KMAC-256 · OS Native 8KB 19.273 μs 0.1469 μs 0.1302 μs 32 B
AbsorbSqueeze · KMAC-256 · Managed 8KB 20.938 μs 0.2444 μs 0.2286 μs -
AbsorbSqueeze · KMAC-256 · BouncyCastle 8KB 25.787 μs 0.2122 μs 0.1985 μs 9728 B
AbsorbSqueeze · KMAC-256 · OS Native 128KB 238.920 μs 1.8466 μs 1.7274 μs 32 B
AbsorbSqueeze · KMAC-256 · Managed 128KB 276.988 μs 2.2135 μs 1.9622 μs -
AbsorbSqueeze · KMAC-256 · BouncyCastle 128KB 328.022 μs 2.8794 μs 2.6934 μs 154208 B

BLAKE3 XOF

Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · BLAKE3 · Native 128B 1.578 μs 0.0066 μs 0.0058 μs -
AbsorbSqueeze · BLAKE3 · Ssse3 128B 2.350 μs 0.0118 μs 0.0099 μs -
AbsorbSqueeze · BLAKE3 · Managed 128B 9.502 μs 0.0665 μs 0.0623 μs -
AbsorbSqueeze · BLAKE3 · BouncyCastle 128B 19.578 μs 0.1210 μs 0.1073 μs 56 B
AbsorbSqueeze · BLAKE3 · Native 1KB 2.154 μs 0.0208 μs 0.0195 μs -
AbsorbSqueeze · BLAKE3 · Ssse3 1KB 3.223 μs 0.0126 μs 0.0112 μs -
AbsorbSqueeze · BLAKE3 · Managed 1KB 13.211 μs 0.0605 μs 0.0536 μs -
AbsorbSqueeze · BLAKE3 · BouncyCastle 1KB 28.821 μs 0.2392 μs 0.2238 μs 56 B
AbsorbSqueeze · BLAKE3 · Native 8KB 6.639 μs 0.0192 μs 0.0161 μs -
AbsorbSqueeze · BLAKE3 · Ssse3 8KB 10.118 μs 0.0451 μs 0.0400 μs -
AbsorbSqueeze · BLAKE3 · Managed 8KB 43.075 μs 0.1989 μs 0.1763 μs -
AbsorbSqueeze · BLAKE3 · BouncyCastle 8KB 102.746 μs 0.5135 μs 0.4552 μs 56 B
AbsorbSqueeze · BLAKE3 · Native 128KB 84.740 μs 1.4031 μs 1.3780 μs -
AbsorbSqueeze · BLAKE3 · Ssse3 128KB 128.134 μs 0.4136 μs 0.3454 μs -
AbsorbSqueeze · BLAKE3 · Managed 128KB 559.513 μs 2.9096 μs 2.7216 μs -
AbsorbSqueeze · BLAKE3 · BouncyCastle 128KB 1,316.753 μs 10.6814 μs 9.9914 μs 56 B

Ascon-XOF128 XOF

Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · Ascon-XOF128 · Managed 128B 7.910 μs 0.0443 μs 0.0592 μs -
AbsorbSqueeze · Ascon-XOF128 · BouncyCastle 128B 10.382 μs 0.0489 μs 0.0433 μs -
AbsorbSqueeze · Ascon-XOF128 · Managed 1KB 10.998 μs 0.0823 μs 0.0729 μs -
AbsorbSqueeze · Ascon-XOF128 · BouncyCastle 1KB 14.668 μs 0.0671 μs 0.0560 μs -
AbsorbSqueeze · Ascon-XOF128 · Managed 8KB 36.626 μs 0.6365 μs 1.0808 μs -
AbsorbSqueeze · Ascon-XOF128 · BouncyCastle 8KB 48.784 μs 0.2752 μs 0.2440 μs -
AbsorbSqueeze · Ascon-XOF128 · Managed 128KB 468.594 μs 3.3391 μs 2.9600 μs -
AbsorbSqueeze · Ascon-XOF128 · BouncyCastle 128KB 636.513 μs 4.3272 μs 4.0477 μs -

See also