Table of Contents

Windows X64 AMD Ryzen 5 7600X Hash Benchmarks

Machine Profile

Machine Specification

The benchmarks were run on the following machine:

BenchmarkDotNet v0.15.8, Windows 11 (10.0.26200.8246/25H2/2025Update/HudsonValley2)
AMD Ryzen 5 7600X 4.70GHz, 1 CPU, 12 logical and 6 physical cores
.NET SDK 10.0.202
[Host]    : .NET 10.0.6 (10.0.6, 10.0.626.17701), X64 RyuJIT x86-64-v4
.NET 10.0 : .NET 10.0.6 (10.0.6, 10.0.626.17701), 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.

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)

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 AVX2 BLAKE2b AVX2 ~10% faster than BouncyCastle; BLAKE2s SIMD on parity with BouncyCastle
BLAKE3 Native (Rust) Rust interop ~1.4× faster at small inputs, ~12× at large due to multi-chunk parallelism; SSSE3 managed ~8–9× 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 ~36–67% faster than OS and ~35–67% faster than BouncyCastle depending on payload size
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 · CryptoHives-Scalar 128B 474.7 ns 1.48 ns 1.31 ns -
TryComputeHash · SHA-224 · BouncyCastle 128B 553.1 ns 2.74 ns 2.29 ns -
TryComputeHash · SHA-224 · CryptoHives-Scalar 137B 475.5 ns 1.38 ns 1.15 ns -
TryComputeHash · SHA-224 · BouncyCastle 137B 555.3 ns 2.78 ns 2.60 ns -
TryComputeHash · SHA-224 · CryptoHives-Scalar 1KB 2,640.4 ns 14.56 ns 13.62 ns -
TryComputeHash · SHA-224 · BouncyCastle 1KB 3,075.8 ns 13.73 ns 12.84 ns -
TryComputeHash · SHA-224 · CryptoHives-Scalar 1025B 2,647.5 ns 10.78 ns 9.55 ns -
TryComputeHash · SHA-224 · BouncyCastle 1025B 3,077.8 ns 13.97 ns 12.38 ns -
TryComputeHash · SHA-224 · CryptoHives-Scalar 8KB 19,901.7 ns 68.55 ns 60.77 ns -
TryComputeHash · SHA-224 · BouncyCastle 8KB 23,252.6 ns 97.27 ns 86.23 ns -
TryComputeHash · SHA-224 · CryptoHives-Scalar 128KB 316,589.1 ns 2,196.12 ns 1,946.80 ns -
TryComputeHash · SHA-224 · BouncyCastle 128KB 369,038.1 ns 1,868.64 ns 1,747.92 ns -

SHA-256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA-256 · OS Native 128B 106.2 ns 0.25 ns 0.23 ns -
TryComputeHash · SHA-256 · CryptoHives-Scalar 128B 474.5 ns 2.14 ns 1.78 ns -
TryComputeHash · SHA-256 · BouncyCastle 128B 554.0 ns 2.54 ns 2.25 ns -
TryComputeHash · SHA-256 · OS Native 137B 106.3 ns 0.28 ns 0.26 ns -
TryComputeHash · SHA-256 · CryptoHives-Scalar 137B 476.7 ns 2.56 ns 2.40 ns -
TryComputeHash · SHA-256 · BouncyCastle 137B 583.6 ns 1.23 ns 1.03 ns -
TryComputeHash · SHA-256 · OS Native 1KB 463.4 ns 0.66 ns 0.59 ns -
TryComputeHash · SHA-256 · CryptoHives-Scalar 1KB 2,640.9 ns 13.29 ns 12.43 ns -
TryComputeHash · SHA-256 · BouncyCastle 1KB 3,039.1 ns 8.52 ns 7.55 ns -
TryComputeHash · SHA-256 · OS Native 1025B 463.7 ns 0.74 ns 0.66 ns -
TryComputeHash · SHA-256 · CryptoHives-Scalar 1025B 2,649.5 ns 15.33 ns 14.34 ns -
TryComputeHash · SHA-256 · BouncyCastle 1025B 3,035.4 ns 10.71 ns 9.50 ns -
TryComputeHash · SHA-256 · OS Native 8KB 3,276.0 ns 7.24 ns 6.77 ns -
TryComputeHash · SHA-256 · CryptoHives-Scalar 8KB 20,058.6 ns 223.86 ns 209.39 ns -
TryComputeHash · SHA-256 · BouncyCastle 8KB 22,964.1 ns 120.51 ns 112.72 ns -
TryComputeHash · SHA-256 · OS Native 128KB 51,492.5 ns 109.27 ns 91.24 ns -
TryComputeHash · SHA-256 · CryptoHives-Scalar 128KB 316,993.3 ns 1,838.70 ns 1,629.96 ns -
TryComputeHash · SHA-256 · BouncyCastle 128KB 363,789.5 ns 1,264.91 ns 1,183.20 ns -

SHA-384

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA-384 · OS Native 128B 351.7 ns 1.46 ns 1.30 ns -
TryComputeHash · SHA-384 · CryptoHives-Scalar 128B 407.1 ns 1.37 ns 1.14 ns -
TryComputeHash · SHA-384 · BouncyCastle 128B 482.6 ns 1.75 ns 1.64 ns -
TryComputeHash · SHA-384 · OS Native 137B 353.9 ns 1.93 ns 1.81 ns -
TryComputeHash · SHA-384 · CryptoHives-Scalar 137B 409.6 ns 1.47 ns 1.30 ns -
TryComputeHash · SHA-384 · BouncyCastle 137B 498.3 ns 1.78 ns 1.66 ns -
TryComputeHash · SHA-384 · OS Native 1KB 1,405.2 ns 4.39 ns 4.10 ns -
TryComputeHash · SHA-384 · CryptoHives-Scalar 1KB 1,803.4 ns 6.75 ns 6.32 ns -
TryComputeHash · SHA-384 · BouncyCastle 1KB 2,145.2 ns 9.49 ns 8.41 ns -
TryComputeHash · SHA-384 · OS Native 1025B 1,408.8 ns 5.44 ns 4.82 ns -
TryComputeHash · SHA-384 · CryptoHives-Scalar 1025B 1,810.8 ns 8.21 ns 7.68 ns -
TryComputeHash · SHA-384 · BouncyCastle 1025B 2,135.0 ns 7.15 ns 6.69 ns -
TryComputeHash · SHA-384 · OS Native 8KB 9,818.9 ns 48.02 ns 44.91 ns -
TryComputeHash · SHA-384 · CryptoHives-Scalar 8KB 13,073.9 ns 65.11 ns 57.72 ns -
TryComputeHash · SHA-384 · BouncyCastle 8KB 15,307.5 ns 29.15 ns 27.27 ns -
TryComputeHash · SHA-384 · OS Native 128KB 155,011.7 ns 743.30 ns 695.28 ns -
TryComputeHash · SHA-384 · CryptoHives-Scalar 128KB 205,995.8 ns 1,173.90 ns 980.26 ns -
TryComputeHash · SHA-384 · BouncyCastle 128KB 241,125.3 ns 506.21 ns 473.51 ns -

SHA-512

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA-512 · OS Native 128B 344.4 ns 1.39 ns 1.23 ns -
TryComputeHash · SHA-512 · CryptoHives-Scalar 128B 408.0 ns 1.62 ns 1.51 ns -
TryComputeHash · SHA-512 · BouncyCastle 128B 480.8 ns 2.76 ns 2.59 ns -
TryComputeHash · SHA-512 · OS Native 137B 344.8 ns 1.55 ns 1.45 ns -
TryComputeHash · SHA-512 · CryptoHives-Scalar 137B 404.4 ns 1.68 ns 1.49 ns -
TryComputeHash · SHA-512 · BouncyCastle 137B 485.3 ns 2.92 ns 2.73 ns -
TryComputeHash · SHA-512 · OS Native 1KB 1,390.5 ns 6.22 ns 5.82 ns -
TryComputeHash · SHA-512 · CryptoHives-Scalar 1KB 1,780.3 ns 7.24 ns 6.77 ns -
TryComputeHash · SHA-512 · BouncyCastle 1KB 2,110.8 ns 14.47 ns 13.53 ns -
TryComputeHash · SHA-512 · OS Native 1025B 1,384.1 ns 5.23 ns 4.37 ns -
TryComputeHash · SHA-512 · CryptoHives-Scalar 1025B 1,805.4 ns 5.82 ns 4.86 ns -
TryComputeHash · SHA-512 · BouncyCastle 1025B 2,112.5 ns 14.46 ns 13.53 ns -
TryComputeHash · SHA-512 · OS Native 8KB 9,692.0 ns 38.64 ns 34.26 ns -
TryComputeHash · SHA-512 · CryptoHives-Scalar 8KB 12,937.2 ns 31.58 ns 26.37 ns -
TryComputeHash · SHA-512 · BouncyCastle 8KB 15,138.5 ns 67.20 ns 62.86 ns -
TryComputeHash · SHA-512 · OS Native 128KB 152,027.2 ns 433.78 ns 384.53 ns -
TryComputeHash · SHA-512 · CryptoHives-Scalar 128KB 200,378.1 ns 636.77 ns 564.48 ns -
TryComputeHash · SHA-512 · BouncyCastle 128KB 237,933.7 ns 1,063.56 ns 994.85 ns -

SHA-512/224

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA-512/224 · CryptoHives-Scalar 128B 407.1 ns 2.05 ns 1.81 ns -
TryComputeHash · SHA-512/224 · BouncyCastle 128B 494.3 ns 1.58 ns 1.40 ns -
TryComputeHash · SHA-512/224 · CryptoHives-Scalar 137B 408.2 ns 1.03 ns 0.97 ns -
TryComputeHash · SHA-512/224 · BouncyCastle 137B 499.7 ns 0.61 ns 0.51 ns -
TryComputeHash · SHA-512/224 · CryptoHives-Scalar 1KB 1,797.6 ns 7.15 ns 5.97 ns -
TryComputeHash · SHA-512/224 · BouncyCastle 1KB 2,153.7 ns 9.63 ns 8.53 ns -
TryComputeHash · SHA-512/224 · CryptoHives-Scalar 1025B 1,828.9 ns 7.60 ns 7.11 ns -
TryComputeHash · SHA-512/224 · BouncyCastle 1025B 2,159.0 ns 9.67 ns 7.55 ns -
TryComputeHash · SHA-512/224 · CryptoHives-Scalar 8KB 13,032.0 ns 121.89 ns 114.02 ns -
TryComputeHash · SHA-512/224 · BouncyCastle 8KB 15,476.4 ns 25.61 ns 21.39 ns -
TryComputeHash · SHA-512/224 · CryptoHives-Scalar 128KB 203,571.7 ns 1,062.15 ns 886.95 ns -
TryComputeHash · SHA-512/224 · BouncyCastle 128KB 243,230.4 ns 1,406.86 ns 1,315.97 ns -

SHA-512/256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA-512/256 · CryptoHives-Scalar 128B 416.1 ns 5.31 ns 4.97 ns -
TryComputeHash · SHA-512/256 · BouncyCastle 128B 505.2 ns 3.90 ns 3.65 ns -
TryComputeHash · SHA-512/256 · CryptoHives-Scalar 137B 410.6 ns 2.59 ns 2.16 ns -
TryComputeHash · SHA-512/256 · BouncyCastle 137B 505.2 ns 2.58 ns 2.42 ns -
TryComputeHash · SHA-512/256 · CryptoHives-Scalar 1KB 1,802.2 ns 7.63 ns 6.37 ns -
TryComputeHash · SHA-512/256 · BouncyCastle 1KB 2,162.0 ns 12.29 ns 10.89 ns -
TryComputeHash · SHA-512/256 · CryptoHives-Scalar 1025B 1,796.8 ns 8.02 ns 7.50 ns -
TryComputeHash · SHA-512/256 · BouncyCastle 1025B 2,129.5 ns 9.90 ns 9.26 ns -
TryComputeHash · SHA-512/256 · CryptoHives-Scalar 8KB 12,883.5 ns 32.01 ns 26.73 ns -
TryComputeHash · SHA-512/256 · BouncyCastle 8KB 15,154.4 ns 75.78 ns 70.88 ns -
TryComputeHash · SHA-512/256 · CryptoHives-Scalar 128KB 200,709.1 ns 612.81 ns 511.72 ns -
TryComputeHash · SHA-512/256 · BouncyCastle 128KB 238,460.7 ns 1,132.03 ns 1,058.90 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 · CryptoHives-Scalar 128B 208.3 ns 1.13 ns 1.05 ns -
TryComputeHash · SHA3-224 · CryptoHives-AVX2 128B 278.8 ns 0.54 ns 0.48 ns -
TryComputeHash · SHA3-224 · CryptoHives-AVX512F 128B 288.7 ns 0.68 ns 0.64 ns -
TryComputeHash · SHA3-224 · BouncyCastle 128B 333.3 ns 1.82 ns 1.70 ns -
TryComputeHash · SHA3-224 · CryptoHives-Scalar 137B 208.8 ns 1.00 ns 0.83 ns -
TryComputeHash · SHA3-224 · CryptoHives-AVX2 137B 278.8 ns 0.82 ns 0.77 ns -
TryComputeHash · SHA3-224 · CryptoHives-AVX512F 137B 287.7 ns 0.52 ns 0.46 ns -
TryComputeHash · SHA3-224 · BouncyCastle 137B 333.9 ns 2.53 ns 2.25 ns -
TryComputeHash · SHA3-224 · CryptoHives-Scalar 1KB 1,594.7 ns 17.07 ns 14.25 ns -
TryComputeHash · SHA3-224 · CryptoHives-AVX2 1KB 2,161.8 ns 7.45 ns 6.97 ns -
TryComputeHash · SHA3-224 · CryptoHives-AVX512F 1KB 2,227.0 ns 22.21 ns 17.34 ns -
TryComputeHash · SHA3-224 · BouncyCastle 1KB 2,457.1 ns 7.03 ns 5.87 ns -
TryComputeHash · SHA3-224 · CryptoHives-Scalar 1025B 1,591.9 ns 5.94 ns 4.96 ns -
TryComputeHash · SHA3-224 · CryptoHives-AVX2 1025B 2,160.1 ns 5.45 ns 4.55 ns -
TryComputeHash · SHA3-224 · CryptoHives-AVX512F 1025B 2,223.8 ns 6.95 ns 6.50 ns -
TryComputeHash · SHA3-224 · BouncyCastle 1025B 2,466.6 ns 13.44 ns 12.57 ns -
TryComputeHash · SHA3-224 · CryptoHives-Scalar 8KB 11,287.9 ns 48.42 ns 42.92 ns -
TryComputeHash · SHA3-224 · CryptoHives-AVX2 8KB 15,355.3 ns 41.49 ns 34.65 ns -
TryComputeHash · SHA3-224 · CryptoHives-AVX512F 8KB 15,736.7 ns 47.10 ns 41.75 ns -
TryComputeHash · SHA3-224 · BouncyCastle 8KB 17,485.1 ns 113.87 ns 106.51 ns -
TryComputeHash · SHA3-224 · CryptoHives-Scalar 128KB 180,536.4 ns 1,189.28 ns 1,112.46 ns -
TryComputeHash · SHA3-224 · CryptoHives-AVX2 128KB 245,357.1 ns 713.93 ns 632.88 ns -
TryComputeHash · SHA3-224 · CryptoHives-AVX512F 128KB 251,644.1 ns 355.56 ns 332.59 ns -
TryComputeHash · SHA3-224 · BouncyCastle 128KB 278,583.9 ns 1,059.15 ns 884.44 ns -

