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.8655/25H2/2025Update/HudsonValley2)
AMD Ryzen 5 7600X 4.70GHz, 1 CPU, 12 logical and 6 physical cores
.NET SDK 10.0.301
[Host]    : .NET 10.0.9 (10.0.9, 10.0.926.27113), X64 RyuJIT x86-64-v4
.NET 10.0 : .NET 10.0.9 (10.0.9, 10.0.926.27113), 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 489.1 ns 8.84 ns 8.27 ns -
TryComputeHash · SHA-224 · BouncyCastle 128B 569.2 ns 11.02 ns 12.69 ns -
TryComputeHash · SHA-224 · CryptoHives-Scalar 137B 487.4 ns 8.67 ns 8.11 ns -
TryComputeHash · SHA-224 · BouncyCastle 137B 567.2 ns 8.17 ns 7.64 ns -
TryComputeHash · SHA-224 · CryptoHives-Scalar 1KB 2,722.4 ns 46.25 ns 43.26 ns -
TryComputeHash · SHA-224 · BouncyCastle 1KB 3,144.4 ns 37.45 ns 35.03 ns -
TryComputeHash · SHA-224 · CryptoHives-Scalar 1025B 2,725.0 ns 37.05 ns 34.65 ns -
TryComputeHash · SHA-224 · BouncyCastle 1025B 3,151.3 ns 53.06 ns 49.63 ns -
TryComputeHash · SHA-224 · CryptoHives-Scalar 8KB 20,548.7 ns 388.42 ns 381.48 ns -
TryComputeHash · SHA-224 · BouncyCastle 8KB 23,879.7 ns 382.55 ns 357.83 ns -
TryComputeHash · SHA-224 · CryptoHives-Scalar 128KB 326,393.1 ns 3,878.42 ns 3,627.88 ns -
TryComputeHash · SHA-224 · BouncyCastle 128KB 378,767.2 ns 6,004.98 ns 5,617.06 ns -

SHA-256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA-256 · OS Native 128B 107.5 ns 1.58 ns 1.48 ns -
TryComputeHash · SHA-256 · CryptoHives-Scalar 128B 488.9 ns 2.11 ns 1.97 ns -
TryComputeHash · SHA-256 · BouncyCastle 128B 570.9 ns 2.99 ns 2.50 ns -
TryComputeHash · SHA-256 · OS Native 137B 107.1 ns 0.23 ns 0.21 ns -
TryComputeHash · SHA-256 · CryptoHives-Scalar 137B 492.7 ns 1.32 ns 1.11 ns -
TryComputeHash · SHA-256 · BouncyCastle 137B 574.9 ns 1.58 ns 1.32 ns -
TryComputeHash · SHA-256 · OS Native 1KB 466.4 ns 1.96 ns 1.74 ns -
TryComputeHash · SHA-256 · CryptoHives-Scalar 1KB 2,724.6 ns 7.25 ns 6.43 ns -
TryComputeHash · SHA-256 · BouncyCastle 1KB 3,122.1 ns 6.16 ns 5.14 ns -
TryComputeHash · SHA-256 · OS Native 1025B 469.7 ns 2.95 ns 2.62 ns -
TryComputeHash · SHA-256 · CryptoHives-Scalar 1025B 2,732.8 ns 17.66 ns 14.75 ns -
TryComputeHash · SHA-256 · BouncyCastle 1025B 3,125.3 ns 9.45 ns 8.38 ns -
TryComputeHash · SHA-256 · OS Native 8KB 3,304.6 ns 7.78 ns 7.28 ns -
TryComputeHash · SHA-256 · CryptoHives-Scalar 8KB 20,627.0 ns 111.75 ns 104.53 ns -
TryComputeHash · SHA-256 · BouncyCastle 8KB 23,579.4 ns 113.51 ns 94.78 ns -
TryComputeHash · SHA-256 · OS Native 128KB 51,891.2 ns 92.50 ns 72.22 ns -
TryComputeHash · SHA-256 · CryptoHives-Scalar 128KB 330,252.4 ns 2,034.38 ns 1,803.42 ns -
TryComputeHash · SHA-256 · BouncyCastle 128KB 376,594.2 ns 3,683.56 ns 3,265.38 ns -

SHA-384

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA-384 · OS Native 128B 361.0 ns 6.64 ns 6.21 ns -
TryComputeHash · SHA-384 · CryptoHives-Scalar 128B 416.4 ns 3.78 ns 3.16 ns -
TryComputeHash · SHA-384 · BouncyCastle 128B 492.9 ns 7.84 ns 7.33 ns -
TryComputeHash · SHA-384 · OS Native 137B 357.2 ns 4.60 ns 4.30 ns -
TryComputeHash · SHA-384 · CryptoHives-Scalar 137B 423.7 ns 8.46 ns 7.91 ns -
TryComputeHash · SHA-384 · BouncyCastle 137B 491.4 ns 6.81 ns 6.37 ns -
TryComputeHash · SHA-384 · OS Native 1KB 1,455.3 ns 28.43 ns 31.60 ns -
TryComputeHash · SHA-384 · CryptoHives-Scalar 1KB 1,828.0 ns 16.79 ns 15.71 ns -
TryComputeHash · SHA-384 · BouncyCastle 1KB 2,153.8 ns 24.75 ns 21.94 ns -
TryComputeHash · SHA-384 · OS Native 1025B 1,430.6 ns 19.57 ns 18.31 ns -
TryComputeHash · SHA-384 · CryptoHives-Scalar 1025B 1,886.0 ns 33.33 ns 31.18 ns -
TryComputeHash · SHA-384 · BouncyCastle 1025B 2,186.5 ns 34.73 ns 30.79 ns -
TryComputeHash · SHA-384 · OS Native 8KB 10,223.7 ns 193.87 ns 181.35 ns -
TryComputeHash · SHA-384 · CryptoHives-Scalar 8KB 13,120.1 ns 169.57 ns 141.60 ns -
TryComputeHash · SHA-384 · BouncyCastle 8KB 15,535.9 ns 254.23 ns 237.80 ns -
TryComputeHash · SHA-384 · OS Native 128KB 157,125.1 ns 1,873.86 ns 1,661.12 ns -
TryComputeHash · SHA-384 · CryptoHives-Scalar 128KB 206,812.9 ns 1,933.84 ns 1,714.29 ns -
TryComputeHash · SHA-384 · BouncyCastle 128KB 245,454.8 ns 4,085.01 ns 3,411.17 ns -

SHA-512

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA-512 · OS Native 128B 357.2 ns 6.91 ns 7.09 ns -
TryComputeHash · SHA-512 · CryptoHives-Scalar 128B 424.6 ns 5.93 ns 5.26 ns -
TryComputeHash · SHA-512 · BouncyCastle 128B 497.6 ns 8.59 ns 8.04 ns -
TryComputeHash · SHA-512 · OS Native 137B 358.1 ns 5.83 ns 5.46 ns -
TryComputeHash · SHA-512 · CryptoHives-Scalar 137B 424.2 ns 6.94 ns 6.16 ns -
TryComputeHash · SHA-512 · BouncyCastle 137B 498.1 ns 9.50 ns 8.89 ns -
TryComputeHash · SHA-512 · OS Native 1KB 1,442.5 ns 27.53 ns 27.04 ns -
TryComputeHash · SHA-512 · CryptoHives-Scalar 1KB 1,840.7 ns 29.96 ns 28.02 ns -
TryComputeHash · SHA-512 · BouncyCastle 1KB 2,230.8 ns 29.73 ns 24.82 ns -
TryComputeHash · SHA-512 · OS Native 1025B 1,443.5 ns 19.43 ns 17.22 ns -
TryComputeHash · SHA-512 · CryptoHives-Scalar 1025B 1,852.9 ns 26.39 ns 24.68 ns -
TryComputeHash · SHA-512 · BouncyCastle 1025B 2,161.6 ns 25.35 ns 19.79 ns -
TryComputeHash · SHA-512 · OS Native 8KB 10,365.2 ns 201.54 ns 232.09 ns -
TryComputeHash · SHA-512 · CryptoHives-Scalar 8KB 13,228.6 ns 212.16 ns 198.45 ns -
TryComputeHash · SHA-512 · BouncyCastle 8KB 15,452.9 ns 183.85 ns 153.52 ns -
TryComputeHash · SHA-512 · OS Native 128KB 157,007.5 ns 1,855.05 ns 1,644.46 ns -
TryComputeHash · SHA-512 · CryptoHives-Scalar 128KB 214,100.9 ns 4,252.75 ns 5,378.36 ns -
TryComputeHash · SHA-512 · BouncyCastle 128KB 248,566.4 ns 3,226.89 ns 3,018.43 ns -

SHA-512/224

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA-512/224 · CryptoHives-Scalar 128B 417.9 ns 7.73 ns 7.23 ns -
TryComputeHash · SHA-512/224 · BouncyCastle 128B 509.9 ns 9.25 ns 8.65 ns -
TryComputeHash · SHA-512/224 · CryptoHives-Scalar 137B 435.3 ns 7.10 ns 6.30 ns -
TryComputeHash · SHA-512/224 · BouncyCastle 137B 513.6 ns 9.93 ns 9.75 ns -
TryComputeHash · SHA-512/224 · CryptoHives-Scalar 1KB 1,841.1 ns 15.33 ns 13.59 ns -
TryComputeHash · SHA-512/224 · BouncyCastle 1KB 2,169.5 ns 19.68 ns 17.45 ns -
TryComputeHash · SHA-512/224 · CryptoHives-Scalar 1025B 1,830.5 ns 22.52 ns 19.96 ns -
TryComputeHash · SHA-512/224 · BouncyCastle 1025B 2,188.8 ns 15.89 ns 14.09 ns -
TryComputeHash · SHA-512/224 · CryptoHives-Scalar 8KB 13,340.3 ns 263.16 ns 246.16 ns -
TryComputeHash · SHA-512/224 · BouncyCastle 8KB 15,670.5 ns 272.86 ns 255.24 ns -
TryComputeHash · SHA-512/224 · CryptoHives-Scalar 128KB 211,694.0 ns 3,696.84 ns 3,458.03 ns -
TryComputeHash · SHA-512/224 · BouncyCastle 128KB 245,045.7 ns 3,216.71 ns 3,008.91 ns -

SHA-512/256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA-512/256 · CryptoHives-Scalar 128B 411.5 ns 3.70 ns 3.09 ns -
TryComputeHash · SHA-512/256 · BouncyCastle 128B 502.7 ns 4.52 ns 4.23 ns -
TryComputeHash · SHA-512/256 · CryptoHives-Scalar 137B 415.4 ns 4.57 ns 4.28 ns -
TryComputeHash · SHA-512/256 · BouncyCastle 137B 512.1 ns 8.28 ns 7.75 ns -
TryComputeHash · SHA-512/256 · CryptoHives-Scalar 1KB 1,871.4 ns 36.05 ns 49.35 ns -
TryComputeHash · SHA-512/256 · BouncyCastle 1KB 2,203.0 ns 41.30 ns 40.57 ns -
TryComputeHash · SHA-512/256 · CryptoHives-Scalar 1025B 1,850.0 ns 35.18 ns 36.12 ns -
TryComputeHash · SHA-512/256 · BouncyCastle 1025B 2,189.6 ns 33.81 ns 31.62 ns -
TryComputeHash · SHA-512/256 · CryptoHives-Scalar 8KB 13,278.0 ns 237.93 ns 222.56 ns -
TryComputeHash · SHA-512/256 · BouncyCastle 8KB 15,506.8 ns 108.54 ns 96.22 ns -
TryComputeHash · SHA-512/256 · CryptoHives-Scalar 128KB 205,556.2 ns 1,813.28 ns 1,696.14 ns -
TryComputeHash · SHA-512/256 · BouncyCastle 128KB 245,754.6 ns 4,741.78 ns 4,869.46 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 216.6 ns 0.51 ns 0.42 ns -
TryComputeHash · SHA3-224 · CryptoHives-AVX2 128B 283.4 ns 2.00 ns 1.67 ns -
TryComputeHash · SHA3-224 · CryptoHives-AVX512F 128B 293.1 ns 1.59 ns 1.33 ns -
TryComputeHash · SHA3-224 · BouncyCastle 128B 344.3 ns 0.81 ns 0.72 ns -
TryComputeHash · SHA3-224 · CryptoHives-Scalar 137B 215.7 ns 0.45 ns 0.40 ns -
TryComputeHash · SHA3-224 · CryptoHives-AVX2 137B 282.3 ns 2.09 ns 1.74 ns -
TryComputeHash · SHA3-224 · CryptoHives-AVX512F 137B 292.2 ns 1.06 ns 0.94 ns -
TryComputeHash · SHA3-224 · BouncyCastle 137B 343.5 ns 0.83 ns 0.70 ns -
TryComputeHash · SHA3-224 · CryptoHives-Scalar 1KB 1,652.8 ns 3.99 ns 3.54 ns -
TryComputeHash · SHA3-224 · CryptoHives-AVX2 1KB 2,190.5 ns 15.39 ns 12.85 ns -
TryComputeHash · SHA3-224 · CryptoHives-AVX512F 1KB 2,278.7 ns 39.48 ns 36.93 ns -
TryComputeHash · SHA3-224 · BouncyCastle 1KB 2,557.0 ns 14.21 ns 12.60 ns -
TryComputeHash · SHA3-224 · CryptoHives-Scalar 1025B 1,653.0 ns 6.87 ns 5.37 ns -
TryComputeHash · SHA3-224 · CryptoHives-AVX2 1025B 2,198.6 ns 22.16 ns 19.64 ns -
TryComputeHash · SHA3-224 · CryptoHives-AVX512F 1025B 2,267.1 ns 8.62 ns 6.73 ns -
TryComputeHash · SHA3-224 · BouncyCastle 1025B 2,560.5 ns 16.74 ns 15.66 ns -
TryComputeHash · SHA3-224 · CryptoHives-Scalar 8KB 11,620.7 ns 37.90 ns 35.45 ns -
TryComputeHash · SHA3-224 · CryptoHives-AVX2 8KB 15,570.8 ns 80.82 ns 71.65 ns -
TryComputeHash · SHA3-224 · CryptoHives-AVX512F 8KB 15,882.4 ns 54.60 ns 45.59 ns -
TryComputeHash · SHA3-224 · BouncyCastle 8KB 17,928.9 ns 58.96 ns 49.24 ns -
TryComputeHash · SHA3-224 · CryptoHives-Scalar 128KB 187,139.2 ns 1,285.12 ns 1,202.11 ns -
TryComputeHash · SHA3-224 · CryptoHives-AVX2 128KB 248,599.3 ns 611.18 ns 510.36 ns -
TryComputeHash · SHA3-224 · CryptoHives-AVX512F 128KB 254,189.7 ns 1,241.93 ns 1,100.94 ns -
TryComputeHash · SHA3-224 · BouncyCastle 128KB 291,004.8 ns 440.61 ns 390.59 ns -

SHA3-256

