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 |
- |