SHA3-256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA3-256 · CryptoHives-Scalar 128B 209.3 ns 0.82 ns 0.77 ns -
TryComputeHash · SHA3-256 · OS Native 128B 272.4 ns 2.16 ns 1.91 ns -
TryComputeHash · SHA3-256 · CryptoHives-AVX2 128B 283.1 ns 0.75 ns 0.70 ns -
TryComputeHash · SHA3-256 · CryptoHives-AVX512F 128B 287.6 ns 0.76 ns 0.67 ns -
TryComputeHash · SHA3-256 · BouncyCastle 128B 333.5 ns 2.17 ns 1.93 ns -
TryComputeHash · SHA3-256 · CryptoHives-Scalar 137B 404.0 ns 2.40 ns 2.25 ns -
TryComputeHash · SHA3-256 · OS Native 137B 504.0 ns 4.60 ns 4.30 ns -
TryComputeHash · SHA3-256 · CryptoHives-AVX2 137B 547.2 ns 1.65 ns 1.38 ns -
TryComputeHash · SHA3-256 · CryptoHives-AVX512F 137B 566.9 ns 1.95 ns 1.52 ns -
TryComputeHash · SHA3-256 · BouncyCastle 137B 632.7 ns 3.60 ns 3.37 ns -
TryComputeHash · SHA3-256 · CryptoHives-Scalar 1KB 1,587.3 ns 7.36 ns 6.15 ns -
TryComputeHash · SHA3-256 · OS Native 1KB 1,920.5 ns 17.25 ns 16.14 ns -
TryComputeHash · SHA3-256 · CryptoHives-AVX2 1KB 2,163.6 ns 5.12 ns 4.28 ns -
TryComputeHash · SHA3-256 · CryptoHives-AVX512F 1KB 2,220.6 ns 6.42 ns 6.01 ns -
TryComputeHash · SHA3-256 · BouncyCastle 1KB 2,461.8 ns 14.41 ns 13.48 ns -
TryComputeHash · SHA3-256 · CryptoHives-Scalar 1025B 1,586.1 ns 7.93 ns 7.03 ns -
TryComputeHash · SHA3-256 · OS Native 1025B 1,932.1 ns 14.34 ns 13.41 ns -
TryComputeHash · SHA3-256 · CryptoHives-AVX2 1025B 2,163.0 ns 5.92 ns 5.53 ns -
TryComputeHash · SHA3-256 · CryptoHives-AVX512F 1025B 2,228.8 ns 10.72 ns 10.03 ns -
TryComputeHash · SHA3-256 · BouncyCastle 1025B 2,464.4 ns 15.37 ns 14.38 ns -
TryComputeHash · SHA3-256 · CryptoHives-Scalar 8KB 12,066.3 ns 62.73 ns 52.39 ns -
TryComputeHash · SHA3-256 · OS Native 8KB 14,395.3 ns 69.48 ns 61.60 ns -
TryComputeHash · SHA3-256 · CryptoHives-AVX2 8KB 16,481.3 ns 55.37 ns 51.79 ns -
TryComputeHash · SHA3-256 · CryptoHives-AVX512F 8KB 16,834.0 ns 81.16 ns 71.95 ns -
TryComputeHash · SHA3-256 · BouncyCastle 8KB 18,518.3 ns 47.59 ns 39.74 ns -
TryComputeHash · SHA3-256 · CryptoHives-Scalar 128KB 189,859.5 ns 1,430.20 ns 1,194.28 ns -
TryComputeHash · SHA3-256 · OS Native 128KB 226,920.8 ns 724.42 ns 642.18 ns -
TryComputeHash · SHA3-256 · CryptoHives-AVX2 128KB 259,405.8 ns 1,073.17 ns 951.34 ns -
TryComputeHash · SHA3-256 · CryptoHives-AVX512F 128KB 265,529.6 ns 977.32 ns 866.37 ns -
TryComputeHash · SHA3-256 · BouncyCastle 128KB 294,199.9 ns 1,743.86 ns 1,631.21 ns -

SHA3-384

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA3-384 · CryptoHives-Scalar 128B 400.5 ns 3.16 ns 2.80 ns -
TryComputeHash · SHA3-384 · OS Native 128B 505.7 ns 3.17 ns 2.64 ns -
TryComputeHash · SHA3-384 · CryptoHives-AVX2 128B 548.8 ns 2.01 ns 1.79 ns -
TryComputeHash · SHA3-384 · CryptoHives-AVX512F 128B 570.3 ns 2.93 ns 2.74 ns -
TryComputeHash · SHA3-384 · BouncyCastle 128B 627.3 ns 2.18 ns 1.93 ns -
TryComputeHash · SHA3-384 · CryptoHives-Scalar 137B 400.7 ns 2.61 ns 2.44 ns -
TryComputeHash · SHA3-384 · OS Native 137B 507.9 ns 3.87 ns 3.43 ns -
TryComputeHash · SHA3-384 · CryptoHives-AVX2 137B 549.3 ns 1.82 ns 1.61 ns -
TryComputeHash · SHA3-384 · CryptoHives-AVX512F 137B 573.4 ns 2.58 ns 2.41 ns -
TryComputeHash · SHA3-384 · BouncyCastle 137B 627.9 ns 2.87 ns 2.55 ns -
TryComputeHash · SHA3-384 · CryptoHives-Scalar 1KB 1,965.3 ns 12.23 ns 10.84 ns -
TryComputeHash · SHA3-384 · OS Native 1KB 2,409.3 ns 17.84 ns 16.68 ns -
TryComputeHash · SHA3-384 · CryptoHives-AVX2 1KB 2,692.5 ns 5.22 ns 4.63 ns -
TryComputeHash · SHA3-384 · CryptoHives-AVX512F 1KB 2,780.3 ns 9.02 ns 8.44 ns -
TryComputeHash · SHA3-384 · BouncyCastle 1KB 3,060.8 ns 13.67 ns 12.12 ns -
TryComputeHash · SHA3-384 · CryptoHives-Scalar 1025B 1,966.1 ns 13.83 ns 12.93 ns -
TryComputeHash · SHA3-384 · OS Native 1025B 2,385.3 ns 13.17 ns 12.32 ns -
TryComputeHash · SHA3-384 · CryptoHives-AVX2 1025B 2,694.5 ns 6.65 ns 5.89 ns -
TryComputeHash · SHA3-384 · CryptoHives-AVX512F 1025B 2,773.7 ns 6.43 ns 6.01 ns -
TryComputeHash · SHA3-384 · BouncyCastle 1025B 3,057.5 ns 17.05 ns 15.95 ns -
TryComputeHash · SHA3-384 · CryptoHives-Scalar 8KB 15,455.6 ns 88.04 ns 78.04 ns -
TryComputeHash · SHA3-384 · OS Native 8KB 18,456.5 ns 122.13 ns 108.26 ns -
TryComputeHash · SHA3-384 · CryptoHives-AVX2 8KB 21,104.2 ns 35.65 ns 29.77 ns -
TryComputeHash · SHA3-384 · CryptoHives-AVX512F 8KB 21,712.6 ns 41.23 ns 34.43 ns -
TryComputeHash · SHA3-384 · BouncyCastle 8KB 23,890.2 ns 135.65 ns 113.27 ns -
TryComputeHash · SHA3-384 · CryptoHives-Scalar 128KB 246,663.2 ns 1,369.74 ns 1,143.80 ns -
TryComputeHash · SHA3-384 · OS Native 128KB 294,081.1 ns 1,658.06 ns 1,384.56 ns -
TryComputeHash · SHA3-384 · CryptoHives-AVX2 128KB 337,639.6 ns 386.10 ns 342.27 ns -
TryComputeHash · SHA3-384 · CryptoHives-AVX512F 128KB 347,626.4 ns 786.53 ns 697.24 ns -
TryComputeHash · SHA3-384 · BouncyCastle 128KB 381,335.5 ns 1,445.01 ns 1,351.66 ns -

SHA3-512

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA3-512 · CryptoHives-Scalar 128B 397.5 ns 1.74 ns 1.63 ns -
TryComputeHash · SHA3-512 · OS Native 128B 503.4 ns 4.23 ns 3.75 ns -
TryComputeHash · SHA3-512 · CryptoHives-AVX2 128B 544.5 ns 2.11 ns 1.65 ns -
TryComputeHash · SHA3-512 · CryptoHives-AVX512F 128B 561.4 ns 0.83 ns 0.74 ns -
TryComputeHash · SHA3-512 · BouncyCastle 128B 628.4 ns 3.32 ns 3.10 ns -
TryComputeHash · SHA3-512 · CryptoHives-Scalar 137B 397.5 ns 1.86 ns 1.65 ns -
TryComputeHash · SHA3-512 · OS Native 137B 503.7 ns 3.34 ns 2.78 ns -
TryComputeHash · SHA3-512 · CryptoHives-AVX2 137B 543.4 ns 1.65 ns 1.55 ns -
TryComputeHash · SHA3-512 · CryptoHives-AVX512F 137B 563.0 ns 1.97 ns 1.84 ns -
TryComputeHash · SHA3-512 · BouncyCastle 137B 630.4 ns 3.72 ns 2.90 ns -
TryComputeHash · SHA3-512 · CryptoHives-Scalar 1KB 2,930.4 ns 19.11 ns 16.94 ns -
TryComputeHash · SHA3-512 · OS Native 1KB 3,560.2 ns 13.57 ns 12.69 ns -
TryComputeHash · SHA3-512 · CryptoHives-AVX2 1KB 4,005.6 ns 7.96 ns 7.44 ns -
TryComputeHash · SHA3-512 · CryptoHives-AVX512F 1KB 4,123.3 ns 10.96 ns 10.25 ns -
TryComputeHash · SHA3-512 · BouncyCastle 1KB 4,525.2 ns 30.00 ns 28.06 ns -
TryComputeHash · SHA3-512 · CryptoHives-Scalar 1025B 3,011.3 ns 58.95 ns 60.54 ns -
TryComputeHash · SHA3-512 · OS Native 1025B 3,540.0 ns 28.46 ns 23.77 ns -
TryComputeHash · SHA3-512 · CryptoHives-AVX2 1025B 4,009.7 ns 7.87 ns 7.36 ns -
TryComputeHash · SHA3-512 · CryptoHives-AVX512F 1025B 4,108.9 ns 15.44 ns 12.05 ns -
TryComputeHash · SHA3-512 · BouncyCastle 1025B 4,625.2 ns 15.59 ns 13.82 ns -
TryComputeHash · SHA3-512 · CryptoHives-Scalar 8KB 22,688.6 ns 117.75 ns 104.39 ns -
TryComputeHash · SHA3-512 · OS Native 8KB 27,168.3 ns 116.87 ns 109.32 ns -
TryComputeHash · SHA3-512 · CryptoHives-AVX2 8KB 30,874.1 ns 553.56 ns 568.47 ns -
TryComputeHash · SHA3-512 · CryptoHives-AVX512F 8KB 31,465.6 ns 140.83 ns 117.60 ns -
TryComputeHash · SHA3-512 · BouncyCastle 8KB 34,955.9 ns 101.28 ns 84.57 ns -
TryComputeHash · SHA3-512 · CryptoHives-Scalar 128KB 361,595.1 ns 1,332.76 ns 1,181.46 ns -
TryComputeHash · SHA3-512 · OS Native 128KB 431,914.3 ns 1,653.65 ns 1,546.83 ns -
TryComputeHash · SHA3-512 · CryptoHives-AVX2 128KB 488,040.2 ns 1,170.30 ns 1,094.70 ns -
TryComputeHash · SHA3-512 · CryptoHives-AVX512F 128KB 503,092.2 ns 5,960.81 ns 4,977.54 ns -
TryComputeHash · SHA3-512 · BouncyCastle 128KB 561,587.0 ns 3,252.43 ns 3,042.33 ns -

Keccak Family

Keccak-256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Keccak-256 · CryptoHives-Scalar 128B 207.3 ns 1.00 ns 0.88 ns -
TryComputeHash · Keccak-256 · CryptoHives-AVX2 128B 278.6 ns 0.95 ns 0.89 ns -
TryComputeHash · Keccak-256 · CryptoHives-AVX512F 128B 287.7 ns 1.10 ns 0.97 ns -
TryComputeHash · Keccak-256 · BouncyCastle 128B 330.7 ns 1.15 ns 0.96 ns -
TryComputeHash · Keccak-256 · CryptoHives-Scalar 137B 404.1 ns 1.75 ns 1.64 ns -
TryComputeHash · Keccak-256 · CryptoHives-AVX2 137B 547.3 ns 1.67 ns 1.39 ns -
TryComputeHash · Keccak-256 · CryptoHives-AVX512F 137B 568.8 ns 1.17 ns 1.10 ns -
TryComputeHash · Keccak-256 · BouncyCastle 137B 628.7 ns 2.51 ns 2.35 ns -
TryComputeHash · Keccak-256 · CryptoHives-Scalar 1KB 1,588.9 ns 8.10 ns 7.58 ns -
TryComputeHash · Keccak-256 · CryptoHives-AVX2 1KB 2,158.9 ns 3.37 ns 2.82 ns -
TryComputeHash · Keccak-256 · CryptoHives-AVX512F 1KB 2,220.1 ns 5.94 ns 5.27 ns -
TryComputeHash · Keccak-256 · BouncyCastle 1KB 2,466.2 ns 16.58 ns 15.51 ns -
TryComputeHash · Keccak-256 · CryptoHives-Scalar 1025B 1,590.1 ns 7.34 ns 6.50 ns -
TryComputeHash · Keccak-256 · CryptoHives-AVX2 1025B 2,159.4 ns 6.35 ns 5.94 ns -
TryComputeHash · Keccak-256 · CryptoHives-AVX512F 1025B 2,217.5 ns 7.56 ns 6.31 ns -
TryComputeHash · Keccak-256 · BouncyCastle 1025B 2,463.8 ns 13.38 ns 11.18 ns -
TryComputeHash · Keccak-256 · CryptoHives-Scalar 8KB 12,088.7 ns 80.06 ns 74.89 ns -
TryComputeHash · Keccak-256 · CryptoHives-AVX2 8KB 16,392.5 ns 42.23 ns 39.50 ns -
TryComputeHash · Keccak-256 · CryptoHives-AVX512F 8KB 16,825.6 ns 41.71 ns 39.02 ns -
TryComputeHash · Keccak-256 · BouncyCastle 8KB 18,612.4 ns 91.00 ns 85.12 ns -
TryComputeHash · Keccak-256 · CryptoHives-Scalar 128KB 190,579.1 ns 1,239.67 ns 1,035.18 ns -
TryComputeHash · Keccak-256 · CryptoHives-AVX2 128KB 259,048.9 ns 601.92 ns 563.03 ns -
TryComputeHash · Keccak-256 · CryptoHives-AVX512F 128KB 265,689.8 ns 771.76 ns 721.90 ns -
TryComputeHash · Keccak-256 · BouncyCastle 128KB 293,571.9 ns 1,607.29 ns 1,424.82 ns -

Keccak-384

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Keccak-384 · CryptoHives-Scalar 128B 400.7 ns 2.29 ns 2.03 ns -
TryComputeHash · Keccak-384 · CryptoHives-AVX2 128B 547.7 ns 1.14 ns 0.96 ns -
TryComputeHash · Keccak-384 · CryptoHives-AVX512F 128B 565.8 ns 1.13 ns 0.88 ns -
TryComputeHash · Keccak-384 · BouncyCastle 128B 627.7 ns 3.96 ns 3.71 ns -
TryComputeHash · Keccak-384 · CryptoHives-Scalar 137B 400.0 ns 1.08 ns 0.84 ns -
TryComputeHash · Keccak-384 · CryptoHives-AVX2 137B 549.2 ns 1.54 ns 1.36 ns -
TryComputeHash · Keccak-384 · CryptoHives-AVX512F 137B 563.6 ns 2.29 ns 2.14 ns -
TryComputeHash · Keccak-384 · BouncyCastle 137B 625.6 ns 2.29 ns 2.03 ns -
TryComputeHash · Keccak-384 · CryptoHives-Scalar 1KB 1,966.6 ns 10.57 ns 9.88 ns -
TryComputeHash · Keccak-384 · CryptoHives-AVX2 1KB 2,695.1 ns 5.58 ns 5.22 ns -
TryComputeHash · Keccak-384 · CryptoHives-AVX512F 1KB 2,760.5 ns 7.78 ns 6.90 ns -
TryComputeHash · Keccak-384 · BouncyCastle 1KB 3,045.1 ns 14.42 ns 13.49 ns -
TryComputeHash · Keccak-384 · CryptoHives-Scalar 1025B 1,969.1 ns 11.76 ns 9.82 ns -
TryComputeHash · Keccak-384 · CryptoHives-AVX2 1025B 2,694.6 ns 5.51 ns 4.89 ns -
TryComputeHash · Keccak-384 · CryptoHives-AVX512F 1025B 2,764.8 ns 7.08 ns 6.28 ns -
TryComputeHash · Keccak-384 · BouncyCastle 1025B 3,049.8 ns 14.23 ns 12.61 ns -
TryComputeHash · Keccak-384 · CryptoHives-Scalar 8KB 15,463.0 ns 62.33 ns 52.05 ns -
TryComputeHash · Keccak-384 · CryptoHives-AVX2 8KB 21,126.8 ns 66.80 ns 62.48 ns -
TryComputeHash · Keccak-384 · CryptoHives-AVX512F 8KB 21,779.2 ns 49.21 ns 46.03 ns -
TryComputeHash · Keccak-384 · BouncyCastle 8KB 24,081.4 ns 366.22 ns 342.56 ns -
TryComputeHash · Keccak-384 · CryptoHives-Scalar 128KB 247,297.5 ns 1,927.22 ns 1,802.72 ns -
TryComputeHash · Keccak-384 · CryptoHives-AVX2 128KB 337,419.3 ns 845.70 ns 791.07 ns -
TryComputeHash · Keccak-384 · CryptoHives-AVX512F 128KB 347,540.7 ns 784.89 ns 655.42 ns -
TryComputeHash · Keccak-384 · BouncyCastle 128KB 389,063.2 ns 1,985.22 ns 1,856.98 ns -