Description TestDataSize Mean Error StdDev Median Allocated
TryComputeHash · SHA3-256 · CryptoHives-Scalar 128B 214.5 ns 0.61 ns 0.54 ns 214.4 ns -
TryComputeHash · SHA3-256 · OS Native 128B 281.4 ns 1.21 ns 1.01 ns 281.0 ns -
TryComputeHash · SHA3-256 · CryptoHives-AVX2 128B 282.7 ns 1.47 ns 1.15 ns 282.6 ns -
TryComputeHash · SHA3-256 · CryptoHives-AVX512F 128B 291.4 ns 0.82 ns 0.76 ns 291.1 ns -
TryComputeHash · SHA3-256 · BouncyCastle 128B 342.3 ns 0.93 ns 0.87 ns 342.2 ns -
TryComputeHash · SHA3-256 · CryptoHives-Scalar 137B 419.8 ns 0.97 ns 0.86 ns 420.0 ns -
TryComputeHash · SHA3-256 · OS Native 137B 521.4 ns 1.44 ns 1.20 ns 521.5 ns -
TryComputeHash · SHA3-256 · CryptoHives-AVX2 137B 555.1 ns 1.72 ns 1.61 ns 555.1 ns -
TryComputeHash · SHA3-256 · CryptoHives-AVX512F 137B 572.8 ns 1.57 ns 1.23 ns 573.1 ns -
TryComputeHash · SHA3-256 · BouncyCastle 137B 652.1 ns 2.91 ns 2.58 ns 651.3 ns -
TryComputeHash · SHA3-256 · CryptoHives-Scalar 1KB 1,641.1 ns 29.84 ns 27.91 ns 1,643.2 ns -
TryComputeHash · SHA3-256 · OS Native 1KB 1,987.9 ns 6.59 ns 5.50 ns 1,987.7 ns -
TryComputeHash · SHA3-256 · CryptoHives-AVX2 1KB 2,187.9 ns 13.97 ns 10.91 ns 2,188.7 ns -
TryComputeHash · SHA3-256 · CryptoHives-AVX512F 1KB 2,279.5 ns 44.01 ns 43.23 ns 2,260.1 ns -
TryComputeHash · SHA3-256 · BouncyCastle 1KB 2,541.1 ns 43.58 ns 40.76 ns 2,532.6 ns -
TryComputeHash · SHA3-256 · CryptoHives-Scalar 1025B 1,633.7 ns 25.15 ns 23.53 ns 1,632.4 ns -
TryComputeHash · SHA3-256 · OS Native 1025B 1,977.0 ns 29.60 ns 27.68 ns 1,967.8 ns -
TryComputeHash · SHA3-256 · CryptoHives-AVX2 1025B 2,260.3 ns 43.62 ns 108.63 ns 2,214.7 ns -
TryComputeHash · SHA3-256 · CryptoHives-AVX512F 1025B 2,269.8 ns 44.90 ns 61.46 ns 2,237.1 ns -
TryComputeHash · SHA3-256 · BouncyCastle 1025B 2,550.8 ns 42.10 ns 39.38 ns 2,544.3 ns -
TryComputeHash · SHA3-256 · CryptoHives-Scalar 8KB 12,399.9 ns 218.78 ns 204.65 ns 12,392.4 ns -
TryComputeHash · SHA3-256 · OS Native 8KB 14,745.3 ns 208.37 ns 194.91 ns 14,642.4 ns -
TryComputeHash · SHA3-256 · CryptoHives-AVX2 8KB 16,675.1 ns 319.49 ns 283.22 ns 16,536.1 ns -
TryComputeHash · SHA3-256 · CryptoHives-AVX512F 8KB 17,081.9 ns 273.01 ns 255.38 ns 16,971.8 ns -
TryComputeHash · SHA3-256 · BouncyCastle 8KB 19,226.8 ns 377.89 ns 371.14 ns 19,133.8 ns -
TryComputeHash · SHA3-256 · CryptoHives-Scalar 128KB 195,901.3 ns 1,581.14 ns 1,401.64 ns 195,860.7 ns -
TryComputeHash · SHA3-256 · OS Native 128KB 236,760.6 ns 4,088.71 ns 3,824.58 ns 237,593.7 ns -
TryComputeHash · SHA3-256 · CryptoHives-AVX2 128KB 263,385.2 ns 4,788.06 ns 4,244.49 ns 261,844.8 ns -
TryComputeHash · SHA3-256 · CryptoHives-AVX512F 128KB 269,985.9 ns 4,118.81 ns 3,852.74 ns 268,114.4 ns -
TryComputeHash · SHA3-256 · BouncyCastle 128KB 304,297.6 ns 3,903.78 ns 3,651.59 ns 304,134.3 ns -

SHA3-384

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA3-384 · CryptoHives-Scalar 128B 417.4 ns 5.84 ns 5.46 ns -
TryComputeHash · SHA3-384 · OS Native 128B 527.2 ns 10.37 ns 9.70 ns -
TryComputeHash · SHA3-384 · CryptoHives-AVX2 128B 557.8 ns 9.46 ns 8.85 ns -
TryComputeHash · SHA3-384 · CryptoHives-AVX512F 128B 576.9 ns 10.24 ns 9.58 ns -
TryComputeHash · SHA3-384 · BouncyCastle 128B 649.5 ns 8.93 ns 8.35 ns -
TryComputeHash · SHA3-384 · CryptoHives-Scalar 137B 414.6 ns 3.19 ns 2.98 ns -
TryComputeHash · SHA3-384 · OS Native 137B 525.9 ns 6.51 ns 6.09 ns -
TryComputeHash · SHA3-384 · CryptoHives-AVX2 137B 559.1 ns 3.92 ns 3.48 ns -
TryComputeHash · SHA3-384 · CryptoHives-AVX512F 137B 570.3 ns 2.82 ns 2.36 ns -
TryComputeHash · SHA3-384 · BouncyCastle 137B 648.2 ns 7.58 ns 7.09 ns -
TryComputeHash · SHA3-384 · CryptoHives-Scalar 1KB 2,023.4 ns 20.82 ns 18.46 ns -
TryComputeHash · SHA3-384 · OS Native 1KB 2,509.8 ns 43.67 ns 40.85 ns -
TryComputeHash · SHA3-384 · CryptoHives-AVX2 1KB 2,714.4 ns 11.91 ns 10.56 ns -
TryComputeHash · SHA3-384 · CryptoHives-AVX512F 1KB 2,820.0 ns 40.63 ns 36.02 ns -
TryComputeHash · SHA3-384 · BouncyCastle 1KB 3,144.6 ns 36.21 ns 32.10 ns -
TryComputeHash · SHA3-384 · CryptoHives-Scalar 1025B 2,036.9 ns 27.40 ns 24.29 ns -
TryComputeHash · SHA3-384 · OS Native 1025B 2,455.5 ns 25.80 ns 22.87 ns -
TryComputeHash · SHA3-384 · CryptoHives-AVX2 1025B 2,733.4 ns 28.83 ns 24.07 ns -
TryComputeHash · SHA3-384 · CryptoHives-AVX512F 1025B 2,803.4 ns 28.86 ns 24.10 ns -
TryComputeHash · SHA3-384 · BouncyCastle 1025B 3,139.7 ns 30.84 ns 27.34 ns -
TryComputeHash · SHA3-384 · CryptoHives-Scalar 8KB 16,183.2 ns 261.33 ns 244.45 ns -
TryComputeHash · SHA3-384 · OS Native 8KB 19,238.9 ns 369.01 ns 378.95 ns -
TryComputeHash · SHA3-384 · CryptoHives-AVX2 8KB 21,630.8 ns 312.53 ns 292.34 ns -
TryComputeHash · SHA3-384 · CryptoHives-AVX512F 8KB 22,101.1 ns 235.02 ns 208.34 ns -
TryComputeHash · SHA3-384 · BouncyCastle 8KB 24,566.7 ns 257.76 ns 241.11 ns -
TryComputeHash · SHA3-384 · CryptoHives-Scalar 128KB 256,405.4 ns 4,983.97 ns 4,894.93 ns -
TryComputeHash · SHA3-384 · OS Native 128KB 304,689.5 ns 3,442.59 ns 3,051.76 ns -
TryComputeHash · SHA3-384 · CryptoHives-AVX2 128KB 346,414.3 ns 4,927.27 ns 3,846.88 ns -
TryComputeHash · SHA3-384 · CryptoHives-AVX512F 128KB 352,278.9 ns 3,670.54 ns 3,433.43 ns -
TryComputeHash · SHA3-384 · BouncyCastle 128KB 390,596.1 ns 3,322.84 ns 2,594.26 ns -

SHA3-512

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA3-512 · CryptoHives-Scalar 128B 436.2 ns 8.41 ns 10.02 ns -
TryComputeHash · SHA3-512 · OS Native 128B 541.2 ns 10.25 ns 11.80 ns -
TryComputeHash · SHA3-512 · CryptoHives-AVX2 128B 551.0 ns 4.59 ns 3.83 ns -
TryComputeHash · SHA3-512 · CryptoHives-AVX512F 128B 581.2 ns 11.23 ns 11.54 ns -
TryComputeHash · SHA3-512 · BouncyCastle 128B 649.7 ns 8.85 ns 7.39 ns -
TryComputeHash · SHA3-512 · CryptoHives-Scalar 137B 413.1 ns 5.36 ns 5.02 ns -
TryComputeHash · SHA3-512 · OS Native 137B 526.7 ns 6.43 ns 5.70 ns -
TryComputeHash · SHA3-512 · CryptoHives-AVX2 137B 562.4 ns 10.79 ns 10.60 ns -
TryComputeHash · SHA3-512 · CryptoHives-AVX512F 137B 580.8 ns 11.41 ns 11.21 ns -
TryComputeHash · SHA3-512 · BouncyCastle 137B 667.6 ns 10.56 ns 9.37 ns -
TryComputeHash · SHA3-512 · CryptoHives-Scalar 1KB 3,022.6 ns 48.71 ns 45.56 ns -
TryComputeHash · SHA3-512 · OS Native 1KB 3,641.4 ns 39.41 ns 34.93 ns -
TryComputeHash · SHA3-512 · CryptoHives-AVX2 1KB 4,049.1 ns 27.64 ns 24.50 ns -
TryComputeHash · SHA3-512 · CryptoHives-AVX512F 1KB 4,253.8 ns 81.45 ns 80.00 ns -
TryComputeHash · SHA3-512 · BouncyCastle 1KB 4,626.6 ns 38.41 ns 35.93 ns -
TryComputeHash · SHA3-512 · CryptoHives-Scalar 1025B 3,029.2 ns 44.30 ns 39.27 ns -
TryComputeHash · SHA3-512 · OS Native 1025B 3,704.0 ns 69.40 ns 71.27 ns -
TryComputeHash · SHA3-512 · CryptoHives-AVX2 1025B 4,036.3 ns 25.28 ns 19.74 ns -
TryComputeHash · SHA3-512 · CryptoHives-AVX512F 1025B 4,205.2 ns 83.05 ns 81.56 ns -
TryComputeHash · SHA3-512 · BouncyCastle 1025B 4,705.2 ns 92.55 ns 95.04 ns -
TryComputeHash · SHA3-512 · CryptoHives-Scalar 8KB 23,087.5 ns 378.28 ns 353.84 ns -
TryComputeHash · SHA3-512 · OS Native 8KB 27,558.3 ns 392.72 ns 348.14 ns -
TryComputeHash · SHA3-512 · CryptoHives-AVX2 8KB 30,663.5 ns 420.05 ns 350.76 ns -
TryComputeHash · SHA3-512 · CryptoHives-AVX512F 8KB 31,815.8 ns 600.08 ns 589.36 ns -
TryComputeHash · SHA3-512 · BouncyCastle 8KB 35,606.6 ns 485.62 ns 454.25 ns -
TryComputeHash · SHA3-512 · CryptoHives-Scalar 128KB 364,100.0 ns 4,174.05 ns 3,485.52 ns -
TryComputeHash · SHA3-512 · OS Native 128KB 436,042.4 ns 5,542.17 ns 5,184.15 ns -
TryComputeHash · SHA3-512 · CryptoHives-AVX2 128KB 495,904.7 ns 9,563.30 ns 11,013.11 ns -
TryComputeHash · SHA3-512 · CryptoHives-AVX512F 128KB 509,660.0 ns 9,671.31 ns 9,498.52 ns -
TryComputeHash · SHA3-512 · BouncyCastle 128KB 565,657.2 ns 6,220.68 ns 5,818.83 ns -

Keccak Family

Keccak-256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Keccak-256 · CryptoHives-Scalar 128B 215.1 ns 0.97 ns 0.86 ns -
TryComputeHash · Keccak-256 · CryptoHives-AVX2 128B 281.4 ns 0.65 ns 0.58 ns -
TryComputeHash · Keccak-256 · CryptoHives-AVX512F 128B 292.2 ns 0.67 ns 0.63 ns -
TryComputeHash · Keccak-256 · BouncyCastle 128B 341.7 ns 0.44 ns 0.39 ns -
TryComputeHash · Keccak-256 · CryptoHives-Scalar 137B 419.4 ns 1.29 ns 1.07 ns -
TryComputeHash · Keccak-256 · CryptoHives-AVX2 137B 554.1 ns 1.71 ns 1.43 ns -
TryComputeHash · Keccak-256 · CryptoHives-AVX512F 137B 572.4 ns 1.46 ns 1.30 ns -
TryComputeHash · Keccak-256 · BouncyCastle 137B 649.2 ns 0.62 ns 0.52 ns -
TryComputeHash · Keccak-256 · CryptoHives-Scalar 1KB 1,639.0 ns 1.94 ns 1.51 ns -
TryComputeHash · Keccak-256 · CryptoHives-AVX2 1KB 2,179.4 ns 4.42 ns 3.69 ns -
TryComputeHash · Keccak-256 · CryptoHives-AVX512F 1KB 2,240.9 ns 11.50 ns 10.20 ns -
TryComputeHash · Keccak-256 · BouncyCastle 1KB 2,534.4 ns 3.15 ns 2.80 ns -
TryComputeHash · Keccak-256 · CryptoHives-Scalar 1025B 1,637.5 ns 1.42 ns 1.26 ns -
TryComputeHash · Keccak-256 · CryptoHives-AVX2 1025B 2,178.6 ns 7.01 ns 6.56 ns -
TryComputeHash · Keccak-256 · CryptoHives-AVX512F 1025B 2,232.3 ns 9.22 ns 8.62 ns -
TryComputeHash · Keccak-256 · BouncyCastle 1025B 2,541.2 ns 5.13 ns 4.29 ns -
TryComputeHash · Keccak-256 · CryptoHives-Scalar 8KB 12,454.1 ns 43.02 ns 35.92 ns -
TryComputeHash · Keccak-256 · CryptoHives-AVX2 8KB 16,548.9 ns 43.34 ns 38.42 ns -
TryComputeHash · Keccak-256 · CryptoHives-AVX512F 8KB 16,923.1 ns 47.35 ns 39.54 ns -
TryComputeHash · Keccak-256 · BouncyCastle 8KB 19,256.4 ns 22.48 ns 19.93 ns -
TryComputeHash · Keccak-256 · CryptoHives-Scalar 128KB 196,844.7 ns 339.31 ns 300.79 ns -
TryComputeHash · Keccak-256 · CryptoHives-AVX2 128KB 261,760.8 ns 530.20 ns 470.00 ns -
TryComputeHash · Keccak-256 · CryptoHives-AVX512F 128KB 267,796.4 ns 761.59 ns 712.39 ns -
TryComputeHash · Keccak-256 · BouncyCastle 128KB 303,418.8 ns 465.35 ns 435.29 ns -

Keccak-384