Keccak-512

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Keccak-512 · CryptoHives-Scalar 128B 399.8 ns 4.32 ns 4.05 ns -
TryComputeHash · Keccak-512 · CryptoHives-AVX2 128B 545.2 ns 2.31 ns 2.16 ns -
TryComputeHash · Keccak-512 · CryptoHives-AVX512F 128B 561.1 ns 1.60 ns 1.50 ns -
TryComputeHash · Keccak-512 · BouncyCastle 128B 625.8 ns 3.32 ns 3.10 ns -
TryComputeHash · Keccak-512 · CryptoHives-Scalar 137B 398.1 ns 2.33 ns 2.06 ns -
TryComputeHash · Keccak-512 · CryptoHives-AVX2 137B 544.5 ns 2.18 ns 1.93 ns -
TryComputeHash · Keccak-512 · CryptoHives-AVX512F 137B 563.0 ns 2.05 ns 1.92 ns -
TryComputeHash · Keccak-512 · BouncyCastle 137B 626.5 ns 2.53 ns 2.24 ns -
TryComputeHash · Keccak-512 · CryptoHives-Scalar 1KB 2,938.9 ns 19.36 ns 18.11 ns -
TryComputeHash · Keccak-512 · CryptoHives-AVX2 1KB 4,000.9 ns 14.78 ns 12.34 ns -
TryComputeHash · Keccak-512 · CryptoHives-AVX512F 1KB 4,121.2 ns 10.57 ns 9.37 ns -
TryComputeHash · Keccak-512 · BouncyCastle 1KB 4,524.9 ns 21.00 ns 18.62 ns -
TryComputeHash · Keccak-512 · CryptoHives-Scalar 1025B 2,933.9 ns 15.10 ns 14.12 ns -
TryComputeHash · Keccak-512 · CryptoHives-AVX2 1025B 4,011.6 ns 14.13 ns 12.53 ns -
TryComputeHash · Keccak-512 · CryptoHives-AVX512F 1025B 4,134.2 ns 11.53 ns 9.63 ns -
TryComputeHash · Keccak-512 · BouncyCastle 1025B 4,519.2 ns 18.21 ns 17.03 ns -
TryComputeHash · Keccak-512 · CryptoHives-Scalar 8KB 22,180.5 ns 150.53 ns 125.70 ns -
TryComputeHash · Keccak-512 · CryptoHives-AVX2 8KB 30,390.5 ns 93.26 ns 82.67 ns -
TryComputeHash · Keccak-512 · CryptoHives-AVX512F 8KB 31,171.7 ns 96.00 ns 89.80 ns -
TryComputeHash · Keccak-512 · BouncyCastle 8KB 34,416.4 ns 196.80 ns 174.46 ns -
TryComputeHash · Keccak-512 · CryptoHives-Scalar 128KB 355,415.3 ns 2,350.04 ns 2,198.23 ns -
TryComputeHash · Keccak-512 · CryptoHives-AVX2 128KB 484,546.4 ns 949.76 ns 841.93 ns -
TryComputeHash · Keccak-512 · CryptoHives-AVX512F 128KB 500,648.4 ns 1,676.36 ns 1,568.07 ns -
TryComputeHash · Keccak-512 · BouncyCastle 128KB 551,718.7 ns 2,190.32 ns 1,829.02 ns -

SHAKE Family

SHAKE128

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHAKE128 · CryptoHives-Scalar 128B 211.5 ns 0.77 ns 0.68 ns -
TryComputeHash · SHAKE128 · CryptoHives-AVX2 128B 284.3 ns 0.87 ns 0.77 ns -
TryComputeHash · SHAKE128 · CryptoHives-AVX512F 128B 295.4 ns 1.09 ns 0.96 ns -
TryComputeHash · SHAKE128 · BouncyCastle 128B 334.7 ns 2.04 ns 1.90 ns -
TryComputeHash · SHAKE128 · OS Native 128B 372.0 ns 2.15 ns 1.90 ns -
TryComputeHash · SHAKE128 · CryptoHives-Scalar 137B 212.5 ns 0.83 ns 0.74 ns -
TryComputeHash · SHAKE128 · CryptoHives-AVX2 137B 283.9 ns 0.78 ns 0.73 ns -
TryComputeHash · SHAKE128 · CryptoHives-AVX512F 137B 294.8 ns 0.60 ns 0.57 ns -
TryComputeHash · SHAKE128 · BouncyCastle 137B 334.9 ns 1.67 ns 1.39 ns -
TryComputeHash · SHAKE128 · OS Native 137B 358.3 ns 1.48 ns 1.31 ns -
TryComputeHash · SHAKE128 · CryptoHives-Scalar 1KB 1,409.0 ns 8.41 ns 7.46 ns -
TryComputeHash · SHAKE128 · OS Native 1KB 1,784.6 ns 10.11 ns 8.44 ns -
TryComputeHash · SHAKE128 · CryptoHives-AVX2 1KB 1,911.5 ns 4.55 ns 4.26 ns -
TryComputeHash · SHAKE128 · CryptoHives-AVX512F 1KB 1,959.1 ns 5.34 ns 5.00 ns -
TryComputeHash · SHAKE128 · BouncyCastle 1KB 2,174.9 ns 13.93 ns 13.03 ns -
TryComputeHash · SHAKE128 · CryptoHives-Scalar 1025B 1,412.8 ns 12.84 ns 11.38 ns -
TryComputeHash · SHAKE128 · OS Native 1025B 1,778.9 ns 9.43 ns 8.36 ns -
TryComputeHash · SHAKE128 · CryptoHives-AVX2 1025B 1,911.1 ns 7.77 ns 6.88 ns -
TryComputeHash · SHAKE128 · CryptoHives-AVX512F 1025B 1,959.2 ns 7.52 ns 7.04 ns -
TryComputeHash · SHAKE128 · BouncyCastle 1025B 2,181.5 ns 10.44 ns 8.72 ns -
TryComputeHash · SHAKE128 · CryptoHives-Scalar 8KB 9,781.8 ns 74.87 ns 62.52 ns -
TryComputeHash · SHAKE128 · OS Native 8KB 11,786.7 ns 60.14 ns 50.22 ns -
TryComputeHash · SHAKE128 · CryptoHives-AVX2 8KB 13,256.4 ns 34.45 ns 30.54 ns -
TryComputeHash · SHAKE128 · CryptoHives-AVX512F 8KB 13,580.8 ns 24.95 ns 23.34 ns -
TryComputeHash · SHAKE128 · BouncyCastle 8KB 15,162.3 ns 60.70 ns 56.78 ns -
TryComputeHash · SHAKE128 · CryptoHives-Scalar 128KB 155,749.8 ns 653.10 ns 578.96 ns -
TryComputeHash · SHAKE128 · OS Native 128KB 186,698.5 ns 1,246.04 ns 1,165.55 ns -
TryComputeHash · SHAKE128 · CryptoHives-AVX2 128KB 211,225.6 ns 346.73 ns 289.53 ns -
TryComputeHash · SHAKE128 · CryptoHives-AVX512F 128KB 216,516.2 ns 330.58 ns 276.05 ns -
TryComputeHash · SHAKE128 · BouncyCastle 128KB 240,626.1 ns 1,277.01 ns 1,066.36 ns -

SHAKE256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHAKE256 · CryptoHives-Scalar 128B 210.4 ns 1.00 ns 0.89 ns -
TryComputeHash · SHAKE256 · CryptoHives-AVX2 128B 283.1 ns 1.19 ns 1.05 ns -
TryComputeHash · SHAKE256 · CryptoHives-AVX512F 128B 291.8 ns 1.23 ns 1.09 ns -
TryComputeHash · SHAKE256 · BouncyCastle 128B 334.8 ns 1.40 ns 1.24 ns -
TryComputeHash · SHAKE256 · OS Native 128B 358.7 ns 1.65 ns 1.54 ns -
TryComputeHash · SHAKE256 · CryptoHives-Scalar 137B 414.0 ns 1.82 ns 1.61 ns -
TryComputeHash · SHAKE256 · CryptoHives-AVX2 137B 552.0 ns 1.66 ns 1.39 ns -
TryComputeHash · SHAKE256 · CryptoHives-AVX512F 137B 574.9 ns 1.67 ns 1.48 ns -
TryComputeHash · SHAKE256 · OS Native 137B 593.8 ns 2.00 ns 1.77 ns -
TryComputeHash · SHAKE256 · BouncyCastle 137B 630.5 ns 3.93 ns 3.49 ns -
TryComputeHash · SHAKE256 · CryptoHives-Scalar 1KB 1,594.5 ns 8.95 ns 7.48 ns -
TryComputeHash · SHAKE256 · OS Native 1KB 2,016.4 ns 18.46 ns 17.27 ns -
TryComputeHash · SHAKE256 · CryptoHives-AVX2 1KB 2,162.6 ns 5.45 ns 4.83 ns -
TryComputeHash · SHAKE256 · CryptoHives-AVX512F 1KB 2,226.9 ns 7.13 ns 6.67 ns -
TryComputeHash · SHAKE256 · BouncyCastle 1KB 2,470.8 ns 13.88 ns 12.99 ns -
TryComputeHash · SHAKE256 · CryptoHives-Scalar 1025B 1,594.0 ns 3.29 ns 2.57 ns -
TryComputeHash · SHAKE256 · OS Native 1025B 2,011.9 ns 16.41 ns 14.54 ns -
TryComputeHash · SHAKE256 · CryptoHives-AVX2 1025B 2,166.6 ns 7.58 ns 7.09 ns -
TryComputeHash · SHAKE256 · CryptoHives-AVX512F 1025B 2,234.1 ns 7.33 ns 6.86 ns -
TryComputeHash · SHAKE256 · BouncyCastle 1025B 2,477.7 ns 17.32 ns 16.20 ns -
TryComputeHash · SHAKE256 · CryptoHives-Scalar 8KB 12,088.1 ns 63.53 ns 53.05 ns -
TryComputeHash · SHAKE256 · OS Native 8KB 14,568.9 ns 125.42 ns 104.73 ns -
TryComputeHash · SHAKE256 · CryptoHives-AVX2 8KB 16,425.4 ns 46.99 ns 36.69 ns -
TryComputeHash · SHAKE256 · CryptoHives-AVX512F 8KB 16,857.3 ns 62.00 ns 58.00 ns -
TryComputeHash · SHAKE256 · BouncyCastle 8KB 18,701.8 ns 124.88 ns 116.81 ns -
TryComputeHash · SHAKE256 · CryptoHives-Scalar 128KB 190,905.8 ns 1,249.47 ns 1,168.75 ns -
TryComputeHash · SHAKE256 · OS Native 128KB 228,440.6 ns 1,289.09 ns 1,205.82 ns -
TryComputeHash · SHAKE256 · CryptoHives-AVX2 128KB 259,720.4 ns 1,149.17 ns 1,074.94 ns -
TryComputeHash · SHAKE256 · CryptoHives-AVX512F 128KB 266,703.3 ns 703.89 ns 658.42 ns -
TryComputeHash · SHAKE256 · BouncyCastle 128KB 294,674.4 ns 1,641.42 ns 1,535.38 ns -

cSHAKE Family

cSHAKE128

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · cSHAKE128 · CryptoHives-Scalar 128B 211.6 ns 1.47 ns 1.31 ns -
TryComputeHash · cSHAKE128 · CryptoHives-AVX2 128B 283.3 ns 0.67 ns 0.63 ns -
TryComputeHash · cSHAKE128 · CryptoHives-AVX512F 128B 294.2 ns 1.13 ns 1.06 ns -
TryComputeHash · cSHAKE128 · BouncyCastle 128B 335.8 ns 1.91 ns 1.60 ns -
TryComputeHash · cSHAKE128 · CryptoHives-Scalar 137B 211.3 ns 1.88 ns 1.57 ns -
TryComputeHash · cSHAKE128 · CryptoHives-AVX2 137B 283.1 ns 0.27 ns 0.24 ns -
TryComputeHash · cSHAKE128 · CryptoHives-AVX512F 137B 294.4 ns 0.86 ns 0.81 ns -
TryComputeHash · cSHAKE128 · BouncyCastle 137B 336.2 ns 1.75 ns 1.46 ns -
TryComputeHash · cSHAKE128 · CryptoHives-Scalar 1KB 1,409.3 ns 7.17 ns 6.71 ns -
TryComputeHash · cSHAKE128 · CryptoHives-AVX2 1KB 1,904.3 ns 3.85 ns 3.21 ns -
TryComputeHash · cSHAKE128 · CryptoHives-AVX512F 1KB 1,955.7 ns 6.22 ns 5.20 ns -
TryComputeHash · cSHAKE128 · BouncyCastle 1KB 2,186.8 ns 12.46 ns 11.66 ns -
TryComputeHash · cSHAKE128 · CryptoHives-Scalar 1025B 1,405.4 ns 5.10 ns 4.26 ns -
TryComputeHash · cSHAKE128 · CryptoHives-AVX2 1025B 1,906.6 ns 5.31 ns 4.44 ns -
TryComputeHash · cSHAKE128 · CryptoHives-AVX512F 1025B 1,957.2 ns 9.93 ns 9.29 ns -
TryComputeHash · cSHAKE128 · BouncyCastle 1025B 2,178.2 ns 8.29 ns 6.92 ns -
TryComputeHash · cSHAKE128 · CryptoHives-Scalar 8KB 9,778.7 ns 48.74 ns 43.20 ns -
TryComputeHash · cSHAKE128 · CryptoHives-AVX2 8KB 13,249.0 ns 24.35 ns 21.59 ns -
TryComputeHash · cSHAKE128 · CryptoHives-AVX512F 8KB 13,579.4 ns 21.48 ns 20.09 ns -
TryComputeHash · cSHAKE128 · BouncyCastle 8KB 15,101.7 ns 48.35 ns 37.75 ns -
TryComputeHash · cSHAKE128 · CryptoHives-Scalar 128KB 156,207.9 ns 1,016.70 ns 848.99 ns -
TryComputeHash · cSHAKE128 · CryptoHives-AVX2 128KB 210,981.7 ns 334.86 ns 313.22 ns -
TryComputeHash · cSHAKE128 · CryptoHives-AVX512F 128KB 216,154.9 ns 389.36 ns 345.16 ns -
TryComputeHash · cSHAKE128 · BouncyCastle 128KB 239,817.8 ns 1,081.52 ns 1,011.66 ns -

cSHAKE256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · cSHAKE256 · CryptoHives-Scalar 128B 210.6 ns 1.84 ns 1.72 ns -
TryComputeHash · cSHAKE256 · CryptoHives-AVX2 128B 282.2 ns 0.66 ns 0.61 ns -
TryComputeHash · cSHAKE256 · CryptoHives-AVX512F 128B 293.1 ns 2.26 ns 1.89 ns -
TryComputeHash · cSHAKE256 · BouncyCastle 128B 334.1 ns 1.90 ns 1.68 ns -
TryComputeHash · cSHAKE256 · CryptoHives-Scalar 137B 407.2 ns 1.97 ns 1.75 ns -
TryComputeHash · cSHAKE256 · CryptoHives-AVX2 137B 551.6 ns 1.37 ns 1.29 ns -
TryComputeHash · cSHAKE256 · CryptoHives-AVX512F 137B 574.2 ns 2.45 ns 2.29 ns -
TryComputeHash · cSHAKE256 · BouncyCastle 137B 631.3 ns 2.01 ns 1.78 ns -
TryComputeHash · cSHAKE256 · CryptoHives-Scalar 1KB 1,591.7 ns 7.99 ns 7.09 ns -
TryComputeHash · cSHAKE256 · CryptoHives-AVX2 1KB 2,163.6 ns 9.04 ns 8.46 ns -
TryComputeHash · cSHAKE256 · CryptoHives-AVX512F 1KB 2,227.5 ns 7.80 ns 7.30 ns -
TryComputeHash · cSHAKE256 · BouncyCastle 1KB 2,473.7 ns 11.22 ns 10.49 ns -
TryComputeHash · cSHAKE256 · CryptoHives-Scalar 1025B 1,592.1 ns 9.00 ns 8.42 ns -
TryComputeHash · cSHAKE256 · CryptoHives-AVX2 1025B 2,163.4 ns 8.64 ns 7.66 ns -
TryComputeHash · cSHAKE256 · CryptoHives-AVX512F 1025B 2,228.8 ns 5.32 ns 4.71 ns -
TryComputeHash · cSHAKE256 · BouncyCastle 1025B 2,470.1 ns 14.35 ns 12.72 ns -
TryComputeHash · cSHAKE256 · CryptoHives-Scalar 8KB 12,087.1 ns 54.27 ns 50.76 ns -
TryComputeHash · cSHAKE256 · CryptoHives-AVX2 8KB 16,412.3 ns 65.03 ns 60.83 ns -
TryComputeHash · cSHAKE256 · CryptoHives-AVX512F 8KB 16,836.6 ns 57.92 ns 54.18 ns -
TryComputeHash · cSHAKE256 · BouncyCastle 8KB 18,640.7 ns 68.80 ns 60.99 ns -
TryComputeHash · cSHAKE256 · CryptoHives-Scalar 128KB 190,313.7 ns 674.97 ns 631.37 ns -
TryComputeHash · cSHAKE256 · CryptoHives-AVX2 128KB 259,853.9 ns 1,113.65 ns 1,041.71 ns -
TryComputeHash · cSHAKE256 · CryptoHives-AVX512F 128KB 266,000.8 ns 1,088.10 ns 1,017.81 ns -
TryComputeHash · cSHAKE256 · BouncyCastle 128KB 292,749.3 ns 1,572.09 ns 1,393.61 ns -

KangarooTwelve Family

KT128

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · KT128 · CryptoHives-Scalar 128B 129.6 ns 0.41 ns 0.34 ns -
TryComputeHash · KT128 · CryptoHives-AVX2 128B 160.6 ns 0.30 ns 0.28 ns -
TryComputeHash · KT128 · CryptoHives-AVX512F 128B 167.7 ns 0.59 ns 0.53 ns -
TryComputeHash · KT128 · CryptoHives-Scalar 137B 127.0 ns 0.82 ns 0.73 ns -
TryComputeHash · KT128 · CryptoHives-AVX2 137B 160.2 ns 0.51 ns 0.48 ns -
TryComputeHash · KT128 · CryptoHives-AVX512F 137B 169.0 ns 0.44 ns 0.39 ns -
TryComputeHash · KT128 · CryptoHives-Scalar 1KB 775.6 ns 3.09 ns 2.89 ns -
TryComputeHash · KT128 · CryptoHives-AVX2 1KB 1,014.0 ns 4.93 ns 4.62 ns -
TryComputeHash · KT128 · CryptoHives-AVX512F 1KB 1,044.0 ns 3.81 ns 3.56 ns -
TryComputeHash · KT128 · CryptoHives-Scalar 1025B 775.7 ns 2.80 ns 2.48 ns -
TryComputeHash · KT128 · CryptoHives-AVX2 1025B 1,016.2 ns 3.04 ns 2.70 ns -
TryComputeHash · KT128 · CryptoHives-AVX512F 1025B 1,046.8 ns 2.45 ns 2.18 ns -
TryComputeHash · KT128 · CryptoHives-Scalar 8KB 5,731.0 ns 36.43 ns 30.42 ns -
TryComputeHash · KT128 · CryptoHives-AVX2 8KB 7,471.6 ns 11.61 ns 10.86 ns -
TryComputeHash · KT128 · CryptoHives-AVX512F 8KB 7,680.2 ns 11.71 ns 10.38 ns -
TryComputeHash · KT128 · CryptoHives-Scalar 128KB 88,219.0 ns 558.99 ns 522.88 ns -
TryComputeHash · KT128 · CryptoHives-AVX2 128KB 115,185.2 ns 283.92 ns 237.09 ns -
TryComputeHash · KT128 · CryptoHives-AVX512F 128KB 118,251.8 ns 312.34 ns 276.88 ns -

KT256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · KT256 · CryptoHives-Scalar 128B 125.5 ns 0.58 ns 0.52 ns -
TryComputeHash · KT256 · CryptoHives-AVX2 128B 162.6 ns 0.43 ns 0.38 ns -
TryComputeHash · KT256 · CryptoHives-AVX512F 128B 170.5 ns 0.56 ns 0.47 ns -
TryComputeHash · KT256 · CryptoHives-Scalar 137B 232.0 ns 1.30 ns 1.22 ns -
TryComputeHash · KT256 · CryptoHives-AVX2 137B 303.9 ns 0.96 ns 0.85 ns -
TryComputeHash · KT256 · CryptoHives-AVX512F 137B 315.2 ns 0.50 ns 0.44 ns -
TryComputeHash · KT256 · CryptoHives-Scalar 1KB 871.2 ns 4.91 ns 4.59 ns -
TryComputeHash · KT256 · CryptoHives-AVX2 1KB 1,146.3 ns 3.38 ns 2.99 ns -
TryComputeHash · KT256 · CryptoHives-AVX512F 1KB 1,182.6 ns 3.84 ns 3.41 ns -
TryComputeHash · KT256 · CryptoHives-Scalar 1025B 871.7 ns 4.74 ns 4.20 ns -
TryComputeHash · KT256 · CryptoHives-AVX2 1025B 1,147.2 ns 5.51 ns 5.15 ns -
TryComputeHash · KT256 · CryptoHives-AVX512F 1025B 1,186.0 ns 3.56 ns 3.15 ns -
TryComputeHash · KT256 · CryptoHives-Scalar 8KB 6,826.9 ns 27.66 ns 25.87 ns -
TryComputeHash · KT256 · CryptoHives-AVX2 8KB 8,918.5 ns 23.60 ns 22.08 ns -
TryComputeHash · KT256 · CryptoHives-AVX512F 8KB 9,238.1 ns 21.63 ns 18.06 ns -
TryComputeHash · KT256 · CryptoHives-Scalar 128KB 108,019.6 ns 533.94 ns 499.45 ns -
TryComputeHash · KT256 · CryptoHives-AVX2 128KB 141,199.3 ns 443.54 ns 393.19 ns -
TryComputeHash · KT256 · CryptoHives-AVX512F 128KB 145,618.3 ns 330.90 ns 293.33 ns -

TurboSHAKE Family

TurboSHAKE128

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · TurboSHAKE128-32 · CryptoHives-Scalar 128B 119.1 ns 0.72 ns 0.63 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-AVX2 128B 154.8 ns 0.44 ns 0.39 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-AVX512F 128B 163.1 ns 0.45 ns 0.37 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-Scalar 137B 119.4 ns 0.89 ns 0.83 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-AVX2 137B 154.4 ns 0.69 ns 0.61 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-AVX512F 137B 163.2 ns 0.46 ns 0.41 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-Scalar 1KB 762.8 ns 5.62 ns 4.98 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-AVX2 1KB 1,000.7 ns 4.06 ns 3.60 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-AVX512F 1KB 1,038.3 ns 3.47 ns 2.90 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-Scalar 1025B 763.5 ns 3.03 ns 2.83 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-AVX2 1025B 1,002.0 ns 5.25 ns 4.38 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-AVX512F 1025B 1,033.4 ns 2.88 ns 2.55 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-Scalar 8KB 5,289.0 ns 29.19 ns 27.30 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-AVX2 8KB 6,923.6 ns 8.63 ns 7.65 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-AVX512F 8KB 7,105.6 ns 15.76 ns 13.97 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-Scalar 128KB 84,106.8 ns 750.98 ns 627.10 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-AVX2 128KB 110,095.9 ns 203.00 ns 189.88 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-AVX512F 128KB 112,980.3 ns 293.98 ns 274.99 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-Scalar 128B 119.9 ns 0.84 ns 0.70 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-AVX2 128B 155.3 ns 0.27 ns 0.25 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-AVX512F 128B 164.3 ns 0.47 ns 0.44 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-Scalar 137B 120.6 ns 0.93 ns 0.87 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-AVX2 137B 155.9 ns 0.65 ns 0.54 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-AVX512F 137B 162.8 ns 0.51 ns 0.43 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-Scalar 1KB 764.3 ns 3.38 ns 3.16 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-AVX2 1KB 1,016.8 ns 2.50 ns 2.34 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-AVX512F 1KB 1,034.5 ns 2.38 ns 2.23 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-Scalar 1025B 768.2 ns 8.98 ns 7.50 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-AVX2 1025B 1,000.6 ns 1.28 ns 1.07 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-AVX512F 1025B 1,034.6 ns 2.25 ns 2.11 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-Scalar 8KB 5,291.0 ns 27.63 ns 24.50 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-AVX2 8KB 6,940.7 ns 18.42 ns 15.38 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-AVX512F 8KB 7,114.8 ns 12.38 ns 11.58 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-Scalar 128KB 84,065.2 ns 286.24 ns 267.75 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-AVX2 128KB 110,253.2 ns 224.19 ns 198.74 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-AVX512F 128KB 113,255.5 ns 167.26 ns 148.27 ns -

TurboSHAKE256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · TurboSHAKE256 · CryptoHives-Scalar 128B 118.2 ns 0.39 ns 0.34 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-AVX2 128B 152.5 ns 0.33 ns 0.31 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-AVX512F 128B 160.4 ns 0.49 ns 0.41 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-Scalar 137B 224.6 ns 1.05 ns 0.98 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-AVX2 137B 292.4 ns 0.70 ns 0.65 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-AVX512F 137B 310.8 ns 0.77 ns 0.65 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-Scalar 1KB 861.5 ns 3.24 ns 3.03 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-AVX2 1KB 1,126.8 ns 1.84 ns 1.53 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-AVX512F 1KB 1,173.7 ns 3.68 ns 3.44 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-Scalar 1025B 860.2 ns 2.05 ns 1.82 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-AVX2 1025B 1,128.6 ns 2.92 ns 2.44 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-AVX512F 1025B 1,176.5 ns 3.41 ns 3.02 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-Scalar 8KB 6,501.0 ns 31.46 ns 29.43 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-AVX2 8KB 8,505.7 ns 24.96 ns 23.34 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-AVX512F 8KB 8,812.6 ns 16.56 ns 14.68 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-Scalar 128KB 102,407.1 ns 362.07 ns 302.35 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-AVX2 128KB 134,221.3 ns 386.34 ns 342.48 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-AVX512F 128KB 139,002.7 ns 356.00 ns 315.59 ns -

BLAKE2 Family

CryptoHives leads the BLAKE2b benchmarks on x86. The AVX2 path is ~10–15% faster than BouncyCastle across all payload sizes — 84 ns vs 98 ns at 128 B and 79 μs vs 89 μs at 128 KiB. Blake2Fast (a dedicated fast BLAKE2 library) is competitive with CryptoHives-AVX2 and BouncyCastle. For BLAKE2s, the SIMD implementation is on parity with BouncyCastle. The scalar fallback is ~1.5–1.6× slower than the SIMD paths.

Key observations:

  • CryptoHives AVX2: Fastest overall — ~10–15% faster than BouncyCastle and Blake2Fast for BLAKE2b
  • BouncyCastle: Competitive but slower than AVX2 at all sizes; zero allocation for BLAKE2b at sizes ≤8 KiB
  • Managed scalar: Fallback for non-SIMD platforms; ~1.5× slower than AVX2; zero allocation
  • Konscious: Slowest option, allocates heavily (~130 KB per 128 KiB hash call)

BLAKE2b-256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · BLAKE2b-256 · CryptoHives-AVX2 128B 84.13 ns 0.231 ns 0.216 ns -
TryComputeHash · BLAKE2b-256 · Blake2Fast 128B 95.14 ns 0.235 ns 0.220 ns -
TryComputeHash · BLAKE2b-256 · BouncyCastle 128B 98.38 ns 0.237 ns 0.222 ns -
TryComputeHash · BLAKE2b-256 · CryptoHives-Scalar 128B 125.63 ns 0.368 ns 0.326 ns -
TryComputeHash · BLAKE2b-256 · Konscious 128B 477.98 ns 2.509 ns 2.095 ns 1120 B
TryComputeHash · BLAKE2b-256 · CryptoHives-AVX2 137B 167.69 ns 0.887 ns 0.786 ns -
TryComputeHash · BLAKE2b-256 · Blake2Fast 137B 176.19 ns 0.513 ns 0.480 ns -
TryComputeHash · BLAKE2b-256 · BouncyCastle 137B 187.81 ns 0.925 ns 0.865 ns -
TryComputeHash · BLAKE2b-256 · CryptoHives-Scalar 137B 250.36 ns 0.820 ns 0.640 ns -
TryComputeHash · BLAKE2b-256 · Konscious 137B 893.34 ns 2.880 ns 2.694 ns 1136 B
TryComputeHash · BLAKE2b-256 · CryptoHives-AVX2 1KB 624.09 ns 1.834 ns 1.531 ns -
TryComputeHash · BLAKE2b-256 · Blake2Fast 1KB 648.11 ns 1.603 ns 1.421 ns -
TryComputeHash · BLAKE2b-256 · BouncyCastle 1KB 711.96 ns 1.558 ns 1.458 ns -
TryComputeHash · BLAKE2b-256 · CryptoHives-Scalar 1KB 974.45 ns 1.498 ns 1.328 ns -
TryComputeHash · BLAKE2b-256 · Konscious 1KB 3,001.37 ns 12.792 ns 11.966 ns 2016 B
TryComputeHash · BLAKE2b-256 · CryptoHives-AVX2 1025B 705.76 ns 1.482 ns 1.386 ns -
TryComputeHash · BLAKE2b-256 · Blake2Fast 1025B 725.73 ns 2.113 ns 1.764 ns -
TryComputeHash · BLAKE2b-256 · BouncyCastle 1025B 792.97 ns 1.867 ns 1.746 ns -
TryComputeHash · BLAKE2b-256 · CryptoHives-Scalar 1025B 1,099.43 ns 5.725 ns 5.075 ns -
TryComputeHash · BLAKE2b-256 · Konscious 1025B 3,418.95 ns 13.789 ns 12.898 ns 2024 B
TryComputeHash · BLAKE2b-256 · CryptoHives-AVX2 8KB 4,951.41 ns 12.769 ns 11.945 ns -
TryComputeHash · BLAKE2b-256 · Blake2Fast 8KB 5,045.12 ns 14.065 ns 12.468 ns -
TryComputeHash · BLAKE2b-256 · BouncyCastle 8KB 5,566.68 ns 13.028 ns 12.186 ns -
TryComputeHash · BLAKE2b-256 · CryptoHives-Scalar 8KB 7,761.69 ns 17.765 ns 15.748 ns -
TryComputeHash · BLAKE2b-256 · Konscious 8KB 23,117.83 ns 77.921 ns 72.887 ns 9184 B
TryComputeHash · BLAKE2b-256 · CryptoHives-AVX2 128KB 79,256.51 ns 237.781 ns 210.787 ns -
TryComputeHash · BLAKE2b-256 · Blake2Fast 128KB 80,655.84 ns 470.832 ns 417.381 ns -
TryComputeHash · BLAKE2b-256 · BouncyCastle 128KB 88,701.72 ns 98.943 ns 87.711 ns -
TryComputeHash · BLAKE2b-256 · CryptoHives-Scalar 128KB 122,577.99 ns 358.781 ns 318.050 ns -
TryComputeHash · BLAKE2b-256 · Konscious 128KB 393,151.26 ns 1,067.332 ns 998.383 ns 132078 B