Description TestDataSize Mean Error StdDev Median Allocated
TryComputeHash · Keccak-384 · CryptoHives-Scalar 128B 414.6 ns 0.85 ns 0.75 ns 414.4 ns -
TryComputeHash · Keccak-384 · CryptoHives-AVX2 128B 553.3 ns 1.49 ns 1.32 ns 552.9 ns -
TryComputeHash · Keccak-384 · CryptoHives-AVX512F 128B 571.5 ns 1.26 ns 1.12 ns 571.3 ns -
TryComputeHash · Keccak-384 · BouncyCastle 128B 644.7 ns 0.79 ns 0.66 ns 644.9 ns -
TryComputeHash · Keccak-384 · CryptoHives-Scalar 137B 416.3 ns 0.73 ns 0.69 ns 416.3 ns -
TryComputeHash · Keccak-384 · CryptoHives-AVX2 137B 553.0 ns 1.58 ns 1.32 ns 552.6 ns -
TryComputeHash · Keccak-384 · CryptoHives-AVX512F 137B 572.4 ns 1.35 ns 1.13 ns 572.0 ns -
TryComputeHash · Keccak-384 · BouncyCastle 137B 645.6 ns 0.83 ns 0.78 ns 645.7 ns -
TryComputeHash · Keccak-384 · CryptoHives-Scalar 1KB 2,094.6 ns 47.60 ns 131.89 ns 2,032.6 ns -
TryComputeHash · Keccak-384 · CryptoHives-AVX2 1KB 2,723.4 ns 9.77 ns 8.16 ns 2,720.1 ns -
TryComputeHash · Keccak-384 · CryptoHives-AVX512F 1KB 2,789.0 ns 8.34 ns 7.80 ns 2,787.6 ns -
TryComputeHash · Keccak-384 · BouncyCastle 1KB 3,144.5 ns 6.28 ns 5.57 ns 3,143.2 ns -
TryComputeHash · Keccak-384 · CryptoHives-Scalar 1025B 2,031.2 ns 4.33 ns 3.84 ns 2,031.6 ns -
TryComputeHash · Keccak-384 · CryptoHives-AVX2 1025B 2,726.8 ns 9.15 ns 7.64 ns 2,727.2 ns -
TryComputeHash · Keccak-384 · CryptoHives-AVX512F 1025B 2,793.1 ns 12.67 ns 11.23 ns 2,792.7 ns -
TryComputeHash · Keccak-384 · BouncyCastle 1025B 3,152.3 ns 3.33 ns 2.78 ns 3,152.7 ns -
TryComputeHash · Keccak-384 · CryptoHives-Scalar 8KB 16,037.6 ns 32.25 ns 30.17 ns 16,034.8 ns -
TryComputeHash · Keccak-384 · CryptoHives-AVX2 8KB 21,398.8 ns 68.13 ns 63.73 ns 21,403.5 ns -
TryComputeHash · Keccak-384 · CryptoHives-AVX512F 8KB 21,969.0 ns 62.92 ns 52.54 ns 21,989.9 ns -
TryComputeHash · Keccak-384 · BouncyCastle 8KB 24,642.1 ns 29.30 ns 27.41 ns 24,643.1 ns -
TryComputeHash · Keccak-384 · CryptoHives-Scalar 128KB 255,172.8 ns 891.12 ns 789.96 ns 255,142.4 ns -
TryComputeHash · Keccak-384 · CryptoHives-AVX2 128KB 341,441.3 ns 1,096.51 ns 856.08 ns 341,475.2 ns -
TryComputeHash · Keccak-384 · CryptoHives-AVX512F 128KB 349,867.0 ns 927.04 ns 867.15 ns 349,866.3 ns -
TryComputeHash · Keccak-384 · BouncyCastle 128KB 394,682.3 ns 564.83 ns 500.71 ns 394,696.8 ns -

Keccak-512

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Keccak-512 · CryptoHives-Scalar 128B 477.6 ns 1.14 ns 1.01 ns -
TryComputeHash · Keccak-512 · CryptoHives-AVX2 128B 547.1 ns 1.59 ns 1.41 ns -
TryComputeHash · Keccak-512 · CryptoHives-AVX512F 128B 569.5 ns 1.63 ns 1.44 ns -
TryComputeHash · Keccak-512 · BouncyCastle 128B 646.1 ns 0.81 ns 0.76 ns -
TryComputeHash · Keccak-512 · CryptoHives-Scalar 137B 413.2 ns 0.41 ns 0.34 ns -
TryComputeHash · Keccak-512 · CryptoHives-AVX2 137B 548.0 ns 1.19 ns 0.99 ns -
TryComputeHash · Keccak-512 · CryptoHives-AVX512F 137B 576.5 ns 2.36 ns 1.97 ns -
TryComputeHash · Keccak-512 · BouncyCastle 137B 646.3 ns 2.07 ns 1.73 ns -
TryComputeHash · Keccak-512 · CryptoHives-Scalar 1KB 3,032.8 ns 7.29 ns 6.46 ns -
TryComputeHash · Keccak-512 · CryptoHives-AVX2 1KB 4,031.5 ns 11.67 ns 9.75 ns -
TryComputeHash · Keccak-512 · CryptoHives-AVX512F 1KB 4,147.0 ns 18.31 ns 16.23 ns -
TryComputeHash · Keccak-512 · BouncyCastle 1KB 4,663.5 ns 8.50 ns 7.10 ns -
TryComputeHash · Keccak-512 · CryptoHives-Scalar 1025B 3,017.7 ns 2.93 ns 2.29 ns -
TryComputeHash · Keccak-512 · CryptoHives-AVX2 1025B 4,036.1 ns 11.57 ns 10.82 ns -
TryComputeHash · Keccak-512 · CryptoHives-AVX512F 1025B 4,148.1 ns 8.87 ns 7.86 ns -
TryComputeHash · Keccak-512 · BouncyCastle 1025B 4,673.1 ns 12.71 ns 11.89 ns -
TryComputeHash · Keccak-512 · CryptoHives-Scalar 8KB 22,971.0 ns 75.00 ns 58.56 ns -
TryComputeHash · Keccak-512 · CryptoHives-AVX2 8KB 30,558.3 ns 98.02 ns 91.69 ns -
TryComputeHash · Keccak-512 · CryptoHives-AVX512F 8KB 31,387.8 ns 85.36 ns 75.67 ns -
TryComputeHash · Keccak-512 · BouncyCastle 8KB 35,740.4 ns 203.45 ns 169.89 ns -
TryComputeHash · Keccak-512 · CryptoHives-Scalar 128KB 365,178.5 ns 726.56 ns 679.62 ns -
TryComputeHash · Keccak-512 · CryptoHives-AVX512F 128KB 503,445.0 ns 1,551.94 ns 1,375.75 ns -
TryComputeHash · Keccak-512 · CryptoHives-AVX2 128KB 510,925.8 ns 2,083.87 ns 1,949.26 ns -
TryComputeHash · Keccak-512 · BouncyCastle 128KB 568,685.7 ns 795.10 ns 704.83 ns -

SHAKE Family

SHAKE128

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHAKE128 · CryptoHives-Scalar 128B 218.8 ns 1.93 ns 1.81 ns -
TryComputeHash · SHAKE128 · CryptoHives-AVX2 128B 289.0 ns 2.00 ns 1.56 ns -
TryComputeHash · SHAKE128 · CryptoHives-AVX512F 128B 302.2 ns 4.67 ns 4.36 ns -
TryComputeHash · SHAKE128 · BouncyCastle 128B 342.0 ns 4.59 ns 4.07 ns -
TryComputeHash · SHAKE128 · OS Native 128B 367.9 ns 5.57 ns 5.21 ns -
TryComputeHash · SHAKE128 · CryptoHives-Scalar 137B 219.1 ns 2.32 ns 2.06 ns -
TryComputeHash · SHAKE128 · CryptoHives-AVX2 137B 289.1 ns 2.77 ns 2.59 ns -
TryComputeHash · SHAKE128 · CryptoHives-AVX512F 137B 307.5 ns 6.03 ns 5.64 ns -
TryComputeHash · SHAKE128 · BouncyCastle 137B 348.6 ns 3.75 ns 3.51 ns -
TryComputeHash · SHAKE128 · OS Native 137B 382.3 ns 7.14 ns 7.01 ns -
TryComputeHash · SHAKE128 · CryptoHives-Scalar 1KB 1,465.3 ns 12.43 ns 11.63 ns -
TryComputeHash · SHAKE128 · OS Native 1KB 1,859.0 ns 35.35 ns 31.34 ns -
TryComputeHash · SHAKE128 · CryptoHives-AVX2 1KB 1,929.9 ns 13.16 ns 12.31 ns -
TryComputeHash · SHAKE128 · CryptoHives-AVX512F 1KB 1,986.9 ns 21.06 ns 17.59 ns -
TryComputeHash · SHAKE128 · BouncyCastle 1KB 2,272.6 ns 44.38 ns 49.33 ns -
TryComputeHash · SHAKE128 · CryptoHives-Scalar 1025B 1,458.9 ns 23.36 ns 24.99 ns -
TryComputeHash · SHAKE128 · OS Native 1025B 1,914.7 ns 38.04 ns 61.43 ns -
TryComputeHash · SHAKE128 · CryptoHives-AVX2 1025B 1,931.4 ns 16.62 ns 14.73 ns -
TryComputeHash · SHAKE128 · CryptoHives-AVX512F 1025B 1,982.7 ns 17.17 ns 15.22 ns -
TryComputeHash · SHAKE128 · BouncyCastle 1025B 2,262.0 ns 40.27 ns 37.67 ns -
TryComputeHash · SHAKE128 · CryptoHives-Scalar 8KB 10,108.0 ns 135.95 ns 120.51 ns -
TryComputeHash · SHAKE128 · OS Native 8KB 12,177.7 ns 140.01 ns 130.96 ns -
TryComputeHash · SHAKE128 · CryptoHives-AVX2 8KB 13,497.1 ns 165.36 ns 129.10 ns -
TryComputeHash · SHAKE128 · CryptoHives-AVX512F 8KB 13,730.6 ns 138.45 ns 115.61 ns -
TryComputeHash · SHAKE128 · BouncyCastle 8KB 15,602.7 ns 195.16 ns 224.75 ns -
TryComputeHash · SHAKE128 · CryptoHives-Scalar 128KB 161,810.2 ns 3,173.12 ns 3,395.20 ns -
TryComputeHash · SHAKE128 · OS Native 128KB 191,751.2 ns 2,562.60 ns 2,000.71 ns -
TryComputeHash · SHAKE128 · CryptoHives-AVX512F 128KB 219,213.5 ns 3,549.53 ns 3,320.23 ns -
TryComputeHash · SHAKE128 · CryptoHives-AVX2 128KB 219,374.1 ns 4,060.03 ns 3,599.11 ns -
TryComputeHash · SHAKE128 · BouncyCastle 128KB 251,756.7 ns 4,944.94 ns 6,072.84 ns -

SHAKE256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHAKE256 · CryptoHives-Scalar 128B 215.8 ns 0.45 ns 0.42 ns -
TryComputeHash · SHAKE256 · CryptoHives-AVX2 128B 286.3 ns 1.57 ns 1.39 ns -
TryComputeHash · SHAKE256 · CryptoHives-AVX512F 128B 295.3 ns 1.14 ns 1.01 ns -
TryComputeHash · SHAKE256 · BouncyCastle 128B 342.7 ns 1.05 ns 0.88 ns -
TryComputeHash · SHAKE256 · OS Native 128B 363.7 ns 1.45 ns 1.28 ns -
TryComputeHash · SHAKE256 · CryptoHives-Scalar 137B 420.2 ns 2.53 ns 2.11 ns -
TryComputeHash · SHAKE256 · CryptoHives-AVX2 137B 558.8 ns 4.35 ns 3.85 ns -
TryComputeHash · SHAKE256 · CryptoHives-AVX512F 137B 574.4 ns 2.37 ns 2.10 ns -
TryComputeHash · SHAKE256 · OS Native 137B 604.9 ns 3.00 ns 2.66 ns -
TryComputeHash · SHAKE256 · BouncyCastle 137B 647.8 ns 1.37 ns 1.21 ns -
TryComputeHash · SHAKE256 · CryptoHives-Scalar 1KB 1,646.8 ns 6.47 ns 5.40 ns -
TryComputeHash · SHAKE256 · OS Native 1KB 2,060.2 ns 10.08 ns 8.94 ns -
TryComputeHash · SHAKE256 · CryptoHives-AVX512F 1KB 2,244.8 ns 20.46 ns 15.98 ns -
TryComputeHash · SHAKE256 · CryptoHives-AVX2 1KB 2,245.0 ns 44.11 ns 68.67 ns -
TryComputeHash · SHAKE256 · BouncyCastle 1KB 2,548.5 ns 18.50 ns 17.31 ns -
TryComputeHash · SHAKE256 · CryptoHives-Scalar 1025B 1,636.7 ns 4.04 ns 3.78 ns -
TryComputeHash · SHAKE256 · OS Native 1025B 2,064.8 ns 6.26 ns 5.55 ns -
TryComputeHash · SHAKE256 · CryptoHives-AVX2 1025B 2,192.8 ns 40.94 ns 34.19 ns -
TryComputeHash · SHAKE256 · CryptoHives-AVX512F 1025B 2,237.1 ns 10.39 ns 8.68 ns -
TryComputeHash · SHAKE256 · BouncyCastle 1025B 2,533.8 ns 8.59 ns 8.04 ns -
TryComputeHash · SHAKE256 · CryptoHives-Scalar 8KB 12,387.3 ns 25.28 ns 23.65 ns -
TryComputeHash · SHAKE256 · OS Native 8KB 14,869.0 ns 38.25 ns 33.90 ns -
TryComputeHash · SHAKE256 · CryptoHives-AVX2 8KB 16,498.7 ns 34.98 ns 29.21 ns -
TryComputeHash · SHAKE256 · CryptoHives-AVX512F 8KB 16,931.1 ns 49.48 ns 43.86 ns -
TryComputeHash · SHAKE256 · BouncyCastle 8KB 19,090.4 ns 33.29 ns 31.14 ns -
TryComputeHash · SHAKE256 · CryptoHives-Scalar 128KB 195,802.8 ns 364.09 ns 304.03 ns -
TryComputeHash · SHAKE256 · OS Native 128KB 233,177.1 ns 578.34 ns 482.94 ns -
TryComputeHash · SHAKE256 · CryptoHives-AVX2 128KB 261,033.4 ns 802.70 ns 670.29 ns -
TryComputeHash · SHAKE256 · CryptoHives-AVX512F 128KB 267,174.2 ns 733.11 ns 685.75 ns -
TryComputeHash · SHAKE256 · BouncyCastle 128KB 303,270.5 ns 726.13 ns 643.70 ns -

cSHAKE Family

cSHAKE128

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · cSHAKE128 · CryptoHives-Scalar 128B 220.0 ns 0.29 ns 0.28 ns -
TryComputeHash · cSHAKE128 · CryptoHives-AVX2 128B 290.9 ns 0.80 ns 0.71 ns -
TryComputeHash · cSHAKE128 · CryptoHives-AVX512F 128B 298.8 ns 1.56 ns 1.53 ns -
TryComputeHash · cSHAKE128 · BouncyCastle 128B 346.6 ns 0.46 ns 0.40 ns -
TryComputeHash · cSHAKE128 · CryptoHives-Scalar 137B 219.5 ns 0.41 ns 0.36 ns -
TryComputeHash · cSHAKE128 · CryptoHives-AVX2 137B 287.8 ns 0.84 ns 0.78 ns -
TryComputeHash · cSHAKE128 · CryptoHives-AVX512F 137B 298.0 ns 1.69 ns 1.50 ns -
TryComputeHash · cSHAKE128 · BouncyCastle 137B 347.1 ns 0.43 ns 0.38 ns -
TryComputeHash · cSHAKE128 · CryptoHives-Scalar 1KB 1,451.7 ns 2.69 ns 2.24 ns -
TryComputeHash · cSHAKE128 · CryptoHives-AVX2 1KB 1,925.6 ns 4.25 ns 3.77 ns -
TryComputeHash · cSHAKE128 · CryptoHives-AVX512F 1KB 1,974.2 ns 8.46 ns 7.06 ns -
TryComputeHash · cSHAKE128 · BouncyCastle 1KB 2,246.3 ns 3.18 ns 2.66 ns -
TryComputeHash · cSHAKE128 · CryptoHives-Scalar 1025B 1,456.2 ns 2.81 ns 2.49 ns -
TryComputeHash · cSHAKE128 · CryptoHives-AVX2 1025B 1,921.8 ns 6.38 ns 5.96 ns -
TryComputeHash · cSHAKE128 · CryptoHives-AVX512F 1025B 1,971.2 ns 5.53 ns 4.62 ns -
TryComputeHash · cSHAKE128 · BouncyCastle 1025B 2,245.0 ns 4.02 ns 3.76 ns -
TryComputeHash · cSHAKE128 · CryptoHives-Scalar 8KB 10,061.4 ns 12.91 ns 10.78 ns -
TryComputeHash · cSHAKE128 · CryptoHives-AVX2 8KB 13,365.6 ns 27.93 ns 24.76 ns -
TryComputeHash · cSHAKE128 · CryptoHives-AVX512F 8KB 13,661.0 ns 36.62 ns 34.26 ns -
TryComputeHash · cSHAKE128 · BouncyCastle 8KB 15,618.8 ns 23.81 ns 22.27 ns -
TryComputeHash · cSHAKE128 · CryptoHives-Scalar 128KB 160,558.3 ns 368.92 ns 288.03 ns -
TryComputeHash · cSHAKE128 · CryptoHives-AVX2 128KB 213,050.1 ns 748.64 ns 663.65 ns -
TryComputeHash · cSHAKE128 · CryptoHives-AVX512F 128KB 217,378.2 ns 541.89 ns 452.50 ns -
TryComputeHash · cSHAKE128 · BouncyCastle 128KB 247,866.7 ns 577.16 ns 511.64 ns -