BLAKE2b-512

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · BLAKE2b-512 · CryptoHives-AVX2 128B 83.55 ns 0.246 ns 0.205 ns -
TryComputeHash · BLAKE2b-512 · Blake2Fast 128B 96.08 ns 0.258 ns 0.229 ns -
TryComputeHash · BLAKE2b-512 · BouncyCastle 128B 102.50 ns 0.277 ns 0.259 ns -
TryComputeHash · BLAKE2b-512 · CryptoHives-Scalar 128B 127.03 ns 0.332 ns 0.278 ns -
TryComputeHash · BLAKE2b-512 · Konscious 128B 500.22 ns 1.819 ns 1.613 ns 1216 B
TryComputeHash · BLAKE2b-512 · CryptoHives-AVX2 137B 168.30 ns 0.420 ns 0.393 ns -
TryComputeHash · BLAKE2b-512 · Blake2Fast 137B 176.58 ns 0.364 ns 0.304 ns -
TryComputeHash · BLAKE2b-512 · BouncyCastle 137B 188.88 ns 1.610 ns 1.506 ns -
TryComputeHash · BLAKE2b-512 · CryptoHives-Scalar 137B 250.73 ns 1.781 ns 1.487 ns -
TryComputeHash · BLAKE2b-512 · Konscious 137B 910.21 ns 2.522 ns 2.106 ns 1232 B
TryComputeHash · BLAKE2b-512 · CryptoHives-AVX2 1KB 623.14 ns 1.473 ns 1.378 ns -
TryComputeHash · BLAKE2b-512 · Blake2Fast 1KB 648.10 ns 1.258 ns 1.050 ns -
TryComputeHash · BLAKE2b-512 · BouncyCastle 1KB 713.05 ns 1.679 ns 1.571 ns -
TryComputeHash · BLAKE2b-512 · CryptoHives-Scalar 1KB 975.43 ns 2.749 ns 2.571 ns -
TryComputeHash · BLAKE2b-512 · Konscious 1KB 3,039.86 ns 18.663 ns 16.544 ns 2112 B
TryComputeHash · BLAKE2b-512 · CryptoHives-AVX2 1025B 709.10 ns 1.395 ns 1.305 ns -
TryComputeHash · BLAKE2b-512 · Blake2Fast 1025B 726.74 ns 1.937 ns 1.811 ns -
TryComputeHash · BLAKE2b-512 · BouncyCastle 1025B 803.67 ns 1.483 ns 1.388 ns -
TryComputeHash · BLAKE2b-512 · CryptoHives-Scalar 1025B 1,100.42 ns 4.588 ns 4.292 ns -
TryComputeHash · BLAKE2b-512 · Konscious 1025B 3,450.92 ns 16.711 ns 15.631 ns 2120 B
TryComputeHash · BLAKE2b-512 · CryptoHives-AVX2 8KB 4,960.94 ns 8.272 ns 6.908 ns -
TryComputeHash · BLAKE2b-512 · Blake2Fast 8KB 5,043.40 ns 12.442 ns 11.030 ns -
TryComputeHash · BLAKE2b-512 · BouncyCastle 8KB 5,560.84 ns 15.159 ns 13.438 ns -
TryComputeHash · BLAKE2b-512 · CryptoHives-Scalar 8KB 7,774.46 ns 28.585 ns 26.739 ns -
TryComputeHash · BLAKE2b-512 · Konscious 8KB 23,108.56 ns 64.988 ns 57.610 ns 9280 B
TryComputeHash · BLAKE2b-512 · CryptoHives-AVX2 128KB 79,307.44 ns 148.809 ns 139.196 ns -
TryComputeHash · BLAKE2b-512 · Blake2Fast 128KB 80,579.10 ns 231.713 ns 205.408 ns -
TryComputeHash · BLAKE2b-512 · BouncyCastle 128KB 88,814.68 ns 211.523 ns 197.859 ns -
TryComputeHash · BLAKE2b-512 · CryptoHives-Scalar 128KB 124,896.52 ns 354.125 ns 313.923 ns -
TryComputeHash · BLAKE2b-512 · Konscious 128KB 393,971.05 ns 1,732.514 ns 1,535.829 ns 132174 B

BLAKE2s-128

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · BLAKE2s-128 · Blake2Fast 128B 154.2 ns 0.35 ns 0.31 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-AVX2 128B 154.3 ns 0.30 ns 0.26 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Ssse3 128B 154.5 ns 0.26 ns 0.25 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Scalar 128B 156.3 ns 1.14 ns 1.01 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Sse2 128B 157.9 ns 0.20 ns 0.19 ns -
TryComputeHash · BLAKE2s-128 · BouncyCastle 128B 158.3 ns 0.79 ns 0.74 ns -
TryComputeHash · BLAKE2s-128 · Blake2Fast 137B 226.7 ns 0.39 ns 0.34 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-AVX2 137B 232.5 ns 0.50 ns 0.44 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Scalar 137B 232.7 ns 2.02 ns 1.79 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Ssse3 137B 234.8 ns 0.26 ns 0.23 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Sse2 137B 240.9 ns 0.29 ns 0.27 ns -
TryComputeHash · BLAKE2s-128 · BouncyCastle 137B 243.3 ns 0.57 ns 0.50 ns -
TryComputeHash · BLAKE2s-128 · Blake2Fast 1KB 1,140.3 ns 2.48 ns 2.32 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Scalar 1KB 1,198.9 ns 3.96 ns 3.71 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-AVX2 1KB 1,204.9 ns 3.53 ns 2.94 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Ssse3 1KB 1,217.5 ns 1.85 ns 1.64 ns -
TryComputeHash · BLAKE2s-128 · BouncyCastle 1KB 1,232.8 ns 2.11 ns 1.76 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Sse2 1KB 1,238.4 ns 1.74 ns 1.63 ns -
TryComputeHash · BLAKE2s-128 · Blake2Fast 1025B 1,209.7 ns 4.48 ns 4.19 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Scalar 1025B 1,270.8 ns 2.65 ns 2.35 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-AVX2 1025B 1,285.5 ns 6.16 ns 5.76 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Ssse3 1025B 1,298.5 ns 2.02 ns 1.89 ns -
TryComputeHash · BLAKE2s-128 · BouncyCastle 1025B 1,304.3 ns 3.94 ns 3.68 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Sse2 1025B 1,322.8 ns 2.30 ns 2.15 ns -
TryComputeHash · BLAKE2s-128 · Blake2Fast 8KB 8,997.8 ns 34.02 ns 28.41 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Scalar 8KB 9,545.7 ns 41.42 ns 36.72 ns -
TryComputeHash · BLAKE2s-128 · BouncyCastle 8KB 9,625.6 ns 26.36 ns 24.66 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-AVX2 8KB 9,664.6 ns 41.97 ns 39.26 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Ssse3 8KB 9,723.9 ns 30.40 ns 26.95 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Sse2 8KB 9,906.8 ns 11.56 ns 10.81 ns -
TryComputeHash · BLAKE2s-128 · Blake2Fast 128KB 143,963.1 ns 504.80 ns 421.53 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Scalar 128KB 151,036.0 ns 877.52 ns 777.90 ns -
TryComputeHash · BLAKE2s-128 · BouncyCastle 128KB 153,887.3 ns 325.87 ns 272.12 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-AVX2 128KB 154,442.2 ns 637.63 ns 532.45 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Ssse3 128KB 155,460.5 ns 235.08 ns 219.90 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Sse2 128KB 158,448.0 ns 186.15 ns 174.12 ns -

BLAKE2s-256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · BLAKE2s-256 · CryptoHives-AVX2 128B 154.5 ns 0.70 ns 0.62 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Scalar 128B 154.7 ns 0.36 ns 0.30 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Ssse3 128B 154.9 ns 0.17 ns 0.15 ns -
TryComputeHash · BLAKE2s-256 · Blake2Fast 128B 157.6 ns 0.35 ns 0.31 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Sse2 128B 159.9 ns 0.22 ns 0.20 ns -
TryComputeHash · BLAKE2s-256 · BouncyCastle 128B 161.6 ns 0.51 ns 0.48 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-AVX2 137B 233.4 ns 0.84 ns 0.79 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Scalar 137B 234.0 ns 0.79 ns 0.70 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Ssse3 137B 234.8 ns 0.14 ns 0.13 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Sse2 137B 240.3 ns 0.32 ns 0.30 ns -
TryComputeHash · BLAKE2s-256 · BouncyCastle 137B 245.1 ns 1.31 ns 1.23 ns -
TryComputeHash · BLAKE2s-256 · Blake2Fast 137B 250.8 ns 0.58 ns 0.54 ns -
TryComputeHash · BLAKE2s-256 · Blake2Fast 1KB 1,141.2 ns 3.56 ns 3.15 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Scalar 1KB 1,191.5 ns 12.54 ns 11.12 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-AVX2 1KB 1,207.3 ns 6.18 ns 5.48 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Ssse3 1KB 1,219.7 ns 1.76 ns 1.65 ns -
TryComputeHash · BLAKE2s-256 · BouncyCastle 1KB 1,233.9 ns 3.43 ns 2.86 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Sse2 1KB 1,238.4 ns 1.25 ns 1.04 ns -
TryComputeHash · BLAKE2s-256 · Blake2Fast 1025B 1,210.1 ns 3.16 ns 2.80 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Scalar 1025B 1,274.9 ns 5.81 ns 5.15 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-AVX2 1025B 1,291.2 ns 5.66 ns 5.29 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Ssse3 1025B 1,297.6 ns 2.69 ns 2.51 ns -
TryComputeHash · BLAKE2s-256 · BouncyCastle 1025B 1,309.2 ns 3.40 ns 3.01 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Sse2 1025B 1,320.1 ns 1.97 ns 1.84 ns -
TryComputeHash · BLAKE2s-256 · Blake2Fast 8KB 9,009.9 ns 24.42 ns 21.64 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Scalar 8KB 9,438.0 ns 31.32 ns 26.15 ns -
TryComputeHash · BLAKE2s-256 · BouncyCastle 8KB 9,632.5 ns 30.54 ns 28.57 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-AVX2 8KB 9,648.3 ns 41.08 ns 38.42 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Ssse3 8KB 9,714.1 ns 24.31 ns 22.74 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Sse2 8KB 9,899.8 ns 9.15 ns 7.14 ns -
TryComputeHash · BLAKE2s-256 · Blake2Fast 128KB 143,803.8 ns 337.48 ns 281.81 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Scalar 128KB 151,225.6 ns 585.27 ns 547.46 ns -
TryComputeHash · BLAKE2s-256 · BouncyCastle 128KB 153,660.5 ns 440.59 ns 412.13 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-AVX2 128KB 154,723.6 ns 1,340.80 ns 1,188.59 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Ssse3 128KB 154,973.5 ns 268.47 ns 251.13 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Sse2 128KB 158,363.6 ns 389.87 ns 364.69 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 (128 B–1 KB), the SSSE3 path is ~1.4× slower than the native Rust implementation and ~8–9× faster than BouncyCastle (154 ns vs 1,281 ns at 128 B). At large inputs (128 KB), the gap widens to ~12× between native and BouncyCastle because the native implementation parallelizes chunk compression across SIMD lanes (AVX2/AVX-512 hash_many), while the managed version processes chunks sequentially. The SSSE3 path remains ~8× faster than BouncyCastle at 128 KB (166 μs vs 1,370 μs).

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · BLAKE3 · Blake3Native 128B 99.67 ns 1.253 ns 1.172 ns -
TryComputeHash · BLAKE3 · CryptoHives-Ssse3 128B 153.56 ns 0.642 ns 0.601 ns -
TryComputeHash · BLAKE3 · CryptoHives-Scalar 128B 593.99 ns 1.881 ns 1.760 ns -
TryComputeHash · BLAKE3 · BouncyCastle 128B 1,280.53 ns 2.208 ns 1.957 ns -
TryComputeHash · BLAKE3 · Blake3Native 137B 150.99 ns 0.547 ns 0.485 ns -
TryComputeHash · BLAKE3 · CryptoHives-Ssse3 137B 221.90 ns 0.757 ns 0.671 ns -
TryComputeHash · BLAKE3 · CryptoHives-Scalar 137B 878.13 ns 2.261 ns 2.004 ns -
TryComputeHash · BLAKE3 · BouncyCastle 137B 1,935.18 ns 4.220 ns 3.741 ns -
TryComputeHash · BLAKE3 · Blake3Native 1KB 753.39 ns 5.106 ns 5.015 ns -
TryComputeHash · BLAKE3 · CryptoHives-Ssse3 1KB 1,075.63 ns 3.015 ns 2.672 ns -
TryComputeHash · BLAKE3 · CryptoHives-Scalar 1KB 4,578.79 ns 18.484 ns 15.435 ns -
TryComputeHash · BLAKE3 · BouncyCastle 1KB 9,675.73 ns 23.346 ns 19.495 ns -
TryComputeHash · BLAKE3 · Blake3Native 1025B 850.73 ns 2.275 ns 1.776 ns -
TryComputeHash · BLAKE3 · CryptoHives-Ssse3 1025B 1,229.09 ns 3.371 ns 3.153 ns -
TryComputeHash · BLAKE3 · CryptoHives-Scalar 1025B 5,197.38 ns 22.377 ns 20.931 ns -
TryComputeHash · BLAKE3 · BouncyCastle 1025B 10,760.39 ns 21.098 ns 17.618 ns 56 B
TryComputeHash · BLAKE3 · Blake3Native 8KB 1,171.02 ns 2.191 ns 1.942 ns -
TryComputeHash · BLAKE3 · CryptoHives-Ssse3 8KB 10,147.28 ns 115.494 ns 108.033 ns -
TryComputeHash · BLAKE3 · CryptoHives-Scalar 8KB 38,745.23 ns 133.595 ns 111.558 ns -
TryComputeHash · BLAKE3 · BouncyCastle 8KB 81,347.98 ns 228.671 ns 202.711 ns 392 B
TryComputeHash · BLAKE3 · Blake3Native 128KB 14,404.03 ns 89.875 ns 70.169 ns -
TryComputeHash · BLAKE3 · CryptoHives-Ssse3 128KB 165,900.83 ns 375.950 ns 333.270 ns -
TryComputeHash · BLAKE3 · CryptoHives-Scalar 128KB 623,212.95 ns 1,899.429 ns 1,683.794 ns -
TryComputeHash · BLAKE3 · BouncyCastle 128KB 1,370,159.36 ns 2,330.505 ns 2,179.956 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 · CryptoHives-Scalar 128B 564.7 ns 3.13 ns 2.61 ns -
TryComputeHash · Ascon-Hash256 · BouncyCastle 128B 764.3 ns 6.30 ns 5.90 ns -
TryComputeHash · Ascon-Hash256 · CryptoHives-Scalar 137B 596.8 ns 2.21 ns 2.07 ns -
TryComputeHash · Ascon-Hash256 · BouncyCastle 137B 802.6 ns 3.35 ns 3.13 ns -
TryComputeHash · Ascon-Hash256 · CryptoHives-Scalar 1KB 3,658.2 ns 16.48 ns 13.76 ns -
TryComputeHash · Ascon-Hash256 · BouncyCastle 1KB 4,951.2 ns 16.97 ns 15.04 ns -
TryComputeHash · Ascon-Hash256 · CryptoHives-Scalar 1025B 3,662.0 ns 11.72 ns 10.39 ns -
TryComputeHash · Ascon-Hash256 · BouncyCastle 1025B 4,969.6 ns 23.35 ns 20.70 ns -
TryComputeHash · Ascon-Hash256 · CryptoHives-Scalar 8KB 28,395.7 ns 88.53 ns 82.81 ns -
TryComputeHash · Ascon-Hash256 · BouncyCastle 8KB 38,488.8 ns 161.04 ns 134.47 ns -
TryComputeHash · Ascon-Hash256 · CryptoHives-Scalar 128KB 470,123.1 ns 1,795.60 ns 1,401.89 ns -
TryComputeHash · Ascon-Hash256 · BouncyCastle 128KB 615,321.1 ns 4,345.47 ns 3,852.15 ns -

Ascon-XOF128

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Ascon-XOF128 · CryptoHives-Scalar 128B 574.7 ns 1.80 ns 1.51 ns -
TryComputeHash · Ascon-XOF128 · BouncyCastle 128B 762.7 ns 5.09 ns 4.52 ns -
TryComputeHash · Ascon-XOF128 · CryptoHives-Scalar 137B 598.9 ns 2.75 ns 2.57 ns -
TryComputeHash · Ascon-XOF128 · BouncyCastle 137B 810.7 ns 2.62 ns 2.33 ns -
TryComputeHash · Ascon-XOF128 · CryptoHives-Scalar 1KB 3,666.2 ns 12.96 ns 10.82 ns -
TryComputeHash · Ascon-XOF128 · BouncyCastle 1KB 4,925.3 ns 24.94 ns 23.32 ns -
TryComputeHash · Ascon-XOF128 · CryptoHives-Scalar 1025B 3,669.2 ns 13.18 ns 11.68 ns -
TryComputeHash · Ascon-XOF128 · BouncyCastle 1025B 4,903.2 ns 15.95 ns 14.13 ns -
TryComputeHash · Ascon-XOF128 · CryptoHives-Scalar 8KB 28,420.5 ns 145.69 ns 129.15 ns -
TryComputeHash · Ascon-XOF128 · BouncyCastle 8KB 38,031.2 ns 147.00 ns 122.75 ns -
TryComputeHash · Ascon-XOF128 · CryptoHives-Scalar 128KB 453,575.7 ns 1,541.47 ns 1,287.20 ns -
TryComputeHash · Ascon-XOF128 · BouncyCastle 128KB 610,509.3 ns 4,523.18 ns 4,009.68 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. At 128 B, CryptoHives (639 ns) is ~36% faster than OS (1,000 ns) and ~67% faster than BouncyCastle (1,971 ns). At 128 KiB, it is ~30% faster than OS and ~36% faster than BouncyCastle. The per-call advantage is largest at small payloads where the OS incurs marshalling overhead and BouncyCastle incurs per-call allocation (256 B); the gap narrows at bulk sizes as the Keccak permutation throughput dominates.

KMAC128

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · KMAC-128 · CryptoHives-Scalar 128B 639.3 ns 4.43 ns 4.15 ns -
TryComputeHash · KMAC-128 · OS Native 128B 999.7 ns 6.60 ns 5.85 ns 184 B
TryComputeHash · KMAC-128 · BouncyCastle 128B 1,971.0 ns 7.39 ns 6.17 ns 256 B
TryComputeHash · KMAC-128 · CryptoHives-Scalar 137B 637.9 ns 3.86 ns 3.23 ns -
TryComputeHash · KMAC-128 · OS Native 137B 1,011.2 ns 7.80 ns 6.92 ns 200 B
TryComputeHash · KMAC-128 · BouncyCastle 137B 1,994.4 ns 12.68 ns 11.86 ns 256 B
TryComputeHash · KMAC-128 · CryptoHives-Scalar 1KB 1,845.7 ns 25.21 ns 23.58 ns -
TryComputeHash · KMAC-128 · OS Native 1KB 2,500.8 ns 22.71 ns 21.25 ns 1080 B
TryComputeHash · KMAC-128 · BouncyCastle 1KB 3,802.3 ns 14.47 ns 12.08 ns 256 B
TryComputeHash · KMAC-128 · CryptoHives-Scalar 1025B 1,831.1 ns 11.22 ns 10.50 ns -
TryComputeHash · KMAC-128 · OS Native 1025B 2,490.6 ns 17.50 ns 16.37 ns 1088 B
TryComputeHash · KMAC-128 · BouncyCastle 1025B 3,805.8 ns 14.19 ns 12.58 ns 256 B
TryComputeHash · KMAC-128 · CryptoHives-Scalar 8KB 10,164.6 ns 51.04 ns 47.74 ns -
TryComputeHash · KMAC-128 · OS Native 8KB 12,849.2 ns 54.87 ns 45.82 ns 8248 B
TryComputeHash · KMAC-128 · BouncyCastle 8KB 16,837.5 ns 91.76 ns 81.34 ns 256 B
TryComputeHash · KMAC-128 · CryptoHives-Scalar 128KB 155,699.8 ns 1,005.02 ns 940.10 ns -
TryComputeHash · KMAC-128 · OS Native 128KB 223,175.9 ns 1,345.67 ns 1,258.74 ns 131151 B
TryComputeHash · KMAC-128 · BouncyCastle 128KB 241,935.6 ns 1,192.39 ns 1,057.02 ns 256 B

KMAC256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · KMAC-256 · CryptoHives-Scalar 128B 629.6 ns 3.16 ns 2.80 ns -
TryComputeHash · KMAC-256 · OS Native 128B 1,006.4 ns 5.70 ns 5.33 ns 184 B
TryComputeHash · KMAC-256 · BouncyCastle 128B 1,952.9 ns 15.74 ns 14.73 ns 256 B
TryComputeHash · KMAC-256 · CryptoHives-Scalar 137B 826.2 ns 4.23 ns 3.30 ns -
TryComputeHash · KMAC-256 · OS Native 137B 1,257.4 ns 6.32 ns 5.61 ns 200 B
TryComputeHash · KMAC-256 · BouncyCastle 137B 2,241.1 ns 13.80 ns 12.23 ns 256 B
TryComputeHash · KMAC-256 · CryptoHives-Scalar 1KB 2,012.7 ns 12.28 ns 11.49 ns -
TryComputeHash · KMAC-256 · OS Native 1KB 2,715.3 ns 19.65 ns 18.38 ns 1080 B
TryComputeHash · KMAC-256 · BouncyCastle 1KB 4,091.3 ns 15.59 ns 13.02 ns 256 B
TryComputeHash · KMAC-256 · CryptoHives-Scalar 1025B 2,013.1 ns 19.41 ns 18.16 ns -
TryComputeHash · KMAC-256 · OS Native 1025B 2,714.8 ns 16.76 ns 14.86 ns 1088 B
TryComputeHash · KMAC-256 · BouncyCastle 1025B 4,111.0 ns 43.10 ns 40.31 ns 256 B
TryComputeHash · KMAC-256 · CryptoHives-Scalar 8KB 12,476.3 ns 62.15 ns 58.14 ns -
TryComputeHash · KMAC-256 · OS Native 8KB 15,712.9 ns 109.22 ns 96.82 ns 8248 B
TryComputeHash · KMAC-256 · BouncyCastle 8KB 20,277.5 ns 125.13 ns 110.93 ns 256 B
TryComputeHash · KMAC-256 · CryptoHives-Scalar 128KB 190,673.8 ns 958.36 ns 849.56 ns -
TryComputeHash · KMAC-256 · OS Native 128KB 264,992.3 ns 1,632.14 ns 1,446.85 ns 131151 B
TryComputeHash · KMAC-256 · BouncyCastle 128KB 294,836.4 ns 1,281.56 ns 1,198.77 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.4 ns 0.57 ns 0.54 ns -
TryComputeHash · MD5 · CryptoHives-Scalar 128B 309.1 ns 3.11 ns 2.91 ns -
TryComputeHash · MD5 · BouncyCastle 128B 368.9 ns 0.49 ns 0.46 ns -
TryComputeHash · MD5 · OS Native 137B 266.4 ns 0.28 ns 0.23 ns -
TryComputeHash · MD5 · CryptoHives-Scalar 137B 312.8 ns 1.63 ns 1.45 ns -
TryComputeHash · MD5 · BouncyCastle 137B 369.1 ns 0.87 ns 0.72 ns -
TryComputeHash · MD5 · OS Native 1KB 1,377.6 ns 1.87 ns 1.75 ns -
TryComputeHash · MD5 · CryptoHives-Scalar 1KB 1,713.9 ns 10.44 ns 9.25 ns -
TryComputeHash · MD5 · BouncyCastle 1KB 2,011.5 ns 4.96 ns 4.40 ns -
TryComputeHash · MD5 · OS Native 1025B 1,369.2 ns 1.59 ns 1.41 ns -
TryComputeHash · MD5 · CryptoHives-Scalar 1025B 1,715.1 ns 8.07 ns 7.55 ns -
TryComputeHash · MD5 · BouncyCastle 1025B 2,013.3 ns 4.85 ns 4.30 ns -
TryComputeHash · MD5 · OS Native 8KB 10,155.2 ns 10.60 ns 9.92 ns -
TryComputeHash · MD5 · CryptoHives-Scalar 8KB 12,895.3 ns 76.00 ns 67.38 ns -
TryComputeHash · MD5 · BouncyCastle 8KB 15,144.2 ns 24.49 ns 21.71 ns -
TryComputeHash · MD5 · OS Native 128KB 160,835.1 ns 167.68 ns 156.85 ns -
TryComputeHash · MD5 · CryptoHives-Scalar 128KB 204,922.0 ns 896.17 ns 838.28 ns -
TryComputeHash · MD5 · BouncyCastle 128KB 240,671.1 ns 915.29 ns 811.38 ns -

SHA-1

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA-1 · OS Native 128B 229.0 ns 0.78 ns 0.69 ns -
TryComputeHash · SHA-1 · BouncyCastle 128B 434.3 ns 1.70 ns 1.59 ns -
TryComputeHash · SHA-1 · CryptoHives-Scalar 128B 455.1 ns 2.96 ns 2.63 ns -
TryComputeHash · SHA-1 · OS Native 137B 229.7 ns 1.01 ns 0.95 ns -
TryComputeHash · SHA-1 · BouncyCastle 137B 435.8 ns 1.55 ns 1.38 ns -
TryComputeHash · SHA-1 · CryptoHives-Scalar 137B 452.2 ns 2.07 ns 1.61 ns -
TryComputeHash · SHA-1 · OS Native 1KB 1,096.1 ns 2.12 ns 1.66 ns -
TryComputeHash · SHA-1 · BouncyCastle 1KB 2,420.6 ns 7.26 ns 6.44 ns -
TryComputeHash · SHA-1 · CryptoHives-Scalar 1KB 2,457.2 ns 14.34 ns 13.41 ns -
TryComputeHash · SHA-1 · OS Native 1025B 1,098.1 ns 3.65 ns 3.23 ns -
TryComputeHash · SHA-1 · BouncyCastle 1025B 2,416.6 ns 7.45 ns 5.82 ns -
TryComputeHash · SHA-1 · CryptoHives-Scalar 1025B 2,449.5 ns 12.44 ns 11.63 ns -
TryComputeHash · SHA-1 · OS Native 8KB 8,037.1 ns 28.62 ns 23.90 ns -
TryComputeHash · SHA-1 · BouncyCastle 8KB 18,224.4 ns 66.77 ns 59.19 ns -
TryComputeHash · SHA-1 · CryptoHives-Scalar 8KB 18,364.5 ns 60.05 ns 50.14 ns -
TryComputeHash · SHA-1 · OS Native 128KB 127,098.6 ns 155.43 ns 129.79 ns -
TryComputeHash · SHA-1 · BouncyCastle 128KB 289,536.6 ns 1,181.97 ns 1,047.78 ns -
TryComputeHash · SHA-1 · CryptoHives-Scalar 128KB 291,638.8 ns 1,352.95 ns 1,265.55 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 · CryptoHives-Scalar 128B 691.8 ns 1.63 ns 1.52 ns -
TryComputeHash · SM3 · BouncyCastle 128B 780.5 ns 4.64 ns 4.34 ns -
TryComputeHash · SM3 · CryptoHives-Scalar 137B 695.5 ns 2.23 ns 2.09 ns -
TryComputeHash · SM3 · BouncyCastle 137B 781.5 ns 3.03 ns 2.83 ns -
TryComputeHash · SM3 · CryptoHives-Scalar 1KB 3,870.8 ns 13.02 ns 11.54 ns -
TryComputeHash · SM3 · BouncyCastle 1KB 4,358.4 ns 11.60 ns 10.85 ns -
TryComputeHash · SM3 · CryptoHives-Scalar 1025B 3,876.9 ns 18.02 ns 15.04 ns -
TryComputeHash · SM3 · BouncyCastle 1025B 4,366.9 ns 16.04 ns 13.40 ns -
TryComputeHash · SM3 · CryptoHives-Scalar 8KB 29,200.2 ns 166.39 ns 155.64 ns -
TryComputeHash · SM3 · BouncyCastle 8KB 33,422.9 ns 120.08 ns 106.45 ns -
TryComputeHash · SM3 · CryptoHives-Scalar 128KB 462,994.6 ns 1,390.99 ns 1,233.08 ns -
TryComputeHash · SM3 · BouncyCastle 128KB 532,056.9 ns 2,589.70 ns 2,295.70 ns -

Streebog-256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Streebog-256 · CryptoHives-Scalar 128B 2.377 μs 0.0042 μs 0.0037 μs -
TryComputeHash · Streebog-256 · OpenGost 128B 3.467 μs 0.0319 μs 0.0283 μs 408 B
TryComputeHash · Streebog-256 · BouncyCastle 128B 4.329 μs 0.0325 μs 0.0288 μs -
TryComputeHash · Streebog-256 · CryptoHives-Scalar 137B 2.410 μs 0.0062 μs 0.0055 μs -
TryComputeHash · Streebog-256 · OpenGost 137B 3.474 μs 0.0428 μs 0.0400 μs 408 B
TryComputeHash · Streebog-256 · BouncyCastle 137B 4.289 μs 0.0175 μs 0.0164 μs -
TryComputeHash · Streebog-256 · CryptoHives-Scalar 1KB 9.155 μs 0.0312 μs 0.0292 μs -
TryComputeHash · Streebog-256 · OpenGost 1KB 12.800 μs 0.0952 μs 0.0890 μs 408 B
TryComputeHash · Streebog-256 · BouncyCastle 1KB 16.386 μs 0.0905 μs 0.0847 μs -
TryComputeHash · Streebog-256 · CryptoHives-Scalar 1025B 9.154 μs 0.0201 μs 0.0167 μs -
TryComputeHash · Streebog-256 · OpenGost 1025B 12.823 μs 0.0670 μs 0.0594 μs 408 B
TryComputeHash · Streebog-256 · BouncyCastle 1025B 16.240 μs 0.0796 μs 0.0706 μs -
TryComputeHash · Streebog-256 · CryptoHives-Scalar 8KB 62.222 μs 0.2465 μs 0.2058 μs -
TryComputeHash · Streebog-256 · OpenGost 8KB 87.600 μs 0.6162 μs 0.5764 μs 408 B
TryComputeHash · Streebog-256 · BouncyCastle 8KB 114.729 μs 0.6431 μs 0.5701 μs -
TryComputeHash · Streebog-256 · CryptoHives-Scalar 128KB 997.488 μs 3.9279 μs 3.4820 μs -
TryComputeHash · Streebog-256 · OpenGost 128KB 1,371.904 μs 6.9799 μs 5.8285 μs 408 B
TryComputeHash · Streebog-256 · BouncyCastle 128KB 1,754.677 μs 9.3372 μs 8.2771 μs -

Streebog-512

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Streebog-512 · CryptoHives-Scalar 128B 2.390 μs 0.0035 μs 0.0029 μs -
TryComputeHash · Streebog-512 · OpenGost 128B 3.376 μs 0.0190 μs 0.0158 μs 176 B
TryComputeHash · Streebog-512 · BouncyCastle 128B 4.256 μs 0.0256 μs 0.0227 μs -
TryComputeHash · Streebog-512 · CryptoHives-Scalar 137B 2.421 μs 0.0103 μs 0.0091 μs -
TryComputeHash · Streebog-512 · OpenGost 137B 3.375 μs 0.0242 μs 0.0214 μs 176 B
TryComputeHash · Streebog-512 · BouncyCastle 137B 4.289 μs 0.0171 μs 0.0143 μs -
TryComputeHash · Streebog-512 · CryptoHives-Scalar 1KB 9.164 μs 0.0256 μs 0.0227 μs -
TryComputeHash · Streebog-512 · OpenGost 1KB 12.747 μs 0.0955 μs 0.0798 μs 176 B
TryComputeHash · Streebog-512 · BouncyCastle 1KB 16.172 μs 0.0685 μs 0.0572 μs -
TryComputeHash · Streebog-512 · CryptoHives-Scalar 1025B 9.142 μs 0.0206 μs 0.0182 μs -
TryComputeHash · Streebog-512 · OpenGost 1025B 12.743 μs 0.0854 μs 0.0799 μs 176 B
TryComputeHash · Streebog-512 · BouncyCastle 1025B 16.312 μs 0.1198 μs 0.1121 μs -
TryComputeHash · Streebog-512 · CryptoHives-Scalar 8KB 62.810 μs 0.1245 μs 0.1040 μs -
TryComputeHash · Streebog-512 · OpenGost 8KB 87.574 μs 0.6647 μs 0.6217 μs 176 B
TryComputeHash · Streebog-512 · BouncyCastle 8KB 111.897 μs 0.4154 μs 0.3682 μs -
TryComputeHash · Streebog-512 · CryptoHives-Scalar 128KB 988.685 μs 4.5749 μs 3.5718 μs -
TryComputeHash · Streebog-512 · OpenGost 128KB 1,374.754 μs 7.6146 μs 7.1227 μs 176 B
TryComputeHash · Streebog-512 · BouncyCastle 128KB 1,759.552 μs 8.0487 μs 7.5287 μs -