cSHAKE256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · cSHAKE256 · CryptoHives-Scalar 128B 217.0 ns 0.31 ns 0.25 ns -
TryComputeHash · cSHAKE256 · CryptoHives-AVX2 128B 287.1 ns 1.75 ns 1.46 ns -
TryComputeHash · cSHAKE256 · CryptoHives-AVX512F 128B 295.8 ns 1.82 ns 1.52 ns -
TryComputeHash · cSHAKE256 · BouncyCastle 128B 343.4 ns 0.30 ns 0.25 ns -
TryComputeHash · cSHAKE256 · CryptoHives-Scalar 137B 420.8 ns 0.56 ns 0.53 ns -
TryComputeHash · cSHAKE256 · CryptoHives-AVX2 137B 558.0 ns 1.51 ns 1.26 ns -
TryComputeHash · cSHAKE256 · CryptoHives-AVX512F 137B 576.5 ns 3.88 ns 3.44 ns -
TryComputeHash · cSHAKE256 · BouncyCastle 137B 653.6 ns 2.77 ns 2.31 ns -
TryComputeHash · cSHAKE256 · CryptoHives-Scalar 1KB 1,649.9 ns 2.54 ns 2.26 ns -
TryComputeHash · cSHAKE256 · CryptoHives-AVX2 1KB 2,179.2 ns 7.05 ns 6.60 ns -
TryComputeHash · cSHAKE256 · CryptoHives-AVX512F 1KB 2,236.5 ns 9.32 ns 8.26 ns -
TryComputeHash · cSHAKE256 · BouncyCastle 1KB 2,650.3 ns 2.97 ns 2.48 ns -
TryComputeHash · cSHAKE256 · CryptoHives-Scalar 1025B 1,647.3 ns 3.68 ns 2.87 ns -
TryComputeHash · cSHAKE256 · CryptoHives-AVX2 1025B 2,181.4 ns 7.57 ns 7.08 ns -
TryComputeHash · cSHAKE256 · CryptoHives-AVX512F 1025B 2,239.2 ns 4.58 ns 3.83 ns -
TryComputeHash · cSHAKE256 · BouncyCastle 1025B 2,547.2 ns 2.05 ns 1.92 ns -
TryComputeHash · cSHAKE256 · CryptoHives-Scalar 8KB 12,422.4 ns 31.25 ns 27.70 ns -
TryComputeHash · cSHAKE256 · CryptoHives-AVX2 8KB 16,531.3 ns 92.97 ns 77.63 ns -
TryComputeHash · cSHAKE256 · CryptoHives-AVX512F 8KB 16,936.2 ns 39.71 ns 33.16 ns -
TryComputeHash · cSHAKE256 · BouncyCastle 8KB 19,176.3 ns 25.71 ns 21.47 ns -
TryComputeHash · cSHAKE256 · CryptoHives-Scalar 128KB 196,478.9 ns 323.60 ns 302.69 ns -
TryComputeHash · cSHAKE256 · CryptoHives-AVX2 128KB 261,632.8 ns 1,402.61 ns 1,243.38 ns -
TryComputeHash · cSHAKE256 · CryptoHives-AVX512F 128KB 267,381.8 ns 1,176.32 ns 918.39 ns -
TryComputeHash · cSHAKE256 · BouncyCastle 128KB 303,375.5 ns 424.20 ns 376.04 ns -

KangarooTwelve Family

KT128

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · KT128 · CryptoHives-Scalar 128B 131.6 ns 0.26 ns 0.22 ns -
TryComputeHash · KT128 · CryptoHives-AVX2 128B 162.8 ns 0.35 ns 0.29 ns -
TryComputeHash · KT128 · CryptoHives-AVX512F 128B 168.8 ns 0.32 ns 0.28 ns -
TryComputeHash · KT128 · CryptoHives-Scalar 137B 131.3 ns 0.43 ns 0.36 ns -
TryComputeHash · KT128 · CryptoHives-AVX2 137B 162.0 ns 0.88 ns 0.78 ns -
TryComputeHash · KT128 · CryptoHives-AVX512F 137B 168.5 ns 0.44 ns 0.41 ns -
TryComputeHash · KT128 · CryptoHives-Scalar 1KB 799.9 ns 1.09 ns 0.91 ns -
TryComputeHash · KT128 · CryptoHives-AVX2 1KB 1,018.8 ns 1.95 ns 1.73 ns -
TryComputeHash · KT128 · CryptoHives-AVX512F 1KB 1,049.8 ns 4.05 ns 3.38 ns -
TryComputeHash · KT128 · CryptoHives-Scalar 1025B 804.7 ns 1.78 ns 1.58 ns -
TryComputeHash · KT128 · CryptoHives-AVX2 1025B 1,022.4 ns 3.88 ns 3.03 ns -
TryComputeHash · KT128 · CryptoHives-AVX512F 1025B 1,054.6 ns 5.60 ns 4.67 ns -
TryComputeHash · KT128 · CryptoHives-Scalar 8KB 5,949.1 ns 14.65 ns 13.70 ns -
TryComputeHash · KT128 · CryptoHives-AVX2 8KB 7,549.7 ns 18.60 ns 14.52 ns -
TryComputeHash · KT128 · CryptoHives-AVX512F 8KB 7,741.4 ns 19.92 ns 18.63 ns -
TryComputeHash · KT128 · CryptoHives-Scalar 128KB 91,050.2 ns 351.09 ns 311.23 ns -
TryComputeHash · KT128 · CryptoHives-AVX2 128KB 115,767.2 ns 452.26 ns 377.65 ns -
TryComputeHash · KT128 · CryptoHives-AVX512F 128KB 118,998.5 ns 241.36 ns 213.96 ns -

KT256

Description TestDataSize Mean Error StdDev Median Allocated
TryComputeHash · KT256 · CryptoHives-Scalar 128B 131.0 ns 0.24 ns 0.21 ns 130.9 ns -
TryComputeHash · KT256 · CryptoHives-AVX2 128B 161.3 ns 1.35 ns 1.20 ns 160.9 ns -
TryComputeHash · KT256 · CryptoHives-AVX512F 128B 167.9 ns 0.81 ns 0.72 ns 167.8 ns -
TryComputeHash · KT256 · CryptoHives-Scalar 137B 238.9 ns 0.35 ns 0.31 ns 238.8 ns -
TryComputeHash · KT256 · CryptoHives-AVX2 137B 314.9 ns 6.31 ns 13.72 ns 309.0 ns -
TryComputeHash · KT256 · CryptoHives-AVX512F 137B 317.4 ns 3.79 ns 3.36 ns 316.1 ns -
TryComputeHash · KT256 · CryptoHives-Scalar 1KB 899.0 ns 2.07 ns 1.94 ns 899.3 ns -
TryComputeHash · KT256 · CryptoHives-AVX2 1KB 1,148.1 ns 3.24 ns 2.87 ns 1,148.5 ns -
TryComputeHash · KT256 · CryptoHives-AVX512F 1KB 1,188.0 ns 2.54 ns 2.25 ns 1,188.0 ns -
TryComputeHash · KT256 · CryptoHives-Scalar 1025B 899.9 ns 1.63 ns 1.52 ns 899.9 ns -
TryComputeHash · KT256 · CryptoHives-AVX2 1025B 1,155.9 ns 15.58 ns 13.81 ns 1,148.9 ns -
TryComputeHash · KT256 · CryptoHives-AVX512F 1025B 1,193.4 ns 3.52 ns 3.12 ns 1,194.0 ns -
TryComputeHash · KT256 · CryptoHives-Scalar 8KB 7,052.0 ns 17.35 ns 15.38 ns 7,056.4 ns -
TryComputeHash · KT256 · CryptoHives-AVX2 8KB 8,976.4 ns 28.41 ns 25.18 ns 8,971.6 ns -
TryComputeHash · KT256 · CryptoHives-AVX512F 8KB 9,306.0 ns 38.25 ns 33.91 ns 9,311.3 ns -
TryComputeHash · KT256 · CryptoHives-Scalar 128KB 111,291.8 ns 197.59 ns 165.00 ns 111,283.4 ns -
TryComputeHash · KT256 · CryptoHives-AVX2 128KB 141,969.3 ns 446.48 ns 417.64 ns 141,996.3 ns -
TryComputeHash · KT256 · CryptoHives-AVX512F 128KB 146,811.3 ns 463.04 ns 410.47 ns 146,830.0 ns -

TurboSHAKE Family

TurboSHAKE128

Description TestDataSize Mean Error StdDev Median Allocated
TryComputeHash · TurboSHAKE128-32 · CryptoHives-Scalar 128B 123.5 ns 0.36 ns 0.34 ns 123.5 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-AVX2 128B 156.9 ns 0.53 ns 0.49 ns 156.9 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-AVX512F 128B 165.3 ns 0.56 ns 0.47 ns 165.3 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-Scalar 137B 124.0 ns 0.27 ns 0.24 ns 123.9 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-AVX2 137B 158.9 ns 2.42 ns 2.14 ns 158.2 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-AVX512F 137B 164.9 ns 0.41 ns 0.37 ns 165.0 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-Scalar 1KB 784.9 ns 1.70 ns 1.51 ns 784.8 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-AVX2 1KB 1,006.0 ns 2.10 ns 1.86 ns 1,005.8 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-AVX512F 1KB 1,040.6 ns 4.29 ns 3.58 ns 1,041.0 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-Scalar 1025B 786.3 ns 2.81 ns 2.63 ns 786.1 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-AVX2 1025B 1,006.6 ns 3.56 ns 3.33 ns 1,006.8 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-AVX512F 1025B 1,042.3 ns 3.40 ns 3.18 ns 1,041.8 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-Scalar 8KB 5,420.1 ns 14.39 ns 12.76 ns 5,418.4 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-AVX2 8KB 6,941.7 ns 17.25 ns 15.29 ns 6,939.3 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-AVX512F 8KB 7,161.9 ns 21.60 ns 19.15 ns 7,163.3 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-Scalar 128KB 86,812.0 ns 209.11 ns 185.37 ns 86,806.6 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-AVX512F 128KB 113,960.1 ns 222.77 ns 186.03 ns 113,938.7 ns -
TryComputeHash · TurboSHAKE128-32 · CryptoHives-AVX2 128KB 116,064.7 ns 2,327.31 ns 6,862.11 ns 111,637.2 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-Scalar 128B 124.8 ns 0.33 ns 0.29 ns 124.8 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-AVX2 128B 157.4 ns 0.39 ns 0.37 ns 157.5 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-AVX512F 128B 164.9 ns 0.82 ns 0.64 ns 165.1 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-Scalar 137B 124.7 ns 0.23 ns 0.19 ns 124.7 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-AVX2 137B 157.5 ns 0.41 ns 0.36 ns 157.5 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-AVX512F 137B 164.7 ns 0.50 ns 0.47 ns 164.6 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-Scalar 1KB 785.2 ns 1.83 ns 1.71 ns 785.3 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-AVX2 1KB 1,008.2 ns 3.21 ns 3.00 ns 1,006.9 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-AVX512F 1KB 1,040.1 ns 4.15 ns 3.46 ns 1,039.9 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-Scalar 1025B 784.2 ns 2.10 ns 1.86 ns 784.1 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-AVX2 1025B 1,007.6 ns 3.62 ns 3.38 ns 1,006.9 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-AVX512F 1025B 1,038.8 ns 3.60 ns 3.20 ns 1,038.9 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-Scalar 8KB 5,401.3 ns 9.86 ns 8.23 ns 5,398.9 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-AVX2 8KB 6,963.5 ns 17.32 ns 15.35 ns 6,966.4 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-AVX512F 8KB 7,147.5 ns 16.62 ns 13.88 ns 7,148.9 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-Scalar 128KB 86,408.9 ns 951.30 ns 843.30 ns 85,991.0 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-AVX2 128KB 110,731.6 ns 339.17 ns 283.22 ns 110,739.1 ns -
TryComputeHash · TurboSHAKE128-64 · CryptoHives-AVX512F 128KB 114,050.9 ns 852.07 ns 755.34 ns 113,831.3 ns -

TurboSHAKE256