Whirlpool

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Whirlpool · CryptoHives-Scalar 128B 1.379 μs 0.0061 μs 0.0051 μs -
TryComputeHash · Whirlpool · Hashify .NET 128B 2.033 μs 0.0197 μs 0.0174 μs 6336 B
TryComputeHash · Whirlpool · BouncyCastle 128B 5.086 μs 0.0412 μs 0.0344 μs 56 B
TryComputeHash · Whirlpool · CryptoHives-Scalar 137B 1.348 μs 0.0053 μs 0.0044 μs -
TryComputeHash · Whirlpool · Hashify .NET 137B 2.026 μs 0.0182 μs 0.0161 μs 6328 B
TryComputeHash · Whirlpool · BouncyCastle 137B 5.090 μs 0.0509 μs 0.0476 μs 56 B
TryComputeHash · Whirlpool · CryptoHives-Scalar 1KB 7.629 μs 0.0608 μs 0.0569 μs -
TryComputeHash · Whirlpool · Hashify .NET 1KB 10.342 μs 0.1014 μs 0.0949 μs 12032 B
TryComputeHash · Whirlpool · BouncyCastle 1KB 31.173 μs 0.1905 μs 0.1782 μs 56 B
TryComputeHash · Whirlpool · CryptoHives-Scalar 1025B 7.522 μs 0.0406 μs 0.0380 μs -
TryComputeHash · Whirlpool · Hashify .NET 1025B 10.320 μs 0.0812 μs 0.0760 μs 12040 B
TryComputeHash · Whirlpool · BouncyCastle 1025B 31.374 μs 0.2503 μs 0.2341 μs 56 B
TryComputeHash · Whirlpool · CryptoHives-Scalar 8KB 56.757 μs 0.2586 μs 0.2292 μs -
TryComputeHash · Whirlpool · Hashify .NET 8KB 76.504 μs 0.6803 μs 0.6030 μs 58624 B
TryComputeHash · Whirlpool · BouncyCastle 8KB 240.925 μs 1.8231 μs 1.7053 μs 56 B
TryComputeHash · Whirlpool · CryptoHives-Scalar 128KB 909.667 μs 2.7528 μs 2.4403 μs -
TryComputeHash · Whirlpool · Hashify .NET 128KB 1,265.003 μs 9.5233 μs 8.4421 μs 857372 B
TryComputeHash · Whirlpool · BouncyCastle 128KB 3,807.944 μs 20.7161 μs 19.3779 μs 56 B

RIPEMD-160

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · RIPEMD-160 · BouncyCastle 128B 638.8 ns 1.59 ns 1.41 ns -
TryComputeHash · RIPEMD-160 · CryptoHives-Scalar 128B 703.1 ns 4.50 ns 3.99 ns -
TryComputeHash · RIPEMD-160 · BouncyCastle 137B 639.3 ns 2.85 ns 2.53 ns -
TryComputeHash · RIPEMD-160 · CryptoHives-Scalar 137B 712.4 ns 7.27 ns 6.45 ns -
TryComputeHash · RIPEMD-160 · BouncyCastle 1KB 3,551.4 ns 3.91 ns 3.05 ns -
TryComputeHash · RIPEMD-160 · CryptoHives-Scalar 1KB 3,942.6 ns 24.81 ns 21.99 ns -
TryComputeHash · RIPEMD-160 · BouncyCastle 1025B 3,561.0 ns 9.13 ns 7.63 ns -
TryComputeHash · RIPEMD-160 · CryptoHives-Scalar 1025B 3,950.1 ns 14.31 ns 12.69 ns -
TryComputeHash · RIPEMD-160 · BouncyCastle 8KB 26,855.9 ns 68.48 ns 60.70 ns -
TryComputeHash · RIPEMD-160 · CryptoHives-Scalar 8KB 29,928.6 ns 266.76 ns 208.27 ns -
TryComputeHash · RIPEMD-160 · BouncyCastle 128KB 426,882.3 ns 1,441.29 ns 1,203.54 ns -
TryComputeHash · RIPEMD-160 · CryptoHives-Scalar 128KB 474,293.7 ns 3,466.28 ns 3,242.36 ns -

Kupyna-256 (DSTU 7564)

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Kupyna-256 · CryptoHives-Scalar 128B 2.233 μs 0.0185 μs 0.0164 μs -
TryComputeHash · Kupyna-256 · BouncyCastle 128B 3.397 μs 0.0132 μs 0.0110 μs -
TryComputeHash · Kupyna-256 · CryptoHives-Scalar 137B 2.242 μs 0.0163 μs 0.0152 μs -
TryComputeHash · Kupyna-256 · BouncyCastle 137B 3.271 μs 0.0167 μs 0.0148 μs -
TryComputeHash · Kupyna-256 · CryptoHives-Scalar 1KB 11.081 μs 0.0695 μs 0.0616 μs -
TryComputeHash · Kupyna-256 · BouncyCastle 1KB 16.327 μs 0.0748 μs 0.0699 μs -
TryComputeHash · Kupyna-256 · CryptoHives-Scalar 1025B 11.060 μs 0.0585 μs 0.0519 μs -
TryComputeHash · Kupyna-256 · BouncyCastle 1025B 16.302 μs 0.1060 μs 0.0992 μs -
TryComputeHash · Kupyna-256 · CryptoHives-Scalar 8KB 83.084 μs 1.2922 μs 2.2633 μs -
TryComputeHash · Kupyna-256 · BouncyCastle 8KB 120.768 μs 0.8643 μs 0.8084 μs -
TryComputeHash · Kupyna-256 · CryptoHives-Scalar 128KB 1,294.659 μs 6.5798 μs 5.8329 μs -
TryComputeHash · Kupyna-256 · BouncyCastle 128KB 1,902.040 μs 11.0804 μs 10.3646 μs -

Kupyna-384 (DSTU 7564)

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Kupyna-384 · CryptoHives-Scalar 128B 4.363 μs 0.0329 μs 0.0292 μs -
TryComputeHash · Kupyna-384 · BouncyCastle 128B 6.642 μs 0.0350 μs 0.0328 μs -
TryComputeHash · Kupyna-384 · CryptoHives-Scalar 137B 4.338 μs 0.0215 μs 0.0191 μs -
TryComputeHash · Kupyna-384 · BouncyCastle 137B 6.661 μs 0.0327 μs 0.0290 μs -
TryComputeHash · Kupyna-384 · CryptoHives-Scalar 1KB 16.417 μs 0.1065 μs 0.0996 μs -
TryComputeHash · Kupyna-384 · BouncyCastle 1KB 25.305 μs 0.1567 μs 0.1390 μs -
TryComputeHash · Kupyna-384 · CryptoHives-Scalar 1025B 16.438 μs 0.1075 μs 0.0953 μs -
TryComputeHash · Kupyna-384 · BouncyCastle 1025B 25.397 μs 0.1346 μs 0.1051 μs -
TryComputeHash · Kupyna-384 · CryptoHives-Scalar 8KB 112.927 μs 0.5562 μs 0.5203 μs -
TryComputeHash · Kupyna-384 · BouncyCastle 8KB 175.458 μs 2.3004 μs 2.1518 μs -
TryComputeHash · Kupyna-384 · CryptoHives-Scalar 128KB 1,770.080 μs 7.9694 μs 7.0646 μs -
TryComputeHash · Kupyna-384 · BouncyCastle 128KB 2,745.614 μs 13.6668 μs 12.7840 μs -

Kupyna-512 (DSTU 7564)

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Kupyna-512 · CryptoHives-Scalar 128B 4.337 μs 0.0245 μs 0.0217 μs -
TryComputeHash · Kupyna-512 · BouncyCastle 128B 6.707 μs 0.0898 μs 0.0840 μs -
TryComputeHash · Kupyna-512 · CryptoHives-Scalar 137B 4.350 μs 0.0343 μs 0.0321 μs -
TryComputeHash · Kupyna-512 · BouncyCastle 137B 6.650 μs 0.0318 μs 0.0265 μs -
TryComputeHash · Kupyna-512 · CryptoHives-Scalar 1KB 16.414 μs 0.1396 μs 0.1237 μs -
TryComputeHash · Kupyna-512 · BouncyCastle 1KB 25.350 μs 0.0886 μs 0.0785 μs -
TryComputeHash · Kupyna-512 · CryptoHives-Scalar 1025B 16.404 μs 0.1286 μs 0.1203 μs -
TryComputeHash · Kupyna-512 · BouncyCastle 1025B 25.351 μs 0.1466 μs 0.1299 μs -
TryComputeHash · Kupyna-512 · CryptoHives-Scalar 8KB 112.929 μs 0.5714 μs 0.5066 μs -
TryComputeHash · Kupyna-512 · BouncyCastle 8KB 174.499 μs 0.8201 μs 0.7270 μs -
TryComputeHash · Kupyna-512 · CryptoHives-Scalar 128KB 1,771.726 μs 11.1152 μs 9.8533 μs -
TryComputeHash · Kupyna-512 · BouncyCastle 128KB 2,741.613 μs 13.1621 μs 12.3118 μs -

LSH-256-256 (KS X 3262)

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · LSH-256-256 · CryptoHives-Scalar 128B 1.848 μs 0.0063 μs 0.0059 μs -
TryComputeHash · LSH-256-256 · CryptoHives-Scalar 137B 1.861 μs 0.0099 μs 0.0082 μs -
TryComputeHash · LSH-256-256 · CryptoHives-Scalar 1KB 8.130 μs 0.0335 μs 0.0297 μs -
TryComputeHash · LSH-256-256 · CryptoHives-Scalar 1025B 8.163 μs 0.0585 μs 0.0547 μs -
TryComputeHash · LSH-256-256 · CryptoHives-Scalar 8KB 58.416 μs 0.2323 μs 0.2173 μs -
TryComputeHash · LSH-256-256 · CryptoHives-Scalar 128KB 918.406 μs 3.1978 μs 2.9912 μs -

LSH-512-256 (KS X 3262)

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · LSH-512-256 · CryptoHives-Scalar 128B 1.044 μs 0.0057 μs 0.0053 μs -
TryComputeHash · LSH-512-256 · CryptoHives-Scalar 137B 1.039 μs 0.0073 μs 0.0065 μs -
TryComputeHash · LSH-512-256 · CryptoHives-Scalar 1KB 4.967 μs 0.0311 μs 0.0291 μs -
TryComputeHash · LSH-512-256 · CryptoHives-Scalar 1025B 4.973 μs 0.0158 μs 0.0140 μs -
TryComputeHash · LSH-512-256 · CryptoHives-Scalar 8KB 32.176 μs 0.1356 μs 0.1268 μs -
TryComputeHash · LSH-512-256 · CryptoHives-Scalar 128KB 501.782 μs 4.0564 μs 3.7944 μs -

LSH-512-512 (KS X 3262)

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · LSH-512-512 · CryptoHives-Scalar 128B 1.045 μs 0.0047 μs 0.0044 μs -
TryComputeHash · LSH-512-512 · CryptoHives-Scalar 137B 1.044 μs 0.0027 μs 0.0024 μs -
TryComputeHash · LSH-512-512 · CryptoHives-Scalar 1KB 4.967 μs 0.0212 μs 0.0199 μs -
TryComputeHash · LSH-512-512 · CryptoHives-Scalar 1025B 4.983 μs 0.0244 μs 0.0217 μs -
TryComputeHash · LSH-512-512 · CryptoHives-Scalar 8KB 32.108 μs 0.1955 μs 0.1829 μs -
TryComputeHash · LSH-512-512 · CryptoHives-Scalar 128KB 541.612 μs 1.5951 μs 1.2454 μs -

XOF Mode

XOF (Extendable Output Function) benchmarks measure the full absorb-then-squeeze cycle: the input is absorbed and an output of equal size is squeezed. The benchmark method is AbsorbSqueeze. All CryptoHives XOF implementations are zero-allocation regardless of output size. BouncyCastle's XOF implementations allocate an internal output buffer proportional to the squeezed length (e.g., ~150 KB for a 128 KiB squeeze), making them unsuitable for high-frequency streaming use.

Note

On Windows x64, the Managed Keccak scalar path outperforms BouncyCastle at small and medium sizes — the opposite of Apple M4, where BouncyCastle's Keccak is marginally faster due to pipelining characteristics of Apple Silicon. Windows CNG exposes a native SHAKE128, SHAKE256, KMAC128, and KMAC256 XOF interface; it does not expose cSHAKE as a standalone API.

SHAKE Family

SHAKE128 and SHAKE256 (FIPS 202) are variable-output-length extensions of the SHA-3 permutation with security strengths of 128 and 256 bits. SHAKE128 uses a 1344-bit rate (21 lanes) while SHAKE256 uses a 1088-bit rate — making SHAKE128 ~14% faster for the same output size.

On AMD Ryzen 5 7600X, CryptoHives Managed is the fastest at small inputs: ~47% faster than BouncyCastle at 128 B for SHAKE128, and ~49% faster for SHAKE256. At 8 KiB and beyond, OS Native (Windows CNG) takes the lead, presumably benefiting from a wider SIMD path in CNG's Keccak implementation. BouncyCastle is slowest across all sizes and allocates output-proportional buffers (~150 KB at 128 KiB squeeze).

Key observations:

  • Managed: Fastest at ≤ 1 KiB (~47–49% faster than BC); zero-allocation
  • OS Native: Fastest at ≥ 8 KiB; zero-allocation
  • BouncyCastle: Slowest; allocates ~150 KB at 128 KiB squeeze; ~9% slower than Managed at 128 KiB
  • SHAKE128 ~16% faster than SHAKE256 at 128 KiB due to wider rate

SHAKE128

Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · SHAKE128 · CryptoHives-Scalar 128B 2.614 μs 0.0200 μs 0.0187 μs -
AbsorbSqueeze · SHAKE128 · OS Native 128B 3.266 μs 0.0343 μs 0.0304 μs -
AbsorbSqueeze · SHAKE128 · BouncyCastle 128B 4.038 μs 0.0191 μs 0.0178 μs -
AbsorbSqueeze · SHAKE128 · CryptoHives-Scalar 1KB 3.779 μs 0.0222 μs 0.0208 μs -
AbsorbSqueeze · SHAKE128 · OS Native 1KB 4.681 μs 0.0289 μs 0.0256 μs -
AbsorbSqueeze · SHAKE128 · BouncyCastle 1KB 5.980 μs 0.0512 μs 0.0428 μs 1152 B
AbsorbSqueeze · SHAKE128 · CryptoHives-Scalar 8KB 11.886 μs 0.0459 μs 0.0407 μs -
AbsorbSqueeze · SHAKE128 · OS Native 8KB 14.797 μs 0.1038 μs 0.0920 μs -
AbsorbSqueeze · SHAKE128 · BouncyCastle 8KB 19.520 μs 0.1391 μs 0.1301 μs 9216 B
AbsorbSqueeze · SHAKE128 · CryptoHives-Scalar 128KB 153.131 μs 1.0075 μs 0.8931 μs -
AbsorbSqueeze · SHAKE128 · OS Native 128KB 189.887 μs 2.2975 μs 2.0367 μs -
AbsorbSqueeze · SHAKE128 · BouncyCastle 128KB 255.651 μs 1.5554 μs 1.4549 μs 149760 B

SHAKE256

Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · SHAKE256 · CryptoHives-Scalar 128B 3.186 μs 0.0215 μs 0.0191 μs -
AbsorbSqueeze · SHAKE256 · OS Native 128B 3.944 μs 0.0127 μs 0.0099 μs -
AbsorbSqueeze · SHAKE256 · BouncyCastle 128B 4.901 μs 0.0081 μs 0.0067 μs -
AbsorbSqueeze · SHAKE256 · CryptoHives-Scalar 1KB 4.524 μs 0.0355 μs 0.0314 μs -
AbsorbSqueeze · SHAKE256 · OS Native 1KB 5.571 μs 0.0262 μs 0.0232 μs -
AbsorbSqueeze · SHAKE256 · BouncyCastle 1KB 7.125 μs 0.0222 μs 0.0173 μs 1120 B
AbsorbSqueeze · SHAKE256 · CryptoHives-Scalar 8KB 14.719 μs 0.0980 μs 0.0917 μs -
AbsorbSqueeze · SHAKE256 · OS Native 8KB 18.053 μs 0.1019 μs 0.0851 μs -
AbsorbSqueeze · SHAKE256 · BouncyCastle 8KB 24.047 μs 0.0980 μs 0.0819 μs 9600 B
AbsorbSqueeze · SHAKE256 · CryptoHives-Scalar 128KB 188.333 μs 1.0793 μs 1.0096 μs -
AbsorbSqueeze · SHAKE256 · OS Native 128KB 231.843 μs 0.9705 μs 0.8104 μs -
AbsorbSqueeze · SHAKE256 · BouncyCastle 128KB 315.808 μs 1.1781 μs 0.9838 μs 154080 B

cSHAKE Family

cSHAKE128 and cSHAKE256 (NIST SP 800-185) add domain separation via function-name and customization strings on top of SHAKE. Windows CNG does not expose a cSHAKE XOF API, so only Managed and BouncyCastle are available here.

The CryptoHives Managed implementation leads at all sizes: ~47% faster than BouncyCastle at 128 B for cSHAKE128, and still ~9% faster at 128 KiB. The advantage at large sizes is distinct from the plain SHAKE results where OS Native overtook Managed — and shows the penalty of BouncyCastle's allocating XOF path. Both Managed and BouncyCastle are slightly slower than their plain SHAKE counterparts due to the encoding of customization strings during initialization.

Key observations:

  • Managed: Fastest at all sizes; ~47% faster than BC at 128 B, ~9% at 128 KiB; zero-allocation
  • BouncyCastle: Allocates ~150 KB at 128 KiB squeeze
  • No OS Native available for cSHAKE on Windows

cSHAKE128

Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · cSHAKE128 · CryptoHives-Scalar 128B 2.607 μs 0.0144 μs 0.0135 μs -
AbsorbSqueeze · cSHAKE128 · BouncyCastle 128B 4.013 μs 0.0173 μs 0.0135 μs -
AbsorbSqueeze · cSHAKE128 · CryptoHives-Scalar 1KB 3.763 μs 0.0138 μs 0.0115 μs -
AbsorbSqueeze · cSHAKE128 · BouncyCastle 1KB 5.939 μs 0.0213 μs 0.0178 μs 1152 B
AbsorbSqueeze · cSHAKE128 · CryptoHives-Scalar 8KB 11.874 μs 0.0497 μs 0.0415 μs -
AbsorbSqueeze · cSHAKE128 · BouncyCastle 8KB 19.493 μs 0.1138 μs 0.1065 μs 9216 B
AbsorbSqueeze · cSHAKE128 · CryptoHives-Scalar 128KB 152.646 μs 0.5885 μs 0.5217 μs -
AbsorbSqueeze · cSHAKE128 · BouncyCastle 128KB 253.871 μs 0.5608 μs 0.4379 μs 149760 B

cSHAKE256

Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · cSHAKE256 · CryptoHives-Scalar 128B 3.183 μs 0.0157 μs 0.0139 μs -
AbsorbSqueeze · cSHAKE256 · BouncyCastle 128B 4.908 μs 0.0226 μs 0.0211 μs -
AbsorbSqueeze · cSHAKE256 · CryptoHives-Scalar 1KB 4.525 μs 0.0328 μs 0.0307 μs -
AbsorbSqueeze · cSHAKE256 · BouncyCastle 1KB 7.109 μs 0.0296 μs 0.0247 μs 1120 B
AbsorbSqueeze · cSHAKE256 · CryptoHives-Scalar 8KB 14.678 μs 0.0494 μs 0.0462 μs -
AbsorbSqueeze · cSHAKE256 · BouncyCastle 8KB 24.327 μs 0.0797 μs 0.0665 μs 9600 B
AbsorbSqueeze · cSHAKE256 · CryptoHives-Scalar 128KB 187.876 μs 0.5233 μs 0.4370 μs -
AbsorbSqueeze · cSHAKE256 · BouncyCastle 128KB 314.991 μs 1.1409 μs 1.0114 μs 154080 B

KMAC Family (XOF)

KMAC128 XOF and KMAC256 XOF (NIST SP 800-185) are keyed variable-length PRFs based on cSHAKE. Windows CNG exposes KMAC XOF natively; it allocates a fixed 32 B per call for the output descriptor.

Managed leads at small sizes: ~59% faster than BouncyCastle at 128 B for KMAC128, ~58% for KMAC256. OS Native displaces Managed at ≥ 8 KiB (~12% faster than Managed at that crossover point). BouncyCastle is slowest throughout and allocates ~150 KB at 128 KiB.

Key observations:

  • Managed: Fastest at ≤ 1 KiB; zero-allocation
  • OS Native: Fastest at ≥ 8 KiB; allocates a fixed 32 B per call
  • BouncyCastle: Slowest; allocates 128 B at small sizes, ~150 KB at 128 KiB

KMAC128

Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · KMAC-128 · CryptoHives-Scalar 128B 3.022 μs 0.0170 μs 0.0159 μs -
AbsorbSqueeze · KMAC-128 · OS Native 128B 3.862 μs 0.0205 μs 0.0191 μs 32 B
AbsorbSqueeze · KMAC-128 · BouncyCastle 128B 5.017 μs 0.0343 μs 0.0268 μs 128 B
AbsorbSqueeze · KMAC-128 · CryptoHives-Scalar 1KB 4.181 μs 0.0280 μs 0.0262 μs -
AbsorbSqueeze · KMAC-128 · OS Native 1KB 5.284 μs 0.0226 μs 0.0200 μs 32 B
AbsorbSqueeze · KMAC-128 · BouncyCastle 1KB 6.924 μs 0.0334 μs 0.0279 μs 1280 B
AbsorbSqueeze · KMAC-128 · CryptoHives-Scalar 8KB 12.274 μs 0.0641 μs 0.0600 μs -
AbsorbSqueeze · KMAC-128 · OS Native 8KB 15.270 μs 0.0874 μs 0.0775 μs 32 B
AbsorbSqueeze · KMAC-128 · BouncyCastle 8KB 20.427 μs 0.1068 μs 0.0946 μs 9344 B
AbsorbSqueeze · KMAC-128 · CryptoHives-Scalar 128KB 152.990 μs 0.5088 μs 0.4249 μs -
AbsorbSqueeze · KMAC-128 · OS Native 128KB 189.590 μs 1.5164 μs 1.3443 μs 32 B
AbsorbSqueeze · KMAC-128 · BouncyCastle 128KB 256.960 μs 1.3968 μs 1.3066 μs 149888 B

KMAC256

Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · KMAC-256 · CryptoHives-Scalar 128B 3.589 μs 0.0173 μs 0.0162 μs -
AbsorbSqueeze · KMAC-256 · OS Native 128B 4.552 μs 0.0292 μs 0.0273 μs 32 B
AbsorbSqueeze · KMAC-256 · BouncyCastle 128B 5.860 μs 0.0349 μs 0.0291 μs 128 B
AbsorbSqueeze · KMAC-256 · CryptoHives-Scalar 1KB 4.951 μs 0.0415 μs 0.0368 μs -
AbsorbSqueeze · KMAC-256 · OS Native 1KB 6.203 μs 0.0586 μs 0.0548 μs 32 B
AbsorbSqueeze · KMAC-256 · BouncyCastle 1KB 8.091 μs 0.0433 μs 0.0384 μs 1248 B
AbsorbSqueeze · KMAC-256 · CryptoHives-Scalar 8KB 15.154 μs 0.0687 μs 0.0574 μs -
AbsorbSqueeze · KMAC-256 · OS Native 8KB 18.749 μs 0.1252 μs 0.1171 μs 32 B
AbsorbSqueeze · KMAC-256 · BouncyCastle 8KB 25.168 μs 0.1201 μs 0.1065 μs 9728 B
AbsorbSqueeze · KMAC-256 · CryptoHives-Scalar 128KB 189.391 μs 1.7310 μs 1.4454 μs -
AbsorbSqueeze · KMAC-256 · OS Native 128KB 231.744 μs 1.2464 μs 1.1658 μs 32 B
AbsorbSqueeze · KMAC-256 · BouncyCastle 128KB 317.308 μs 1.1747 μs 1.0414 μs 154208 B

KangarooTwelve Family (XOF)

KangarooTwelve (KT128 / KT256) are tree-hashing XOFs based on the Keccak permutation with 12 rounds (vs 24 for full SHA-3). The reduced-round design yields ~2× throughput over SHAKE128 while maintaining 128-bit security. No external competitor implementations are available for comparison.

On AMD Ryzen 5 7600X, KT128 XOF is ~75% faster than SHAKE128 Managed at 128 B, and ~45% faster at 128 KiB. The larger throughput advantage at bulk sizes reflects the 12-round saving being more impactful when the permutation dominates. KT256 uses the narrower cSHAKE256 rate and is slightly slower.

Key observations:

  • KT128: ~75% faster than SHAKE128 Managed at 128 B; ~45% faster at 128 KiB
  • KT256: ~19% slower than KT128 at 128 KiB due to narrower rate (1088-bit vs 1344-bit)
  • Zero-allocation; no BouncyCastle or OS comparison available

KT128

Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · KT128 · CryptoHives-Scalar 128B 1.446 μs 0.0102 μs 0.0091 μs -
AbsorbSqueeze · KT128 · CryptoHives-Scalar 1KB 2.052 μs 0.0197 μs 0.0165 μs -
AbsorbSqueeze · KT128 · CryptoHives-Scalar 8KB 6.303 μs 0.0305 μs 0.0270 μs -
AbsorbSqueeze · KT128 · CryptoHives-Scalar 128KB 80.207 μs 0.4070 μs 0.3608 μs -

KT256

Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · KT256 · CryptoHives-Scalar 128B 1.740 μs 0.0101 μs 0.0090 μs -
AbsorbSqueeze · KT256 · CryptoHives-Scalar 1KB 2.443 μs 0.0137 μs 0.0121 μs -
AbsorbSqueeze · KT256 · CryptoHives-Scalar 8KB 7.772 μs 0.0719 μs 0.0673 μs -
AbsorbSqueeze · KT256 · CryptoHives-Scalar 128KB 98.379 μs 0.5654 μs 0.5013 μs -

TurboSHAKE Family (XOF)

TurboSHAKE128 and TurboSHAKE256 (IETF RFC 9562) use 12 Keccak rounds with a simplified padding scheme and a plain XOF interface with no tree-hashing overhead. They are the simplest and fastest Keccak-family XOFs available.

On AMD Ryzen 5 7600X, TurboSHAKE128 XOF and KT128 XOF perform nearly identically across all payload sizes — essentially the same throughput with TurboSHAKE having a slightly simpler API. TurboSHAKE128 is the fastest Keccak-based XOF on this platform.

Key observations:

  • TurboSHAKE128 and KT128 deliver effectively equal throughput on x64
  • Fastest Keccak XOF on this platform at both small and large sizes
  • Zero-allocation; no OS or BouncyCastle comparison available

TurboSHAKE128

Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · TurboSHAKE128 · CryptoHives-Scalar 128B 1.426 μs 0.0107 μs 0.0100 μs -
AbsorbSqueeze · TurboSHAKE128 · CryptoHives-Scalar 1KB 2.034 μs 0.0186 μs 0.0164 μs -
AbsorbSqueeze · TurboSHAKE128 · CryptoHives-Scalar 8KB 6.282 μs 0.0429 μs 0.0401 μs -
AbsorbSqueeze · TurboSHAKE128 · CryptoHives-Scalar 128KB 80.315 μs 0.4244 μs 0.3763 μs -

TurboSHAKE256

Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · TurboSHAKE256 · CryptoHives-Scalar 128B 1.717 μs 0.0097 μs 0.0090 μs -
AbsorbSqueeze · TurboSHAKE256 · CryptoHives-Scalar 1KB 2.430 μs 0.0173 μs 0.0162 μs -
AbsorbSqueeze · TurboSHAKE256 · CryptoHives-Scalar 8KB 7.766 μs 0.0752 μs 0.0628 μs -
AbsorbSqueeze · TurboSHAKE256 · CryptoHives-Scalar 128KB 98.384 μs 0.4645 μs 0.3879 μs -

BLAKE3 (XOF)

BLAKE3 XOF produces output of arbitrary length using the same ChaCha-based compression function but extending the tree hashing to output-reader mode. On x64, CryptoHives ships three implementation tiers: Native (Rust via blake3-dotnet, uses AVX2/AVX-512 hash-many parallelism), Ssse3 (SSSE3-based parallel chunk generation), and Managed (scalar).

The Native Rust implementation dominates at all sizes: ~12× faster than Managed at 128 KiB, and ~15.7× faster than BouncyCastle. BouncyCastle's BLAKE3 XOF is extremely slow — it generates extended output sequentially without any tree parallelism and allocates only a fixed 56 B per call. Ssse3 provides a middle tier: ~4.3× faster than Managed at 128 KiB.

Key observations:

  • Native: ~12× faster than Managed at 128 KiB; ~15.7× faster than BC; zero-allocation
  • Ssse3: ~4.3× faster than Managed at 128 KiB; zero-allocation
  • Managed: ~2.4× faster than BC at 128 KiB; zero-allocation
  • BouncyCastle: Slowest by a large margin; allocates only 56 B (BC does not buffer large output slabs)
  • Native tree hash-many exploits AVX-512 on capable CPUs; falls back to AVX2 on Ryzen 5 7600X
Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · BLAKE3 · Blake3Native 128B 1.589 μs 0.0025 μs 0.0020 μs -
AbsorbSqueeze · BLAKE3 · CryptoHives-Ssse3 128B 2.319 μs 0.0134 μs 0.0112 μs -
AbsorbSqueeze · BLAKE3 · CryptoHives-Scalar 128B 10.061 μs 0.0372 μs 0.0330 μs -
AbsorbSqueeze · BLAKE3 · BouncyCastle 128B 19.848 μs 0.0409 μs 0.0363 μs 56 B
AbsorbSqueeze · BLAKE3 · Blake3Native 1KB 2.153 μs 0.0076 μs 0.0064 μs -
AbsorbSqueeze · BLAKE3 · CryptoHives-Ssse3 1KB 3.173 μs 0.0103 μs 0.0086 μs -
AbsorbSqueeze · BLAKE3 · CryptoHives-Scalar 1KB 14.158 μs 0.0395 μs 0.0369 μs -
AbsorbSqueeze · BLAKE3 · BouncyCastle 1KB 28.901 μs 0.0898 μs 0.0796 μs 56 B
AbsorbSqueeze · BLAKE3 · Blake3Native 8KB 6.659 μs 0.0145 μs 0.0121 μs -
AbsorbSqueeze · BLAKE3 · CryptoHives-Ssse3 8KB 9.696 μs 0.0301 μs 0.0251 μs -
AbsorbSqueeze · BLAKE3 · CryptoHives-Scalar 8KB 46.804 μs 0.1287 μs 0.1141 μs -
AbsorbSqueeze · BLAKE3 · BouncyCastle 8KB 103.228 μs 0.1771 μs 0.1570 μs 56 B
AbsorbSqueeze · BLAKE3 · Blake3Native 128KB 84.006 μs 0.1822 μs 0.1615 μs -
AbsorbSqueeze · BLAKE3 · CryptoHives-Ssse3 128KB 123.646 μs 0.3508 μs 0.3281 μs -
AbsorbSqueeze · BLAKE3 · CryptoHives-Scalar 128KB 606.850 μs 2.6969 μs 2.3908 μs -
AbsorbSqueeze · BLAKE3 · BouncyCastle 128KB 1,369.993 μs 3.2120 μs 3.0045 μs 56 B

Ascon-XOF128

Ascon-XOF128 (NIST Lightweight Cryptography standard 2023) is the XOF variant of the Ascon family using the same 320-bit permutation as Ascon-Hash256. It requires a 12-round permutation call per 16 bytes of rate, making it inherently slower than SHAKE/BLAKE XOFs for large outputs.

On AMD Ryzen 5 7600X, the CryptoHives Managed implementation is ~33% faster than BouncyCastle across all sizes. Zero allocation on both paths.

Key observations:

  • Managed: ~33% faster than BouncyCastle at all sizes; zero-allocation
  • Throughput ~3× slower than SHAKE128 Managed at 128 KiB due to the narrow 128-bit rate
  • Designed for memory-constrained environments, not bulk throughput
Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · Ascon-XOF128 · CryptoHives-Scalar 128B 7.569 μs 0.0377 μs 0.0334 μs -
AbsorbSqueeze · Ascon-XOF128 · BouncyCastle 128B 10.106 μs 0.0504 μs 0.0471 μs -
AbsorbSqueeze · Ascon-XOF128 · CryptoHives-Scalar 1KB 10.677 μs 0.0357 μs 0.0317 μs -
AbsorbSqueeze · Ascon-XOF128 · BouncyCastle 1KB 14.268 μs 0.0549 μs 0.0514 μs -
AbsorbSqueeze · Ascon-XOF128 · CryptoHives-Scalar 8KB 35.436 μs 0.1393 μs 0.1163 μs -
AbsorbSqueeze · Ascon-XOF128 · BouncyCastle 8KB 47.829 μs 0.5449 μs 0.5097 μs -
AbsorbSqueeze · Ascon-XOF128 · CryptoHives-Scalar 128KB 461.761 μs 2.5039 μs 2.3421 μs -
AbsorbSqueeze · Ascon-XOF128 · BouncyCastle 128KB 617.427 μs 2.5594 μs 2.2689 μs -