Description TestDataSize Mean Error StdDev Median Allocated
TryComputeHash · TurboSHAKE256 · CryptoHives-Scalar 128B 123.1 ns 0.90 ns 0.84 ns 122.9 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-AVX2 128B 154.7 ns 0.68 ns 0.53 ns 154.7 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-AVX512F 128B 163.3 ns 0.43 ns 0.41 ns 163.3 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-Scalar 137B 233.2 ns 2.30 ns 2.15 ns 232.9 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-AVX2 137B 297.7 ns 1.37 ns 1.22 ns 297.5 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-AVX512F 137B 309.4 ns 1.23 ns 1.09 ns 308.9 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-Scalar 1KB 896.8 ns 5.88 ns 5.50 ns 895.8 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-AVX2 1KB 1,155.5 ns 22.71 ns 36.03 ns 1,138.9 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-AVX512F 1KB 1,218.5 ns 24.34 ns 62.40 ns 1,181.7 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-Scalar 1025B 889.0 ns 3.25 ns 2.88 ns 888.5 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-AVX2 1025B 1,146.9 ns 9.78 ns 8.16 ns 1,145.3 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-AVX512F 1025B 1,185.7 ns 4.73 ns 4.20 ns 1,185.3 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-Scalar 8KB 6,689.6 ns 18.49 ns 16.39 ns 6,692.4 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-AVX2 8KB 8,626.0 ns 112.06 ns 93.58 ns 8,595.8 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-AVX512F 8KB 8,976.5 ns 155.92 ns 138.22 ns 8,927.3 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-Scalar 128KB 104,946.9 ns 369.84 ns 327.86 ns 104,897.9 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-AVX2 128KB 136,652.4 ns 2,306.95 ns 2,045.05 ns 135,572.0 ns -
TryComputeHash · TurboSHAKE256 · CryptoHives-AVX512F 128KB 139,956.4 ns 322.34 ns 269.17 ns 139,933.1 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 Median Allocated
TryComputeHash · BLAKE2b-256 · CryptoHives-AVX2 128B 84.77 ns 0.556 ns 0.464 ns 84.68 ns -
TryComputeHash · BLAKE2b-256 · BouncyCastle 128B 99.68 ns 0.160 ns 0.142 ns 99.65 ns -
TryComputeHash · BLAKE2b-256 · Blake2Fast 128B 99.79 ns 1.952 ns 3.854 ns 97.71 ns -
TryComputeHash · BLAKE2b-256 · CryptoHives-Scalar 128B 130.65 ns 0.274 ns 0.243 ns 130.62 ns -
TryComputeHash · BLAKE2b-256 · Konscious 128B 506.73 ns 8.602 ns 7.626 ns 503.83 ns 1120 B
TryComputeHash · BLAKE2b-256 · CryptoHives-AVX2 137B 169.73 ns 0.488 ns 0.432 ns 169.63 ns -
TryComputeHash · BLAKE2b-256 · Blake2Fast 137B 178.75 ns 0.367 ns 0.307 ns 178.70 ns -
TryComputeHash · BLAKE2b-256 · BouncyCastle 137B 186.73 ns 1.161 ns 1.086 ns 186.98 ns -
TryComputeHash · BLAKE2b-256 · CryptoHives-Scalar 137B 253.40 ns 0.439 ns 0.366 ns 253.41 ns -
TryComputeHash · BLAKE2b-256 · Konscious 137B 924.71 ns 2.262 ns 2.116 ns 924.25 ns 1136 B
TryComputeHash · BLAKE2b-256 · CryptoHives-AVX2 1KB 627.63 ns 2.090 ns 1.955 ns 627.83 ns -
TryComputeHash · BLAKE2b-256 · Blake2Fast 1KB 653.07 ns 3.023 ns 2.360 ns 652.85 ns -
TryComputeHash · BLAKE2b-256 · BouncyCastle 1KB 712.97 ns 1.528 ns 1.354 ns 712.81 ns -
TryComputeHash · BLAKE2b-256 · CryptoHives-Scalar 1KB 989.82 ns 1.362 ns 1.137 ns 989.46 ns -
TryComputeHash · BLAKE2b-256 · Konscious 1KB 3,135.62 ns 5.749 ns 5.096 ns 3,136.57 ns 2016 B
TryComputeHash · BLAKE2b-256 · CryptoHives-AVX2 1025B 711.94 ns 2.601 ns 2.433 ns 711.92 ns -
TryComputeHash · BLAKE2b-256 · Blake2Fast 1025B 731.78 ns 2.604 ns 2.436 ns 731.47 ns -
TryComputeHash · BLAKE2b-256 · BouncyCastle 1025B 801.81 ns 2.337 ns 1.825 ns 802.11 ns -
TryComputeHash · BLAKE2b-256 · CryptoHives-Scalar 1025B 1,118.78 ns 1.984 ns 1.856 ns 1,117.97 ns -
TryComputeHash · BLAKE2b-256 · Konscious 1025B 3,545.12 ns 8.523 ns 7.556 ns 3,545.16 ns 2024 B
TryComputeHash · BLAKE2b-256 · CryptoHives-AVX2 8KB 4,978.70 ns 17.576 ns 13.722 ns 4,974.03 ns -
TryComputeHash · BLAKE2b-256 · Blake2Fast 8KB 5,096.05 ns 6.408 ns 5.351 ns 5,095.58 ns -
TryComputeHash · BLAKE2b-256 · BouncyCastle 8KB 5,595.91 ns 19.034 ns 16.873 ns 5,595.62 ns -
TryComputeHash · BLAKE2b-256 · CryptoHives-Scalar 8KB 7,878.20 ns 15.396 ns 13.648 ns 7,876.65 ns -
TryComputeHash · BLAKE2b-256 · Konscious 8KB 23,960.24 ns 39.223 ns 34.770 ns 23,964.54 ns 9184 B
TryComputeHash · BLAKE2b-256 · CryptoHives-AVX2 128KB 79,777.96 ns 262.069 ns 245.140 ns 79,780.97 ns -
TryComputeHash · BLAKE2b-256 · Blake2Fast 128KB 80,974.38 ns 131.960 ns 110.193 ns 80,968.88 ns -
TryComputeHash · BLAKE2b-256 · BouncyCastle 128KB 89,246.55 ns 201.734 ns 178.832 ns 89,241.41 ns -
TryComputeHash · BLAKE2b-256 · CryptoHives-Scalar 128KB 125,378.66 ns 594.903 ns 556.472 ns 125,192.11 ns -
TryComputeHash · BLAKE2b-256 · Konscious 128KB 408,744.07 ns 791.942 ns 740.783 ns 408,547.22 ns 132078 B

BLAKE2b-512

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · BLAKE2b-512 · CryptoHives-AVX2 128B 84.23 ns 0.311 ns 0.275 ns -
TryComputeHash · BLAKE2b-512 · Blake2Fast 128B 96.53 ns 0.801 ns 0.669 ns -
TryComputeHash · BLAKE2b-512 · BouncyCastle 128B 103.98 ns 0.087 ns 0.077 ns -
TryComputeHash · BLAKE2b-512 · CryptoHives-Scalar 128B 131.10 ns 0.273 ns 0.255 ns -
TryComputeHash · BLAKE2b-512 · Konscious 128B 527.25 ns 1.777 ns 1.575 ns 1216 B
TryComputeHash · BLAKE2b-512 · CryptoHives-AVX2 137B 167.24 ns 0.465 ns 0.435 ns -
TryComputeHash · BLAKE2b-512 · Blake2Fast 137B 177.10 ns 0.465 ns 0.413 ns -
TryComputeHash · BLAKE2b-512 · BouncyCastle 137B 188.65 ns 2.842 ns 2.659 ns -
TryComputeHash · BLAKE2b-512 · CryptoHives-Scalar 137B 255.19 ns 0.325 ns 0.288 ns -
TryComputeHash · BLAKE2b-512 · Konscious 137B 964.47 ns 12.787 ns 12.559 ns 1232 B
TryComputeHash · BLAKE2b-512 · CryptoHives-AVX2 1KB 628.69 ns 1.471 ns 1.376 ns -
TryComputeHash · BLAKE2b-512 · Blake2Fast 1KB 652.03 ns 2.333 ns 1.948 ns -
TryComputeHash · BLAKE2b-512 · BouncyCastle 1KB 723.26 ns 2.315 ns 2.165 ns -
TryComputeHash · BLAKE2b-512 · CryptoHives-Scalar 1KB 993.44 ns 2.012 ns 1.784 ns -
TryComputeHash · BLAKE2b-512 · Konscious 1KB 3,140.25 ns 3.217 ns 3.009 ns 2112 B
TryComputeHash · BLAKE2b-512 · CryptoHives-AVX2 1025B 713.78 ns 1.764 ns 1.564 ns -
TryComputeHash · BLAKE2b-512 · Blake2Fast 1025B 731.29 ns 1.425 ns 1.263 ns -
TryComputeHash · BLAKE2b-512 · BouncyCastle 1025B 808.88 ns 1.479 ns 1.155 ns -
TryComputeHash · BLAKE2b-512 · CryptoHives-Scalar 1025B 1,113.48 ns 2.229 ns 2.085 ns -
TryComputeHash · BLAKE2b-512 · Konscious 1025B 3,575.18 ns 8.281 ns 7.341 ns 2120 B
TryComputeHash · BLAKE2b-512 · CryptoHives-AVX2 8KB 4,976.92 ns 12.447 ns 9.718 ns -
TryComputeHash · BLAKE2b-512 · Blake2Fast 8KB 5,085.63 ns 14.647 ns 12.231 ns -
TryComputeHash · BLAKE2b-512 · BouncyCastle 8KB 5,626.45 ns 15.718 ns 14.703 ns -
TryComputeHash · BLAKE2b-512 · CryptoHives-Scalar 8KB 7,814.55 ns 9.823 ns 8.708 ns -
TryComputeHash · BLAKE2b-512 · Konscious 8KB 23,996.70 ns 26.870 ns 23.820 ns 9280 B
TryComputeHash · BLAKE2b-512 · CryptoHives-AVX2 128KB 79,745.52 ns 243.751 ns 228.005 ns -
TryComputeHash · BLAKE2b-512 · Blake2Fast 128KB 81,102.31 ns 159.364 ns 141.272 ns -
TryComputeHash · BLAKE2b-512 · BouncyCastle 128KB 89,680.41 ns 288.691 ns 255.917 ns -
TryComputeHash · BLAKE2b-512 · CryptoHives-Scalar 128KB 126,209.10 ns 187.828 ns 166.505 ns -
TryComputeHash · BLAKE2b-512 · Konscious 128KB 412,690.57 ns 1,719.619 ns 1,435.960 ns 132174 B

BLAKE2s-128

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · BLAKE2s-128 · Blake2Fast 128B 155.1 ns 0.34 ns 0.32 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Ssse3 128B 155.7 ns 0.31 ns 0.29 ns -
TryComputeHash · BLAKE2s-128 · BouncyCastle 128B 158.0 ns 0.19 ns 0.17 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-AVX2 128B 158.7 ns 0.34 ns 0.28 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Scalar 128B 158.7 ns 0.25 ns 0.23 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Sse2 128B 159.3 ns 0.27 ns 0.24 ns -
TryComputeHash · BLAKE2s-128 · Blake2Fast 137B 228.9 ns 0.59 ns 0.52 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Scalar 137B 235.1 ns 0.26 ns 0.21 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Ssse3 137B 235.6 ns 0.15 ns 0.13 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-AVX2 137B 239.4 ns 0.45 ns 0.42 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Sse2 137B 241.7 ns 0.45 ns 0.42 ns -
TryComputeHash · BLAKE2s-128 · BouncyCastle 137B 242.7 ns 3.62 ns 3.39 ns -
TryComputeHash · BLAKE2s-128 · Blake2Fast 1KB 1,150.4 ns 4.94 ns 4.38 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Scalar 1KB 1,208.5 ns 1.92 ns 1.60 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Ssse3 1KB 1,222.2 ns 2.53 ns 2.25 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-AVX2 1KB 1,235.5 ns 1.67 ns 1.48 ns -
TryComputeHash · BLAKE2s-128 · BouncyCastle 1KB 1,239.1 ns 4.66 ns 4.13 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Sse2 1KB 1,245.6 ns 0.88 ns 0.73 ns -
TryComputeHash · BLAKE2s-128 · Blake2Fast 1025B 1,217.4 ns 3.58 ns 2.99 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Scalar 1025B 1,286.7 ns 3.29 ns 2.92 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Ssse3 1025B 1,302.7 ns 2.74 ns 2.14 ns -
TryComputeHash · BLAKE2s-128 · BouncyCastle 1025B 1,314.7 ns 4.31 ns 3.82 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-AVX2 1025B 1,319.0 ns 2.17 ns 2.03 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Sse2 1025B 1,329.5 ns 1.67 ns 1.56 ns -
TryComputeHash · BLAKE2s-128 · Blake2Fast 8KB 9,086.6 ns 26.71 ns 22.30 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Scalar 8KB 9,642.5 ns 10.14 ns 8.47 ns -
TryComputeHash · BLAKE2s-128 · BouncyCastle 8KB 9,747.2 ns 25.57 ns 22.67 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Ssse3 8KB 9,786.2 ns 23.45 ns 21.93 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-AVX2 8KB 9,870.7 ns 14.38 ns 12.75 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Sse2 8KB 9,950.4 ns 12.16 ns 10.16 ns -
TryComputeHash · BLAKE2s-128 · Blake2Fast 128KB 144,694.6 ns 491.98 ns 460.20 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Scalar 128KB 154,016.6 ns 232.20 ns 217.20 ns -
TryComputeHash · BLAKE2s-128 · BouncyCastle 128KB 154,860.9 ns 521.13 ns 487.46 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Ssse3 128KB 156,541.4 ns 353.87 ns 331.01 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-AVX2 128KB 158,376.2 ns 322.33 ns 285.74 ns -
TryComputeHash · BLAKE2s-128 · CryptoHives-Sse2 128KB 159,316.4 ns 312.84 ns 292.63 ns -

BLAKE2s-256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · BLAKE2s-256 · CryptoHives-Ssse3 128B 156.8 ns 0.25 ns 0.21 ns -
TryComputeHash · BLAKE2s-256 · Blake2Fast 128B 157.6 ns 0.44 ns 0.37 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Scalar 128B 158.2 ns 0.28 ns 0.23 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-AVX2 128B 159.2 ns 0.21 ns 0.19 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Sse2 128B 160.4 ns 0.18 ns 0.14 ns -
TryComputeHash · BLAKE2s-256 · BouncyCastle 128B 162.5 ns 0.69 ns 0.61 ns -
TryComputeHash · BLAKE2s-256 · Blake2Fast 137B 230.9 ns 0.44 ns 0.39 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Scalar 137B 237.0 ns 0.42 ns 0.35 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Ssse3 137B 237.2 ns 0.25 ns 0.24 ns -
TryComputeHash · BLAKE2s-256 · BouncyCastle 137B 238.8 ns 2.63 ns 2.33 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-AVX2 137B 240.5 ns 0.21 ns 0.18 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Sse2 137B 242.2 ns 0.45 ns 0.42 ns -
TryComputeHash · BLAKE2s-256 · Blake2Fast 1KB 1,181.0 ns 4.49 ns 3.98 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Scalar 1KB 1,211.6 ns 1.97 ns 1.74 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Ssse3 1KB 1,220.9 ns 1.22 ns 1.02 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-AVX2 1KB 1,238.0 ns 2.23 ns 2.09 ns -
TryComputeHash · BLAKE2s-256 · BouncyCastle 1KB 1,244.1 ns 7.33 ns 6.12 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Sse2 1KB 1,248.9 ns 2.67 ns 2.50 ns -
TryComputeHash · BLAKE2s-256 · Blake2Fast 1025B 1,219.2 ns 2.74 ns 2.14 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Scalar 1025B 1,286.0 ns 2.06 ns 1.83 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Ssse3 1025B 1,301.4 ns 0.93 ns 0.82 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-AVX2 1025B 1,317.3 ns 1.25 ns 1.11 ns -
TryComputeHash · BLAKE2s-256 · BouncyCastle 1025B 1,318.2 ns 2.89 ns 2.70 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Sse2 1025B 1,330.5 ns 2.07 ns 1.84 ns -
TryComputeHash · BLAKE2s-256 · Blake2Fast 8KB 9,072.8 ns 54.25 ns 45.30 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Scalar 8KB 9,656.4 ns 26.58 ns 23.56 ns -
TryComputeHash · BLAKE2s-256 · BouncyCastle 8KB 9,688.5 ns 28.66 ns 23.93 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Ssse3 8KB 9,744.9 ns 14.27 ns 12.65 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-AVX2 8KB 9,873.8 ns 23.20 ns 20.57 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Sse2 8KB 9,956.5 ns 14.94 ns 13.97 ns -
TryComputeHash · BLAKE2s-256 · Blake2Fast 128KB 144,524.3 ns 266.62 ns 236.35 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Scalar 128KB 154,003.4 ns 335.59 ns 297.50 ns -
TryComputeHash · BLAKE2s-256 · BouncyCastle 128KB 154,697.9 ns 460.89 ns 384.87 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Ssse3 128KB 155,914.4 ns 211.14 ns 197.50 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-AVX2 128KB 158,257.4 ns 192.10 ns 160.41 ns -
TryComputeHash · BLAKE2s-256 · CryptoHives-Sse2 128KB 159,368.1 ns 362.47 ns 321.32 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 98.72 ns 0.354 ns 0.314 ns -
TryComputeHash · BLAKE3 · CryptoHives-Ssse3 128B 151.65 ns 0.698 ns 0.619 ns -
TryComputeHash · BLAKE3 · CryptoHives-Scalar 128B 605.64 ns 0.999 ns 0.934 ns -
TryComputeHash · BLAKE3 · BouncyCastle 128B 1,324.48 ns 1.579 ns 1.399 ns -
TryComputeHash · BLAKE3 · Blake3Native 137B 151.14 ns 0.384 ns 0.359 ns -
TryComputeHash · BLAKE3 · CryptoHives-Ssse3 137B 221.85 ns 0.687 ns 0.609 ns -
TryComputeHash · BLAKE3 · CryptoHives-Scalar 137B 896.73 ns 1.727 ns 1.442 ns -
TryComputeHash · BLAKE3 · BouncyCastle 137B 1,955.48 ns 2.243 ns 1.989 ns -
TryComputeHash · BLAKE3 · Blake3Native 1KB 751.90 ns 2.216 ns 1.964 ns -
TryComputeHash · BLAKE3 · CryptoHives-Ssse3 1KB 1,079.61 ns 5.134 ns 4.803 ns -
TryComputeHash · BLAKE3 · CryptoHives-Scalar 1KB 4,653.88 ns 7.172 ns 5.989 ns -
TryComputeHash · BLAKE3 · BouncyCastle 1KB 9,787.01 ns 12.516 ns 11.095 ns -
TryComputeHash · BLAKE3 · Blake3Native 1025B 854.86 ns 2.837 ns 2.369 ns -
TryComputeHash · BLAKE3 · CryptoHives-Ssse3 1025B 1,218.46 ns 3.006 ns 2.812 ns -
TryComputeHash · BLAKE3 · CryptoHives-Scalar 1025B 5,283.08 ns 11.403 ns 10.666 ns -
TryComputeHash · BLAKE3 · BouncyCastle 1025B 10,950.92 ns 20.636 ns 19.303 ns 56 B
TryComputeHash · BLAKE3 · Blake3Native 8KB 1,179.97 ns 5.033 ns 4.462 ns -
TryComputeHash · BLAKE3 · CryptoHives-Ssse3 8KB 9,886.09 ns 38.619 ns 34.235 ns -
TryComputeHash · BLAKE3 · CryptoHives-Scalar 8KB 39,429.63 ns 32.664 ns 25.502 ns -
TryComputeHash · BLAKE3 · BouncyCastle 8KB 81,772.12 ns 135.506 ns 126.752 ns 392 B
TryComputeHash · BLAKE3 · Blake3Native 128KB 14,404.36 ns 28.715 ns 26.860 ns -
TryComputeHash · BLAKE3 · CryptoHives-Ssse3 128KB 165,982.31 ns 547.065 ns 511.725 ns -
TryComputeHash · BLAKE3 · CryptoHives-Scalar 128KB 632,613.36 ns 1,566.750 ns 1,388.883 ns -
TryComputeHash · BLAKE3 · BouncyCastle 128KB 1,329,108.01 ns 1,471.570 ns 1,148.905 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 575.3 ns 0.99 ns 0.92 ns -
TryComputeHash · Ascon-Hash256 · BouncyCastle 128B 786.1 ns 1.38 ns 1.29 ns -
TryComputeHash · Ascon-Hash256 · CryptoHives-Scalar 137B 607.5 ns 1.19 ns 1.05 ns -
TryComputeHash · Ascon-Hash256 · BouncyCastle 137B 823.7 ns 0.91 ns 0.85 ns -
TryComputeHash · Ascon-Hash256 · CryptoHives-Scalar 1KB 3,704.7 ns 2.80 ns 2.19 ns -
TryComputeHash · Ascon-Hash256 · BouncyCastle 1KB 5,096.4 ns 8.52 ns 7.11 ns -
TryComputeHash · Ascon-Hash256 · CryptoHives-Scalar 1025B 3,716.5 ns 5.96 ns 5.28 ns -
TryComputeHash · Ascon-Hash256 · BouncyCastle 1025B 5,100.3 ns 6.46 ns 6.04 ns -
TryComputeHash · Ascon-Hash256 · CryptoHives-Scalar 8KB 28,810.1 ns 46.19 ns 40.94 ns -
TryComputeHash · Ascon-Hash256 · BouncyCastle 8KB 39,537.3 ns 56.14 ns 49.77 ns -
TryComputeHash · Ascon-Hash256 · CryptoHives-Scalar 128KB 458,510.0 ns 811.03 ns 718.96 ns -
TryComputeHash · Ascon-Hash256 · BouncyCastle 128KB 631,577.0 ns 558.54 ns 466.41 ns -

Ascon-XOF128

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Ascon-XOF128 · CryptoHives-Scalar 128B 573.0 ns 0.90 ns 0.80 ns -
TryComputeHash · Ascon-XOF128 · BouncyCastle 128B 781.7 ns 1.08 ns 0.90 ns -
TryComputeHash · Ascon-XOF128 · CryptoHives-Scalar 137B 604.1 ns 1.25 ns 1.04 ns -
TryComputeHash · Ascon-XOF128 · BouncyCastle 137B 833.6 ns 1.00 ns 0.88 ns -
TryComputeHash · Ascon-XOF128 · CryptoHives-Scalar 1KB 3,872.6 ns 8.76 ns 8.19 ns -
TryComputeHash · Ascon-XOF128 · BouncyCastle 1KB 5,056.3 ns 10.10 ns 8.43 ns -
TryComputeHash · Ascon-XOF128 · CryptoHives-Scalar 1025B 3,702.0 ns 4.54 ns 4.02 ns -
TryComputeHash · Ascon-XOF128 · BouncyCastle 1025B 5,054.0 ns 6.83 ns 6.05 ns -
TryComputeHash · Ascon-XOF128 · CryptoHives-Scalar 8KB 28,761.2 ns 75.95 ns 67.33 ns -
TryComputeHash · Ascon-XOF128 · BouncyCastle 8KB 39,094.7 ns 43.53 ns 36.35 ns -
TryComputeHash · Ascon-XOF128 · CryptoHives-Scalar 128KB 458,396.9 ns 1,973.47 ns 1,647.93 ns -
TryComputeHash · Ascon-XOF128 · BouncyCastle 128KB 625,589.9 ns 1,111.66 ns 928.29 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 659.6 ns 1.91 ns 1.78 ns -
TryComputeHash · KMAC-128 · OS Native 128B 1,058.5 ns 6.66 ns 5.90 ns 184 B
TryComputeHash · KMAC-128 · BouncyCastle 128B 2,034.5 ns 4.24 ns 3.76 ns 256 B
TryComputeHash · KMAC-128 · CryptoHives-Scalar 137B 659.7 ns 2.28 ns 2.02 ns -
TryComputeHash · KMAC-128 · OS Native 137B 1,052.5 ns 2.72 ns 2.41 ns 200 B
TryComputeHash · KMAC-128 · BouncyCastle 137B 2,036.5 ns 4.66 ns 4.36 ns 256 B
TryComputeHash · KMAC-128 · CryptoHives-Scalar 1KB 1,886.0 ns 3.89 ns 3.64 ns -
TryComputeHash · KMAC-128 · OS Native 1KB 2,587.2 ns 3.94 ns 3.29 ns 1080 B
TryComputeHash · KMAC-128 · BouncyCastle 1KB 3,933.9 ns 8.04 ns 7.12 ns 256 B
TryComputeHash · KMAC-128 · CryptoHives-Scalar 1025B 1,885.8 ns 3.64 ns 3.04 ns -
TryComputeHash · KMAC-128 · OS Native 1025B 2,593.8 ns 6.43 ns 5.70 ns 1088 B
TryComputeHash · KMAC-128 · BouncyCastle 1025B 3,920.9 ns 8.83 ns 7.37 ns 256 B
TryComputeHash · KMAC-128 · CryptoHives-Scalar 8KB 10,493.7 ns 30.39 ns 26.94 ns -
TryComputeHash · KMAC-128 · OS Native 8KB 13,444.2 ns 44.80 ns 39.72 ns 8248 B
TryComputeHash · KMAC-128 · BouncyCastle 8KB 17,310.4 ns 30.05 ns 26.64 ns 256 B
TryComputeHash · KMAC-128 · CryptoHives-Scalar 128KB 160,195.9 ns 269.98 ns 239.33 ns -
TryComputeHash · KMAC-128 · OS Native 128KB 231,269.5 ns 823.16 ns 729.71 ns 131151 B
TryComputeHash · KMAC-128 · BouncyCastle 128KB 248,821.0 ns 209.40 ns 185.63 ns 256 B

KMAC256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · KMAC-256 · CryptoHives-Scalar 128B 653.3 ns 0.52 ns 0.43 ns -
TryComputeHash · KMAC-256 · OS Native 128B 1,073.7 ns 1.40 ns 1.25 ns 184 B
TryComputeHash · KMAC-256 · BouncyCastle 128B 2,023.9 ns 5.18 ns 4.60 ns 256 B
TryComputeHash · KMAC-256 · CryptoHives-Scalar 137B 855.9 ns 2.79 ns 2.61 ns -
TryComputeHash · KMAC-256 · OS Native 137B 1,323.7 ns 2.85 ns 2.22 ns 200 B
TryComputeHash · KMAC-256 · BouncyCastle 137B 2,312.1 ns 3.17 ns 2.65 ns 256 B
TryComputeHash · KMAC-256 · CryptoHives-Scalar 1KB 2,101.1 ns 41.46 ns 34.62 ns -
TryComputeHash · KMAC-256 · OS Native 1KB 2,826.1 ns 8.09 ns 6.32 ns 1080 B
TryComputeHash · KMAC-256 · BouncyCastle 1KB 4,222.8 ns 6.43 ns 5.37 ns 256 B
TryComputeHash · KMAC-256 · CryptoHives-Scalar 1025B 2,074.2 ns 5.45 ns 4.84 ns -
TryComputeHash · KMAC-256 · OS Native 1025B 2,828.8 ns 9.30 ns 8.25 ns 1088 B
TryComputeHash · KMAC-256 · BouncyCastle 1025B 4,231.5 ns 10.98 ns 10.27 ns 256 B
TryComputeHash · KMAC-256 · CryptoHives-Scalar 8KB 12,856.1 ns 32.97 ns 30.84 ns -
TryComputeHash · KMAC-256 · OS Native 8KB 16,167.0 ns 41.95 ns 35.03 ns 8248 B
TryComputeHash · KMAC-256 · BouncyCastle 8KB 20,830.8 ns 44.05 ns 41.20 ns 256 B
TryComputeHash · KMAC-256 · CryptoHives-Scalar 128KB 196,542.6 ns 321.75 ns 285.23 ns -
TryComputeHash · KMAC-256 · OS Native 128KB 272,750.6 ns 928.16 ns 775.06 ns 131151 B
TryComputeHash · KMAC-256 · BouncyCastle 128KB 305,181.7 ns 434.09 ns 384.81 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 · CryptoHives-Scalar 128B 266.6 ns 0.36 ns 0.32 ns -
TryComputeHash · MD5 · OS Native 128B 269.4 ns 0.43 ns 0.36 ns -
TryComputeHash · MD5 · BouncyCastle 128B 370.2 ns 0.64 ns 0.54 ns -
TryComputeHash · MD5 · OS Native 137B 267.1 ns 0.57 ns 0.53 ns -
TryComputeHash · MD5 · CryptoHives-Scalar 137B 271.8 ns 0.37 ns 0.31 ns -
TryComputeHash · MD5 · BouncyCastle 137B 368.7 ns 0.69 ns 0.58 ns -
TryComputeHash · MD5 · OS Native 1KB 1,370.1 ns 1.76 ns 1.65 ns -
TryComputeHash · MD5 · CryptoHives-Scalar 1KB 1,463.8 ns 2.35 ns 2.20 ns -
TryComputeHash · MD5 · BouncyCastle 1KB 2,017.8 ns 3.39 ns 2.83 ns -
TryComputeHash · MD5 · OS Native 1025B 1,371.7 ns 1.76 ns 1.65 ns -
TryComputeHash · MD5 · CryptoHives-Scalar 1025B 1,471.9 ns 3.84 ns 3.59 ns -
TryComputeHash · MD5 · BouncyCastle 1025B 2,010.0 ns 2.50 ns 2.22 ns -
TryComputeHash · MD5 · OS Native 8KB 10,165.6 ns 9.21 ns 8.61 ns -
TryComputeHash · MD5 · CryptoHives-Scalar 8KB 11,050.3 ns 20.02 ns 18.72 ns -
TryComputeHash · MD5 · BouncyCastle 8KB 15,175.6 ns 20.60 ns 18.26 ns -
TryComputeHash · MD5 · OS Native 128KB 161,012.2 ns 256.75 ns 240.17 ns -
TryComputeHash · MD5 · CryptoHives-Scalar 128KB 175,407.5 ns 351.37 ns 328.67 ns -
TryComputeHash · MD5 · BouncyCastle 128KB 240,811.9 ns 113.98 ns 95.18 ns -

SHA-1

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · SHA-1 · OS Native 128B 235.2 ns 0.45 ns 0.40 ns -
TryComputeHash · SHA-1 · BouncyCastle 128B 444.1 ns 0.86 ns 0.76 ns -
TryComputeHash · SHA-1 · CryptoHives-Scalar 128B 465.1 ns 0.74 ns 0.62 ns -
TryComputeHash · SHA-1 · OS Native 137B 233.9 ns 0.55 ns 0.52 ns -
TryComputeHash · SHA-1 · BouncyCastle 137B 443.6 ns 0.73 ns 0.65 ns -
TryComputeHash · SHA-1 · CryptoHives-Scalar 137B 462.7 ns 0.82 ns 0.64 ns -
TryComputeHash · SHA-1 · OS Native 1KB 1,119.3 ns 3.81 ns 3.56 ns -
TryComputeHash · SHA-1 · BouncyCastle 1KB 2,494.7 ns 29.29 ns 24.46 ns -
TryComputeHash · SHA-1 · CryptoHives-Scalar 1KB 2,495.4 ns 9.20 ns 8.16 ns -
TryComputeHash · SHA-1 · OS Native 1025B 1,118.7 ns 18.43 ns 17.24 ns -
TryComputeHash · SHA-1 · BouncyCastle 1025B 2,446.4 ns 23.94 ns 19.99 ns -
TryComputeHash · SHA-1 · CryptoHives-Scalar 1025B 2,506.0 ns 37.05 ns 34.66 ns -
TryComputeHash · SHA-1 · OS Native 8KB 8,129.3 ns 58.37 ns 45.57 ns -
TryComputeHash · SHA-1 · BouncyCastle 8KB 18,500.0 ns 180.85 ns 151.02 ns -
TryComputeHash · SHA-1 · CryptoHives-Scalar 8KB 18,803.8 ns 276.96 ns 259.07 ns -
TryComputeHash · SHA-1 · OS Native 128KB 129,498.4 ns 1,750.33 ns 1,637.26 ns -
TryComputeHash · SHA-1 · BouncyCastle 128KB 296,502.0 ns 5,470.56 ns 5,117.16 ns -
TryComputeHash · SHA-1 · CryptoHives-Scalar 128KB 296,921.7 ns 4,082.49 ns 3,619.03 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 697.5 ns 1.34 ns 1.18 ns -
TryComputeHash · SM3 · BouncyCastle 128B 792.5 ns 1.11 ns 0.92 ns -
TryComputeHash · SM3 · CryptoHives-Scalar 137B 701.6 ns 0.90 ns 0.85 ns -
TryComputeHash · SM3 · BouncyCastle 137B 798.3 ns 1.65 ns 1.46 ns -
TryComputeHash · SM3 · CryptoHives-Scalar 1KB 3,910.8 ns 10.35 ns 9.18 ns -
TryComputeHash · SM3 · BouncyCastle 1KB 4,508.6 ns 12.65 ns 11.83 ns -
TryComputeHash · SM3 · CryptoHives-Scalar 1025B 3,916.5 ns 6.95 ns 6.51 ns -
TryComputeHash · SM3 · BouncyCastle 1025B 4,454.2 ns 11.44 ns 10.15 ns -
TryComputeHash · SM3 · CryptoHives-Scalar 8KB 29,571.1 ns 56.39 ns 49.99 ns -
TryComputeHash · SM3 · BouncyCastle 8KB 34,023.5 ns 113.90 ns 100.97 ns -
TryComputeHash · SM3 · CryptoHives-Scalar 128KB 472,506.7 ns 4,988.79 ns 4,422.43 ns -
TryComputeHash · SM3 · BouncyCastle 128KB 545,242.1 ns 4,404.06 ns 3,904.09 ns -

Streebog-256

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Streebog-256 · CryptoHives-Scalar 128B 2.502 μs 0.0061 μs 0.0051 μs -
TryComputeHash · Streebog-256 · OpenGost 128B 3.542 μs 0.0096 μs 0.0081 μs 408 B
TryComputeHash · Streebog-256 · BouncyCastle 128B 4.390 μs 0.0182 μs 0.0152 μs -
TryComputeHash · Streebog-256 · CryptoHives-Scalar 137B 2.491 μs 0.0025 μs 0.0022 μs -
TryComputeHash · Streebog-256 · OpenGost 137B 3.543 μs 0.0059 μs 0.0050 μs 408 B
TryComputeHash · Streebog-256 · BouncyCastle 137B 4.400 μs 0.0120 μs 0.0113 μs -
TryComputeHash · Streebog-256 · CryptoHives-Scalar 1KB 9.409 μs 0.0217 μs 0.0170 μs -
TryComputeHash · Streebog-256 · OpenGost 1KB 13.122 μs 0.0704 μs 0.0658 μs 408 B
TryComputeHash · Streebog-256 · BouncyCastle 1KB 16.714 μs 0.0604 μs 0.0565 μs -
TryComputeHash · Streebog-256 · CryptoHives-Scalar 1025B 9.529 μs 0.0245 μs 0.0205 μs -
TryComputeHash · Streebog-256 · OpenGost 1025B 13.038 μs 0.0312 μs 0.0243 μs 408 B
TryComputeHash · Streebog-256 · BouncyCastle 1025B 16.693 μs 0.0607 μs 0.0538 μs -
TryComputeHash · Streebog-256 · CryptoHives-Scalar 8KB 64.699 μs 0.2760 μs 0.2582 μs -
TryComputeHash · Streebog-256 · OpenGost 8KB 89.830 μs 0.3487 μs 0.2912 μs 408 B
TryComputeHash · Streebog-256 · BouncyCastle 8KB 116.900 μs 0.1225 μs 0.1086 μs -
TryComputeHash · Streebog-256 · CryptoHives-Scalar 128KB 1,014.976 μs 1.8029 μs 1.4076 μs -
TryComputeHash · Streebog-256 · OpenGost 128KB 1,409.612 μs 4.6834 μs 4.1517 μs 408 B
TryComputeHash · Streebog-256 · BouncyCastle 128KB 1,810.280 μs 7.3854 μs 6.5470 μs -

Streebog-512

Description TestDataSize Mean Error StdDev Median Allocated
TryComputeHash · Streebog-512 · CryptoHives-Scalar 128B 2.497 μs 0.0064 μs 0.0057 μs 2.497 μs -
TryComputeHash · Streebog-512 · OpenGost 128B 3.469 μs 0.0053 μs 0.0044 μs 3.467 μs 176 B
TryComputeHash · Streebog-512 · BouncyCastle 128B 4.481 μs 0.0114 μs 0.0101 μs 4.478 μs -
TryComputeHash · Streebog-512 · CryptoHives-Scalar 137B 2.507 μs 0.0079 μs 0.0074 μs 2.505 μs -
TryComputeHash · Streebog-512 · OpenGost 137B 3.476 μs 0.0107 μs 0.0095 μs 3.476 μs 176 B
TryComputeHash · Streebog-512 · BouncyCastle 137B 4.393 μs 0.0110 μs 0.0098 μs 4.390 μs -
TryComputeHash · Streebog-512 · CryptoHives-Scalar 1KB 9.363 μs 0.0157 μs 0.0139 μs 9.367 μs -
TryComputeHash · Streebog-512 · OpenGost 1KB 13.320 μs 0.2660 μs 0.3551 μs 13.189 μs 176 B
TryComputeHash · Streebog-512 · BouncyCastle 1KB 16.748 μs 0.0746 μs 0.0662 μs 16.723 μs -
TryComputeHash · Streebog-512 · CryptoHives-Scalar 1025B 9.313 μs 0.0100 μs 0.0088 μs 9.312 μs -
TryComputeHash · Streebog-512 · OpenGost 1025B 13.304 μs 0.2573 μs 0.2860 μs 13.238 μs 176 B
TryComputeHash · Streebog-512 · BouncyCastle 1025B 17.014 μs 0.1797 μs 0.1681 μs 17.044 μs -
TryComputeHash · Streebog-512 · CryptoHives-Scalar 8KB 67.945 μs 1.1843 μs 3.1407 μs 66.111 μs -
TryComputeHash · Streebog-512 · OpenGost 8KB 89.496 μs 0.3150 μs 0.2947 μs 89.426 μs 176 B
TryComputeHash · Streebog-512 · BouncyCastle 8KB 115.352 μs 0.2026 μs 0.1796 μs 115.353 μs -
TryComputeHash · Streebog-512 · CryptoHives-Scalar 128KB 1,031.233 μs 2.7370 μs 2.4263 μs 1,030.920 μs -
TryComputeHash · Streebog-512 · OpenGost 128KB 1,405.726 μs 5.1120 μs 4.7818 μs 1,405.256 μs 176 B
TryComputeHash · Streebog-512 · BouncyCastle 128KB 1,828.692 μs 24.8648 μs 23.2585 μs 1,817.249 μs -

Whirlpool

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Whirlpool · CryptoHives-Scalar 128B 1.403 μs 0.0065 μs 0.0058 μs -
TryComputeHash · Whirlpool · Hashify .NET 128B 2.224 μs 0.0390 μs 0.0346 μs 6336 B
TryComputeHash · Whirlpool · BouncyCastle 128B 5.249 μs 0.0393 μs 0.0367 μs 56 B
TryComputeHash · Whirlpool · CryptoHives-Scalar 137B 1.672 μs 0.0038 μs 0.0035 μs -
TryComputeHash · Whirlpool · Hashify .NET 137B 2.208 μs 0.0266 μs 0.0249 μs 6328 B
TryComputeHash · Whirlpool · BouncyCastle 137B 5.192 μs 0.0188 μs 0.0166 μs 56 B
TryComputeHash · Whirlpool · CryptoHives-Scalar 1KB 7.785 μs 0.0242 μs 0.0215 μs -
TryComputeHash · Whirlpool · Hashify .NET 1KB 10.873 μs 0.0753 μs 0.0629 μs 12032 B
TryComputeHash · Whirlpool · BouncyCastle 1KB 32.031 μs 0.1487 μs 0.1391 μs 56 B
TryComputeHash · Whirlpool · CryptoHives-Scalar 1025B 7.652 μs 0.0226 μs 0.0212 μs -
TryComputeHash · Whirlpool · Hashify .NET 1025B 10.830 μs 0.0920 μs 0.0861 μs 12040 B
TryComputeHash · Whirlpool · BouncyCastle 1025B 31.948 μs 0.1868 μs 0.1656 μs 56 B
TryComputeHash · Whirlpool · CryptoHives-Scalar 8KB 59.530 μs 0.2170 μs 0.1923 μs -
TryComputeHash · Whirlpool · Hashify .NET 8KB 79.513 μs 0.4038 μs 0.3372 μs 58624 B
TryComputeHash · Whirlpool · BouncyCastle 8KB 247.069 μs 1.1389 μs 1.0653 μs 56 B
TryComputeHash · Whirlpool · CryptoHives-Scalar 128KB 937.726 μs 4.1141 μs 3.6470 μs -
TryComputeHash · Whirlpool · Hashify .NET 128KB 1,305.569 μs 4.4440 μs 3.9395 μs 857372 B
TryComputeHash · Whirlpool · BouncyCastle 128KB 3,918.851 μs 19.7292 μs 17.4894 μs 56 B

RIPEMD-160

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · RIPEMD-160 · BouncyCastle 128B 639.4 ns 1.73 ns 1.53 ns -
TryComputeHash · RIPEMD-160 · CryptoHives-Scalar 128B 731.2 ns 2.43 ns 2.03 ns -
TryComputeHash · RIPEMD-160 · BouncyCastle 137B 640.7 ns 1.79 ns 1.59 ns -
TryComputeHash · RIPEMD-160 · CryptoHives-Scalar 137B 733.6 ns 1.80 ns 1.69 ns -
TryComputeHash · RIPEMD-160 · BouncyCastle 1KB 3,557.7 ns 8.86 ns 7.85 ns -
TryComputeHash · RIPEMD-160 · CryptoHives-Scalar 1KB 4,108.1 ns 18.08 ns 16.03 ns -
TryComputeHash · RIPEMD-160 · BouncyCastle 1025B 3,558.5 ns 5.00 ns 4.68 ns -
TryComputeHash · RIPEMD-160 · CryptoHives-Scalar 1025B 4,114.8 ns 16.83 ns 15.75 ns -
TryComputeHash · RIPEMD-160 · BouncyCastle 8KB 26,860.1 ns 41.60 ns 36.88 ns -
TryComputeHash · RIPEMD-160 · CryptoHives-Scalar 8KB 30,822.7 ns 78.64 ns 69.71 ns -
TryComputeHash · RIPEMD-160 · BouncyCastle 128KB 427,819.3 ns 1,138.60 ns 1,009.34 ns -
TryComputeHash · RIPEMD-160 · CryptoHives-Scalar 128KB 488,409.3 ns 803.42 ns 751.52 ns -

Kupyna-256 (DSTU 7564)

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Kupyna-256 · CryptoHives-Scalar 128B 2.299 μs 0.0043 μs 0.0038 μs -
TryComputeHash · Kupyna-256 · BouncyCastle 128B 3.385 μs 0.0130 μs 0.0115 μs -
TryComputeHash · Kupyna-256 · CryptoHives-Scalar 137B 2.304 μs 0.0033 μs 0.0028 μs -
TryComputeHash · Kupyna-256 · BouncyCastle 137B 3.380 μs 0.0091 μs 0.0081 μs -
TryComputeHash · Kupyna-256 · CryptoHives-Scalar 1KB 11.385 μs 0.0154 μs 0.0129 μs -
TryComputeHash · Kupyna-256 · BouncyCastle 1KB 16.721 μs 0.0157 μs 0.0131 μs -
TryComputeHash · Kupyna-256 · CryptoHives-Scalar 1025B 11.452 μs 0.0289 μs 0.0271 μs -
TryComputeHash · Kupyna-256 · BouncyCastle 1025B 16.646 μs 0.0277 μs 0.0245 μs -
TryComputeHash · Kupyna-256 · CryptoHives-Scalar 8KB 84.218 μs 0.1396 μs 0.1237 μs -
TryComputeHash · Kupyna-256 · BouncyCastle 8KB 124.068 μs 0.2314 μs 0.1932 μs -
TryComputeHash · Kupyna-256 · CryptoHives-Scalar 128KB 1,335.056 μs 4.1947 μs 3.5028 μs -
TryComputeHash · Kupyna-256 · BouncyCastle 128KB 1,955.316 μs 2.0054 μs 1.6746 μs -

Kupyna-384 (DSTU 7564)

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Kupyna-384 · CryptoHives-Scalar 128B 4.479 μs 0.0097 μs 0.0091 μs -
TryComputeHash · Kupyna-384 · BouncyCastle 128B 6.858 μs 0.0100 μs 0.0084 μs -
TryComputeHash · Kupyna-384 · CryptoHives-Scalar 137B 4.474 μs 0.0103 μs 0.0091 μs -
TryComputeHash · Kupyna-384 · BouncyCastle 137B 6.843 μs 0.0102 μs 0.0090 μs -
TryComputeHash · Kupyna-384 · CryptoHives-Scalar 1KB 16.913 μs 0.0395 μs 0.0350 μs -
TryComputeHash · Kupyna-384 · BouncyCastle 1KB 26.330 μs 0.0516 μs 0.0403 μs -
TryComputeHash · Kupyna-384 · CryptoHives-Scalar 1025B 16.948 μs 0.0465 μs 0.0412 μs -
TryComputeHash · Kupyna-384 · BouncyCastle 1025B 26.248 μs 0.0472 μs 0.0418 μs -
TryComputeHash · Kupyna-384 · CryptoHives-Scalar 8KB 116.605 μs 0.3758 μs 0.3138 μs -
TryComputeHash · Kupyna-384 · BouncyCastle 8KB 180.450 μs 0.4570 μs 0.4051 μs -
TryComputeHash · Kupyna-384 · CryptoHives-Scalar 128KB 1,824.879 μs 2.4103 μs 2.1367 μs -
TryComputeHash · Kupyna-384 · BouncyCastle 128KB 2,823.438 μs 7.0558 μs 5.8919 μs -

Kupyna-512 (DSTU 7564)

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · Kupyna-512 · CryptoHives-Scalar 128B 4.477 μs 0.0116 μs 0.0108 μs -
TryComputeHash · Kupyna-512 · BouncyCastle 128B 6.854 μs 0.0232 μs 0.0181 μs -
TryComputeHash · Kupyna-512 · CryptoHives-Scalar 137B 4.470 μs 0.0168 μs 0.0140 μs -
TryComputeHash · Kupyna-512 · BouncyCastle 137B 6.868 μs 0.0103 μs 0.0081 μs -
TryComputeHash · Kupyna-512 · CryptoHives-Scalar 1KB 16.868 μs 0.0166 μs 0.0147 μs -
TryComputeHash · Kupyna-512 · BouncyCastle 1KB 26.165 μs 0.0502 μs 0.0419 μs -
TryComputeHash · Kupyna-512 · CryptoHives-Scalar 1025B 16.957 μs 0.0457 μs 0.0405 μs -
TryComputeHash · Kupyna-512 · BouncyCastle 1025B 26.078 μs 0.0970 μs 0.0908 μs -
TryComputeHash · Kupyna-512 · CryptoHives-Scalar 8KB 116.379 μs 0.2679 μs 0.2375 μs -
TryComputeHash · Kupyna-512 · BouncyCastle 8KB 180.168 μs 0.2804 μs 0.2486 μs -
TryComputeHash · Kupyna-512 · CryptoHives-Scalar 128KB 1,826.204 μs 4.5809 μs 4.0609 μs -
TryComputeHash · Kupyna-512 · BouncyCastle 128KB 2,818.142 μs 3.7972 μs 3.3661 μs -

LSH-256-256 (KS X 3262)

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · LSH-256-256 · CryptoHives-Scalar 128B 1.901 μs 0.0034 μs 0.0032 μs -
TryComputeHash · LSH-256-256 · CryptoHives-Scalar 137B 1.909 μs 0.0043 μs 0.0036 μs -
TryComputeHash · LSH-256-256 · CryptoHives-Scalar 1KB 8.386 μs 0.0216 μs 0.0181 μs -
TryComputeHash · LSH-256-256 · CryptoHives-Scalar 1025B 8.366 μs 0.0225 μs 0.0188 μs -
TryComputeHash · LSH-256-256 · CryptoHives-Scalar 8KB 60.045 μs 0.1966 μs 0.1742 μs -
TryComputeHash · LSH-256-256 · CryptoHives-Scalar 128KB 946.097 μs 1.5313 μs 1.3575 μs -

LSH-512-256 (KS X 3262)

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · LSH-512-256 · CryptoHives-Scalar 128B 1.066 μs 0.0024 μs 0.0021 μs -
TryComputeHash · LSH-512-256 · CryptoHives-Scalar 137B 1.062 μs 0.0024 μs 0.0019 μs -
TryComputeHash · LSH-512-256 · CryptoHives-Scalar 1KB 5.139 μs 0.0156 μs 0.0146 μs -
TryComputeHash · LSH-512-256 · CryptoHives-Scalar 1025B 5.123 μs 0.0143 μs 0.0127 μs -
TryComputeHash · LSH-512-256 · CryptoHives-Scalar 8KB 33.148 μs 0.0837 μs 0.0742 μs -
TryComputeHash · LSH-512-256 · CryptoHives-Scalar 128KB 512.956 μs 0.7530 μs 0.7044 μs -

LSH-512-512 (KS X 3262)

Description TestDataSize Mean Error StdDev Allocated
TryComputeHash · LSH-512-512 · CryptoHives-Scalar 128B 1.064 μs 0.0021 μs 0.0019 μs -
TryComputeHash · LSH-512-512 · CryptoHives-Scalar 137B 1.060 μs 0.0038 μs 0.0034 μs -
TryComputeHash · LSH-512-512 · CryptoHives-Scalar 1KB 5.114 μs 0.0089 μs 0.0079 μs -
TryComputeHash · LSH-512-512 · CryptoHives-Scalar 1025B 5.119 μs 0.0107 μs 0.0095 μs -
TryComputeHash · LSH-512-512 · CryptoHives-Scalar 8KB 33.134 μs 0.0571 μs 0.0534 μs -
TryComputeHash · LSH-512-512 · CryptoHives-Scalar 128KB 514.207 μs 1.1304 μs 1.0020 μ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.687 μs 0.0081 μs 0.0068 μs -
AbsorbSqueeze · SHAKE128 · OS Native 128B 3.355 μs 0.0359 μs 0.0336 μs -
AbsorbSqueeze · SHAKE128 · BouncyCastle 128B 4.136 μs 0.0106 μs 0.0094 μs -
AbsorbSqueeze · SHAKE128 · CryptoHives-Scalar 1KB 3.871 μs 0.0165 μs 0.0155 μs -
AbsorbSqueeze · SHAKE128 · OS Native 1KB 4.793 μs 0.0186 μs 0.0165 μs -
AbsorbSqueeze · SHAKE128 · BouncyCastle 1KB 6.119 μs 0.0161 μs 0.0143 μs 1152 B
AbsorbSqueeze · SHAKE128 · CryptoHives-Scalar 8KB 12.177 μs 0.0547 μs 0.0457 μs -
AbsorbSqueeze · SHAKE128 · OS Native 8KB 15.064 μs 0.0399 μs 0.0373 μs -
AbsorbSqueeze · SHAKE128 · BouncyCastle 8KB 20.162 μs 0.0759 μs 0.0710 μs 9216 B
AbsorbSqueeze · SHAKE128 · CryptoHives-Scalar 128KB 156.634 μs 0.4300 μs 0.3591 μs -
AbsorbSqueeze · SHAKE128 · OS Native 128KB 193.863 μs 0.5322 μs 0.4444 μs -
AbsorbSqueeze · SHAKE128 · BouncyCastle 128KB 265.473 μs 0.7896 μs 0.6593 μs 149760 B

SHAKE256

Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · SHAKE256 · CryptoHives-Scalar 128B 3.267 μs 0.0073 μs 0.0061 μs -
AbsorbSqueeze · SHAKE256 · OS Native 128B 4.034 μs 0.0142 μs 0.0119 μs -
AbsorbSqueeze · SHAKE256 · BouncyCastle 128B 5.037 μs 0.0113 μs 0.0106 μs -
AbsorbSqueeze · SHAKE256 · CryptoHives-Scalar 1KB 4.653 μs 0.0290 μs 0.0242 μs -
AbsorbSqueeze · SHAKE256 · OS Native 1KB 5.722 μs 0.0200 μs 0.0177 μs -
AbsorbSqueeze · SHAKE256 · BouncyCastle 1KB 7.370 μs 0.0221 μs 0.0207 μs 1120 B
AbsorbSqueeze · SHAKE256 · CryptoHives-Scalar 8KB 15.090 μs 0.0314 μs 0.0279 μs -
AbsorbSqueeze · SHAKE256 · OS Native 8KB 18.509 μs 0.0694 μs 0.0616 μs -
AbsorbSqueeze · SHAKE256 · BouncyCastle 8KB 24.934 μs 0.0360 μs 0.0319 μs 9600 B
AbsorbSqueeze · SHAKE256 · CryptoHives-Scalar 128KB 193.528 μs 0.9154 μs 0.7147 μs -
AbsorbSqueeze · SHAKE256 · OS Native 128KB 236.260 μs 0.5196 μs 0.4861 μs -
AbsorbSqueeze · SHAKE256 · BouncyCastle 128KB 324.650 μs 0.5239 μs 0.4090 μ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 Median Allocated
AbsorbSqueeze · cSHAKE128 · CryptoHives-Scalar 128B 2.731 μs 0.0523 μs 0.0463 μs 2.709 μs -
AbsorbSqueeze · cSHAKE128 · BouncyCastle 128B 4.214 μs 0.0790 μs 0.1577 μs 4.148 μs -
AbsorbSqueeze · cSHAKE128 · CryptoHives-Scalar 1KB 3.871 μs 0.0059 μs 0.0049 μs 3.871 μs -
AbsorbSqueeze · cSHAKE128 · BouncyCastle 1KB 6.133 μs 0.0133 μs 0.0125 μs 6.132 μs 1152 B
AbsorbSqueeze · cSHAKE128 · CryptoHives-Scalar 8KB 12.224 μs 0.0207 μs 0.0183 μs 12.222 μs -
AbsorbSqueeze · cSHAKE128 · BouncyCastle 8KB 20.051 μs 0.0329 μs 0.0291 μs 20.052 μs 9216 B
AbsorbSqueeze · cSHAKE128 · CryptoHives-Scalar 128KB 158.105 μs 0.2474 μs 0.2193 μs 158.125 μs -
AbsorbSqueeze · cSHAKE128 · BouncyCastle 128KB 267.169 μs 1.0695 μs 1.0004 μs 266.886 μs 149760 B

cSHAKE256

Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · cSHAKE256 · CryptoHives-Scalar 128B 3.285 μs 0.0116 μs 0.0097 μs -
AbsorbSqueeze · cSHAKE256 · BouncyCastle 128B 5.052 μs 0.0087 μs 0.0077 μs -
AbsorbSqueeze · cSHAKE256 · CryptoHives-Scalar 1KB 4.657 μs 0.0126 μs 0.0105 μs -
AbsorbSqueeze · cSHAKE256 · BouncyCastle 1KB 7.341 μs 0.0063 μs 0.0052 μs 1120 B
AbsorbSqueeze · cSHAKE256 · CryptoHives-Scalar 8KB 15.182 μs 0.0339 μs 0.0283 μs -
AbsorbSqueeze · cSHAKE256 · BouncyCastle 8KB 24.960 μs 0.0967 μs 0.0905 μs 9600 B
AbsorbSqueeze · cSHAKE256 · CryptoHives-Scalar 128KB 193.947 μs 0.5995 μs 0.5314 μs -
AbsorbSqueeze · cSHAKE256 · BouncyCastle 128KB 327.406 μs 0.5018 μs 0.4694 μ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.134 μs 0.0046 μs 0.0041 μs -
AbsorbSqueeze · KMAC-128 · OS Native 128B 3.994 μs 0.0117 μs 0.0109 μs 32 B
AbsorbSqueeze · KMAC-128 · BouncyCastle 128B 5.154 μs 0.0079 μs 0.0066 μs 128 B
AbsorbSqueeze · KMAC-128 · CryptoHives-Scalar 1KB 4.311 μs 0.0095 μs 0.0080 μs -
AbsorbSqueeze · KMAC-128 · OS Native 1KB 5.479 μs 0.0089 μs 0.0074 μs 32 B
AbsorbSqueeze · KMAC-128 · BouncyCastle 1KB 7.151 μs 0.0103 μs 0.0086 μs 1280 B
AbsorbSqueeze · KMAC-128 · CryptoHives-Scalar 8KB 12.699 μs 0.0147 μs 0.0122 μs -
AbsorbSqueeze · KMAC-128 · OS Native 8KB 15.818 μs 0.0247 μs 0.0206 μs 32 B
AbsorbSqueeze · KMAC-128 · BouncyCastle 8KB 21.156 μs 0.0429 μs 0.0358 μs 9344 B
AbsorbSqueeze · KMAC-128 · CryptoHives-Scalar 128KB 157.798 μs 0.2158 μs 0.1913 μs -
AbsorbSqueeze · KMAC-128 · OS Native 128KB 195.139 μs 0.2649 μs 0.2348 μs 32 B
AbsorbSqueeze · KMAC-128 · BouncyCastle 128KB 266.564 μs 0.8967 μs 0.8388 μs 149888 B

KMAC256

Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · KMAC-256 · CryptoHives-Scalar 128B 3.714 μs 0.0075 μs 0.0067 μs -
AbsorbSqueeze · KMAC-256 · OS Native 128B 4.705 μs 0.0156 μs 0.0139 μs 32 B
AbsorbSqueeze · KMAC-256 · BouncyCastle 128B 6.044 μs 0.0102 μs 0.0085 μs 128 B
AbsorbSqueeze · KMAC-256 · CryptoHives-Scalar 1KB 5.106 μs 0.0176 μs 0.0156 μs -
AbsorbSqueeze · KMAC-256 · OS Native 1KB 6.410 μs 0.0323 μs 0.0302 μs 32 B
AbsorbSqueeze · KMAC-256 · BouncyCastle 1KB 8.347 μs 0.0166 μs 0.0148 μs 1248 B
AbsorbSqueeze · KMAC-256 · CryptoHives-Scalar 8KB 15.547 μs 0.0178 μs 0.0139 μs -
AbsorbSqueeze · KMAC-256 · OS Native 8KB 19.203 μs 0.0269 μs 0.0210 μs 32 B
AbsorbSqueeze · KMAC-256 · BouncyCastle 8KB 25.838 μs 0.1143 μs 0.1069 μs 9728 B
AbsorbSqueeze · KMAC-256 · CryptoHives-Scalar 128KB 194.628 μs 0.6297 μs 0.5258 μs -
AbsorbSqueeze · KMAC-256 · OS Native 128KB 237.354 μs 0.4095 μs 0.3830 μs 32 B
AbsorbSqueeze · KMAC-256 · BouncyCastle 128KB 327.998 μs 1.6810 μs 1.4901 μ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.484 μs 0.0028 μs 0.0025 μs -
AbsorbSqueeze · KT128 · CryptoHives-Scalar 1KB 2.121 μs 0.0056 μs 0.0047 μs -
AbsorbSqueeze · KT128 · CryptoHives-Scalar 8KB 6.482 μs 0.0146 μs 0.0136 μs -
AbsorbSqueeze · KT128 · CryptoHives-Scalar 128KB 82.283 μs 0.1506 μs 0.1408 μs -

KT256

Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · KT256 · CryptoHives-Scalar 128B 1.778 μs 0.0035 μs 0.0033 μs -
AbsorbSqueeze · KT256 · CryptoHives-Scalar 1KB 2.508 μs 0.0068 μs 0.0061 μs -
AbsorbSqueeze · KT256 · CryptoHives-Scalar 8KB 8.007 μs 0.0160 μs 0.0142 μs -
AbsorbSqueeze · KT256 · CryptoHives-Scalar 128KB 102.520 μs 0.1711 μs 0.1517 μ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.458 μs 0.0038 μs 0.0036 μs -
AbsorbSqueeze · TurboSHAKE128 · CryptoHives-Scalar 1KB 2.076 μs 0.0111 μs 0.0093 μs -
AbsorbSqueeze · TurboSHAKE128 · CryptoHives-Scalar 8KB 6.471 μs 0.0165 μs 0.0154 μs -
AbsorbSqueeze · TurboSHAKE128 · CryptoHives-Scalar 128KB 82.330 μs 0.3316 μs 0.3102 μs -

TurboSHAKE256

Description TestDataSize Mean Error StdDev Allocated
AbsorbSqueeze · TurboSHAKE256 · CryptoHives-Scalar 128B 1.761 μs 0.0042 μs 0.0037 μs -
AbsorbSqueeze · TurboSHAKE256 · CryptoHives-Scalar 1KB 2.487 μs 0.0086 μs 0.0076 μs -
AbsorbSqueeze · TurboSHAKE256 · CryptoHives-Scalar 8KB 7.949 μs 0.0300 μs 0.0281 μs -
AbsorbSqueeze · TurboSHAKE256 · CryptoHives-Scalar 128KB 101.007 μs 0.2487 μs 0.2205 μ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 Median Allocated
AbsorbSqueeze · BLAKE3 · Blake3Native 128B 1.586 μs 0.0056 μs 0.0049 μs 1.585 μs -
AbsorbSqueeze · BLAKE3 · CryptoHives-Ssse3 128B 2.326 μs 0.0161 μs 0.0143 μs 2.325 μs -
AbsorbSqueeze · BLAKE3 · CryptoHives-Scalar 128B 10.203 μs 0.0227 μs 0.0190 μs 10.199 μs -
AbsorbSqueeze · BLAKE3 · BouncyCastle 128B 19.635 μs 0.0212 μs 0.0177 μs 19.634 μs 56 B
AbsorbSqueeze · BLAKE3 · Blake3Native 1KB 2.153 μs 0.0069 μs 0.0058 μs 2.153 μs -
AbsorbSqueeze · BLAKE3 · CryptoHives-Ssse3 1KB 3.222 μs 0.0584 μs 0.1038 μs 3.173 μs -
AbsorbSqueeze · BLAKE3 · CryptoHives-Scalar 1KB 14.396 μs 0.0172 μs 0.0152 μs 14.393 μs -
AbsorbSqueeze · BLAKE3 · BouncyCastle 1KB 28.870 μs 0.0192 μs 0.0170 μs 28.870 μs 56 B
AbsorbSqueeze · BLAKE3 · Blake3Native 8KB 6.683 μs 0.0195 μs 0.0173 μs 6.684 μs -
AbsorbSqueeze · BLAKE3 · CryptoHives-Ssse3 8KB 9.843 μs 0.0379 μs 0.0355 μs 9.836 μs -
AbsorbSqueeze · BLAKE3 · CryptoHives-Scalar 8KB 47.527 μs 0.0893 μs 0.0791 μs 47.506 μs -
AbsorbSqueeze · BLAKE3 · BouncyCastle 8KB 103.897 μs 0.1452 μs 0.1358 μs 103.841 μs 56 B
AbsorbSqueeze · BLAKE3 · Blake3Native 128KB 84.178 μs 0.1340 μs 0.1046 μs 84.162 μs -
AbsorbSqueeze · BLAKE3 · CryptoHives-Ssse3 128KB 124.927 μs 0.6646 μs 0.6216 μs 125.221 μs -
AbsorbSqueeze · BLAKE3 · CryptoHives-Scalar 128KB 615.802 μs 1.6926 μs 1.5004 μs 615.364 μs -
AbsorbSqueeze · BLAKE3 · BouncyCastle 128KB 1,401.698 μs 1.8661 μs 1.7456 μs 1,401.425 μ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.647 μs 0.0200 μs 0.0177 μs -
AbsorbSqueeze · Ascon-XOF128 · BouncyCastle 128B 10.406 μs 0.0177 μs 0.0157 μs -
AbsorbSqueeze · Ascon-XOF128 · CryptoHives-Scalar 1KB 10.819 μs 0.0279 μs 0.0233 μs -
AbsorbSqueeze · Ascon-XOF128 · BouncyCastle 1KB 14.625 μs 0.0200 μs 0.0177 μs -
AbsorbSqueeze · Ascon-XOF128 · CryptoHives-Scalar 8KB 35.835 μs 0.0846 μs 0.0706 μs -
AbsorbSqueeze · Ascon-XOF128 · BouncyCastle 8KB 48.810 μs 0.1125 μs 0.0997 μs -
AbsorbSqueeze · Ascon-XOF128 · CryptoHives-Scalar 128KB 466.990 μs 0.6241 μs 0.5533 μs -
AbsorbSqueeze · Ascon-XOF128 · BouncyCastle 128KB 633.019 μs 1.3808 μs 1.0781 μs -