Hash Algorithm Benchmarks
BenchmarkDotNet measurements for all hash algorithm implementations in CryptoHives.Foundation.Security.Cryptography. Each algorithm is benchmarked across representative payload sizes (128 bytes through 128 KiB) to capture both latency and throughput characteristics.
Implementations are compared against:
- OS — .NET's built-in
System.Security.Cryptography (backed by CNG/OpenSSL)
- BouncyCastle — BouncyCastle C# library
- Native — Platform-specific native libraries (e.g., blake3-dotnet)
- Managed — CryptoHives managed implementation (scalar)
- SIMD — CryptoHives SIMD variants (SSE2, SSSE3, AVX2, AVX-512F)
Machine profile
Machine Specification
The benchmarks were run on the following machine:
BenchmarkDotNet v0.15.8, Windows 11 (10.0.26200.7840/25H2/2025Update/HudsonValley2)
AMD Ryzen 5 7600X 4.70GHz, 1 CPU, 12 logical and 6 physical cores
.NET SDK 10.0.103
[Host] : .NET 10.0.3 (10.0.3, 10.0.326.7603), X64 RyuJIT x86-64-v4
.NET 10.0 : .NET 10.0.3 (10.0.3, 10.0.326.7603), X64 RyuJIT x86-64-v4
Job=.NET 10.0 Runtime=.NET 10.0 Toolchain=net10.0
Note: All benchmarks and SIMD optimizations have been developed and measured on this AMD Ryzen 5 / Windows 11 platform only. No results are available yet for Linux, macOS, or ARM processors (e.g. Apple Silicon, AWS Graviton). Performance characteristics — particularly SIMD dispatch paths and OS-backed implementations (CNG vs OpenSSL) — may differ significantly on other platforms. Run benchmarks locally for your specific hardware.
Highlights
| Family |
Leader |
Key Insight |
| SHA-2 |
OS (SHA-NI) |
Hardware SHA-NI gives OS ~4.5× advantage; managed outperforms BouncyCastle by ~13% |
| SHA-3/Keccak |
Managed |
Scalar Keccak outperforms OS by ~30% and SIMD variants by 25–35% |
| BLAKE2b/2s |
Managed SIMD |
BLAKE2s SIMD on parity with BouncyCastle; BLAKE2b AVX2 within ~20% |
| BLAKE3 |
Native (Rust) |
Rust interop ~1.4× faster at small inputs, ~12× at large due to multi-chunk parallelism; SSSE3 managed ~4× faster than BouncyCastle |
| Streebog |
Managed |
1.4–1.8× faster than OpenGost/BouncyCastle |
| Kupyna |
Managed |
T-table optimization ~30–45% faster than BouncyCastle |
| KMAC |
Managed |
~30% faster than OS and ~48% faster than BouncyCastle at all sizes |
| Ascon |
Managed |
~33% faster than BouncyCastle across all input sizes |
SHA-2 Family
The OS SHA-256/SHA-512 implementations leverage SHA-NI hardware instructions (available on AMD Zen+ and Intel Ice Lake+), providing ~4.5× speedup over any software implementation. For pure managed code, CryptoHives outperforms BouncyCastle by approximately 13% through loop unrolling and hardcoded round constants.
Key observations:
- OS: Uses SHA-NI hardware acceleration
- Managed: Optimized scalar with unrolled rounds
- BouncyCastle: Reference scalar implementation
SHA-224
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SHA-224 · Managed |
128B |
474.8 ns |
3.66 ns |
3.06 ns |
- |
| TryComputeHash · SHA-224 · BouncyCastle |
128B |
553.0 ns |
3.52 ns |
3.29 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-224 · Managed |
137B |
477.4 ns |
1.83 ns |
1.72 ns |
- |
| TryComputeHash · SHA-224 · BouncyCastle |
137B |
557.6 ns |
3.89 ns |
3.64 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-224 · Managed |
1KB |
2,655.9 ns |
17.26 ns |
16.14 ns |
- |
| TryComputeHash · SHA-224 · BouncyCastle |
1KB |
3,073.9 ns |
10.18 ns |
8.50 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-224 · Managed |
1025B |
2,659.4 ns |
15.66 ns |
14.65 ns |
- |
| TryComputeHash · SHA-224 · BouncyCastle |
1025B |
3,078.5 ns |
12.85 ns |
11.39 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-224 · Managed |
8KB |
20,103.9 ns |
126.06 ns |
117.91 ns |
- |
| TryComputeHash · SHA-224 · BouncyCastle |
8KB |
23,237.4 ns |
96.77 ns |
90.52 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-224 · Managed |
128KB |
318,282.1 ns |
1,286.13 ns |
1,140.12 ns |
- |
| TryComputeHash · SHA-224 · BouncyCastle |
128KB |
368,758.2 ns |
1,008.89 ns |
842.47 ns |
- |
SHA-256
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SHA-256 · OS Native |
128B |
106.7 ns |
0.27 ns |
0.24 ns |
- |
| TryComputeHash · SHA-256 · Managed |
128B |
474.7 ns |
1.98 ns |
1.85 ns |
- |
| TryComputeHash · SHA-256 · BouncyCastle |
128B |
544.2 ns |
2.56 ns |
2.27 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-256 · OS Native |
137B |
106.7 ns |
0.30 ns |
0.25 ns |
- |
| TryComputeHash · SHA-256 · Managed |
137B |
474.6 ns |
1.57 ns |
1.31 ns |
- |
| TryComputeHash · SHA-256 · BouncyCastle |
137B |
557.2 ns |
2.91 ns |
2.72 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-256 · OS Native |
1KB |
463.4 ns |
1.19 ns |
1.05 ns |
- |
| TryComputeHash · SHA-256 · Managed |
1KB |
2,649.9 ns |
14.01 ns |
11.70 ns |
- |
| TryComputeHash · SHA-256 · BouncyCastle |
1KB |
3,043.7 ns |
14.94 ns |
13.97 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-256 · OS Native |
1025B |
463.9 ns |
0.67 ns |
0.63 ns |
- |
| TryComputeHash · SHA-256 · Managed |
1025B |
2,663.3 ns |
11.45 ns |
10.71 ns |
- |
| TryComputeHash · SHA-256 · BouncyCastle |
1025B |
3,035.9 ns |
14.55 ns |
13.61 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-256 · OS Native |
8KB |
3,277.3 ns |
6.70 ns |
6.27 ns |
- |
| TryComputeHash · SHA-256 · Managed |
8KB |
19,990.4 ns |
55.85 ns |
49.51 ns |
- |
| TryComputeHash · SHA-256 · BouncyCastle |
8KB |
22,966.2 ns |
142.29 ns |
133.10 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-256 · OS Native |
128KB |
51,518.9 ns |
85.85 ns |
76.11 ns |
- |
| TryComputeHash · SHA-256 · Managed |
128KB |
317,562.8 ns |
2,088.27 ns |
1,953.37 ns |
- |
| TryComputeHash · SHA-256 · BouncyCastle |
128KB |
363,487.9 ns |
1,536.17 ns |
1,436.93 ns |
- |
SHA-384
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SHA-384 · OS Native |
128B |
347.5 ns |
1.04 ns |
0.92 ns |
- |
| TryComputeHash · SHA-384 · Managed |
128B |
402.5 ns |
0.95 ns |
0.79 ns |
- |
| TryComputeHash · SHA-384 · BouncyCastle |
128B |
473.6 ns |
1.64 ns |
1.37 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-384 · OS Native |
137B |
346.3 ns |
2.23 ns |
2.09 ns |
- |
| TryComputeHash · SHA-384 · Managed |
137B |
404.0 ns |
1.87 ns |
1.75 ns |
- |
| TryComputeHash · SHA-384 · BouncyCastle |
137B |
477.1 ns |
1.71 ns |
1.43 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-384 · OS Native |
1KB |
1,387.3 ns |
6.93 ns |
6.14 ns |
- |
| TryComputeHash · SHA-384 · Managed |
1KB |
1,782.3 ns |
8.23 ns |
7.70 ns |
- |
| TryComputeHash · SHA-384 · BouncyCastle |
1KB |
2,107.9 ns |
14.36 ns |
11.99 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-384 · OS Native |
1025B |
1,389.2 ns |
10.17 ns |
9.52 ns |
- |
| TryComputeHash · SHA-384 · Managed |
1025B |
1,783.0 ns |
5.05 ns |
4.48 ns |
- |
| TryComputeHash · SHA-384 · BouncyCastle |
1025B |
2,098.8 ns |
5.67 ns |
5.02 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-384 · OS Native |
8KB |
9,691.0 ns |
21.71 ns |
19.25 ns |
- |
| TryComputeHash · SHA-384 · Managed |
8KB |
12,778.5 ns |
55.31 ns |
49.03 ns |
- |
| TryComputeHash · SHA-384 · BouncyCastle |
8KB |
15,098.1 ns |
31.93 ns |
26.66 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-384 · OS Native |
128KB |
152,267.4 ns |
644.11 ns |
602.50 ns |
- |
| TryComputeHash · SHA-384 · Managed |
128KB |
201,016.9 ns |
915.32 ns |
856.19 ns |
- |
| TryComputeHash · SHA-384 · BouncyCastle |
128KB |
237,533.1 ns |
1,329.50 ns |
1,243.62 ns |
- |
SHA-512
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SHA-512 · OS Native |
128B |
343.2 ns |
1.41 ns |
1.25 ns |
- |
| TryComputeHash · SHA-512 · Managed |
128B |
402.9 ns |
2.08 ns |
1.95 ns |
- |
| TryComputeHash · SHA-512 · BouncyCastle |
128B |
477.3 ns |
3.47 ns |
3.24 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512 · OS Native |
137B |
342.6 ns |
1.76 ns |
1.56 ns |
- |
| TryComputeHash · SHA-512 · Managed |
137B |
403.8 ns |
1.09 ns |
1.02 ns |
- |
| TryComputeHash · SHA-512 · BouncyCastle |
137B |
479.7 ns |
1.61 ns |
1.42 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512 · OS Native |
1KB |
1,385.0 ns |
8.30 ns |
7.77 ns |
- |
| TryComputeHash · SHA-512 · Managed |
1KB |
1,781.4 ns |
8.89 ns |
8.31 ns |
- |
| TryComputeHash · SHA-512 · BouncyCastle |
1KB |
2,104.9 ns |
11.42 ns |
10.68 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512 · OS Native |
1025B |
1,384.3 ns |
4.88 ns |
4.07 ns |
- |
| TryComputeHash · SHA-512 · Managed |
1025B |
1,784.8 ns |
7.75 ns |
7.25 ns |
- |
| TryComputeHash · SHA-512 · BouncyCastle |
1025B |
2,108.4 ns |
13.03 ns |
12.19 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512 · OS Native |
8KB |
9,675.1 ns |
45.96 ns |
42.99 ns |
- |
| TryComputeHash · SHA-512 · Managed |
8KB |
12,753.5 ns |
34.74 ns |
30.80 ns |
- |
| TryComputeHash · SHA-512 · BouncyCastle |
8KB |
15,071.4 ns |
42.14 ns |
35.19 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512 · OS Native |
128KB |
152,288.9 ns |
740.78 ns |
692.93 ns |
- |
| TryComputeHash · SHA-512 · Managed |
128KB |
201,652.5 ns |
921.70 ns |
862.16 ns |
- |
| TryComputeHash · SHA-512 · BouncyCastle |
128KB |
237,709.5 ns |
928.76 ns |
868.76 ns |
- |
SHA-512/224
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SHA-512/224 · Managed |
128B |
402.6 ns |
1.48 ns |
1.39 ns |
- |
| TryComputeHash · SHA-512/224 · BouncyCastle |
128B |
487.1 ns |
1.59 ns |
1.33 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512/224 · Managed |
137B |
402.7 ns |
1.81 ns |
1.69 ns |
- |
| TryComputeHash · SHA-512/224 · BouncyCastle |
137B |
494.1 ns |
1.69 ns |
1.41 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512/224 · Managed |
1KB |
1,781.9 ns |
7.05 ns |
6.59 ns |
- |
| TryComputeHash · SHA-512/224 · BouncyCastle |
1KB |
2,116.2 ns |
19.84 ns |
15.49 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512/224 · Managed |
1025B |
1,785.2 ns |
7.57 ns |
7.08 ns |
- |
| TryComputeHash · SHA-512/224 · BouncyCastle |
1025B |
2,116.8 ns |
8.08 ns |
6.75 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512/224 · Managed |
8KB |
12,747.8 ns |
56.60 ns |
52.94 ns |
- |
| TryComputeHash · SHA-512/224 · BouncyCastle |
8KB |
15,079.3 ns |
51.50 ns |
45.66 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512/224 · Managed |
128KB |
200,583.3 ns |
696.17 ns |
581.34 ns |
- |
| TryComputeHash · SHA-512/224 · BouncyCastle |
128KB |
238,232.2 ns |
931.40 ns |
871.23 ns |
- |
SHA-512/256
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SHA-512/256 · Managed |
128B |
401.8 ns |
1.80 ns |
1.60 ns |
- |
| TryComputeHash · SHA-512/256 · BouncyCastle |
128B |
491.2 ns |
2.79 ns |
2.61 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512/256 · Managed |
137B |
404.0 ns |
2.63 ns |
2.46 ns |
- |
| TryComputeHash · SHA-512/256 · BouncyCastle |
137B |
495.5 ns |
2.81 ns |
2.63 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512/256 · Managed |
1KB |
1,780.8 ns |
8.67 ns |
8.11 ns |
- |
| TryComputeHash · SHA-512/256 · BouncyCastle |
1KB |
2,118.0 ns |
9.94 ns |
8.30 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512/256 · Managed |
1025B |
1,778.3 ns |
5.70 ns |
5.05 ns |
- |
| TryComputeHash · SHA-512/256 · BouncyCastle |
1025B |
2,121.6 ns |
8.96 ns |
7.48 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512/256 · Managed |
8KB |
12,755.1 ns |
51.84 ns |
45.95 ns |
- |
| TryComputeHash · SHA-512/256 · BouncyCastle |
8KB |
15,106.1 ns |
51.82 ns |
48.47 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-512/256 · Managed |
128KB |
201,291.2 ns |
1,233.41 ns |
1,153.73 ns |
- |
| TryComputeHash · SHA-512/256 · BouncyCastle |
128KB |
237,375.7 ns |
644.88 ns |
571.67 ns |
- |
Keccak-derived Families
The managed Keccak core uses an optimized scalar implementation that outperforms both the OS-provided SHA-3 and SIMD variants (AVX2/AVX-512F). This is unusual—typically SIMD accelerates cryptographic operations—but Keccak's irregular permutation structure doesn't map efficiently to SIMD lanes.
Key observations:
- Managed scalar is ~30% faster than OS SHA-3 and 25–35% faster than SIMD variants
- SIMD implementations (AVX2/AVX-512F) are provided but disabled by default
- All Keccak-derived algorithms (SHA-3, SHAKE, cSHAKE, TurboSHAKE, KT) share the same optimized core
SHA-3 Family
SHA3-224
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SHA3-224 · Managed |
128B |
213.9 ns |
1.26 ns |
1.18 ns |
- |
| TryComputeHash · SHA3-224 · AVX2 |
128B |
287.6 ns |
0.75 ns |
0.70 ns |
- |
| TryComputeHash · SHA3-224 · AVX512F |
128B |
300.5 ns |
0.89 ns |
0.83 ns |
- |
| TryComputeHash · SHA3-224 · BouncyCastle |
128B |
331.7 ns |
1.19 ns |
1.05 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-224 · Managed |
137B |
212.0 ns |
1.00 ns |
0.94 ns |
- |
| TryComputeHash · SHA3-224 · AVX2 |
137B |
280.9 ns |
1.20 ns |
1.06 ns |
- |
| TryComputeHash · SHA3-224 · AVX512F |
137B |
289.4 ns |
0.66 ns |
0.62 ns |
- |
| TryComputeHash · SHA3-224 · BouncyCastle |
137B |
333.0 ns |
1.06 ns |
0.99 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-224 · Managed |
1KB |
1,641.8 ns |
13.87 ns |
12.97 ns |
- |
| TryComputeHash · SHA3-224 · AVX2 |
1KB |
2,221.0 ns |
7.02 ns |
6.56 ns |
- |
| TryComputeHash · SHA3-224 · AVX512F |
1KB |
2,284.1 ns |
5.74 ns |
5.09 ns |
- |
| TryComputeHash · SHA3-224 · BouncyCastle |
1KB |
2,462.3 ns |
8.32 ns |
7.79 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-224 · Managed |
1025B |
1,636.7 ns |
9.80 ns |
9.17 ns |
- |
| TryComputeHash · SHA3-224 · AVX2 |
1025B |
2,218.9 ns |
5.15 ns |
4.81 ns |
- |
| TryComputeHash · SHA3-224 · AVX512F |
1025B |
2,279.0 ns |
7.82 ns |
6.93 ns |
- |
| TryComputeHash · SHA3-224 · BouncyCastle |
1025B |
2,460.0 ns |
10.78 ns |
9.56 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-224 · Managed |
8KB |
11,229.1 ns |
38.76 ns |
32.36 ns |
- |
| TryComputeHash · SHA3-224 · AVX2 |
8KB |
15,354.3 ns |
45.31 ns |
42.39 ns |
- |
| TryComputeHash · SHA3-224 · AVX512F |
8KB |
15,746.8 ns |
50.88 ns |
47.59 ns |
- |
| TryComputeHash · SHA3-224 · BouncyCastle |
8KB |
17,363.5 ns |
94.86 ns |
88.73 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-224 · Managed |
128KB |
179,442.5 ns |
755.75 ns |
669.95 ns |
- |
| TryComputeHash · SHA3-224 · AVX2 |
128KB |
245,328.8 ns |
1,120.44 ns |
993.24 ns |
- |
| TryComputeHash · SHA3-224 · AVX512F |
128KB |
251,811.9 ns |
1,269.50 ns |
1,125.38 ns |
- |
| TryComputeHash · SHA3-224 · BouncyCastle |
128KB |
277,721.5 ns |
623.30 ns |
520.48 ns |
- |
SHA3-256
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SHA3-256 · Managed |
128B |
208.1 ns |
1.25 ns |
1.11 ns |
- |
| TryComputeHash · SHA3-256 · OS Native |
128B |
274.1 ns |
1.99 ns |
1.86 ns |
- |
| TryComputeHash · SHA3-256 · AVX2 |
128B |
280.6 ns |
1.02 ns |
0.96 ns |
- |
| TryComputeHash · SHA3-256 · AVX512F |
128B |
290.7 ns |
1.78 ns |
1.57 ns |
- |
| TryComputeHash · SHA3-256 · BouncyCastle |
128B |
329.3 ns |
0.97 ns |
0.81 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-256 · Managed |
137B |
461.8 ns |
2.40 ns |
2.24 ns |
- |
| TryComputeHash · SHA3-256 · OS Native |
137B |
504.3 ns |
2.90 ns |
2.57 ns |
- |
| TryComputeHash · SHA3-256 · AVX2 |
137B |
609.8 ns |
1.13 ns |
1.00 ns |
- |
| TryComputeHash · SHA3-256 · AVX512F |
137B |
629.8 ns |
1.45 ns |
1.36 ns |
- |
| TryComputeHash · SHA3-256 · BouncyCastle |
137B |
630.2 ns |
2.52 ns |
2.24 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-256 · Managed |
1KB |
1,618.9 ns |
10.68 ns |
9.99 ns |
- |
| TryComputeHash · SHA3-256 · OS Native |
1KB |
1,917.8 ns |
15.01 ns |
14.04 ns |
- |
| TryComputeHash · SHA3-256 · AVX2 |
1KB |
2,206.5 ns |
10.11 ns |
8.44 ns |
- |
| TryComputeHash · SHA3-256 · AVX512F |
1KB |
2,255.7 ns |
5.87 ns |
5.49 ns |
- |
| TryComputeHash · SHA3-256 · BouncyCastle |
1KB |
2,454.7 ns |
14.42 ns |
13.49 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-256 · Managed |
1025B |
1,615.0 ns |
6.79 ns |
6.35 ns |
- |
| TryComputeHash · SHA3-256 · OS Native |
1025B |
1,905.3 ns |
12.98 ns |
11.50 ns |
- |
| TryComputeHash · SHA3-256 · AVX2 |
1025B |
2,191.8 ns |
6.58 ns |
6.15 ns |
- |
| TryComputeHash · SHA3-256 · AVX512F |
1025B |
2,249.4 ns |
6.12 ns |
5.72 ns |
- |
| TryComputeHash · SHA3-256 · BouncyCastle |
1025B |
2,457.4 ns |
8.74 ns |
7.75 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-256 · Managed |
8KB |
12,035.4 ns |
57.42 ns |
50.90 ns |
- |
| TryComputeHash · SHA3-256 · OS Native |
8KB |
14,383.1 ns |
100.15 ns |
93.68 ns |
- |
| TryComputeHash · SHA3-256 · AVX2 |
8KB |
16,446.5 ns |
28.20 ns |
25.00 ns |
- |
| TryComputeHash · SHA3-256 · AVX512F |
8KB |
16,946.8 ns |
43.93 ns |
41.09 ns |
- |
| TryComputeHash · SHA3-256 · BouncyCastle |
8KB |
18,496.8 ns |
97.01 ns |
86.00 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-256 · Managed |
128KB |
189,183.0 ns |
839.73 ns |
785.48 ns |
- |
| TryComputeHash · SHA3-256 · OS Native |
128KB |
225,852.5 ns |
1,374.34 ns |
1,218.32 ns |
- |
| TryComputeHash · SHA3-256 · AVX2 |
128KB |
259,252.1 ns |
510.63 ns |
477.65 ns |
- |
| TryComputeHash · SHA3-256 · AVX512F |
128KB |
266,058.3 ns |
495.19 ns |
413.51 ns |
- |
| TryComputeHash · SHA3-256 · BouncyCastle |
128KB |
292,550.0 ns |
908.96 ns |
805.77 ns |
- |
SHA3-384
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SHA3-384 · Managed |
128B |
437.3 ns |
1.70 ns |
1.59 ns |
- |
| TryComputeHash · SHA3-384 · OS Native |
128B |
501.2 ns |
4.20 ns |
3.93 ns |
- |
| TryComputeHash · SHA3-384 · AVX2 |
128B |
588.3 ns |
1.43 ns |
1.27 ns |
- |
| TryComputeHash · SHA3-384 · AVX512F |
128B |
605.2 ns |
1.25 ns |
1.11 ns |
- |
| TryComputeHash · SHA3-384 · BouncyCastle |
128B |
626.1 ns |
1.86 ns |
1.55 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-384 · Managed |
137B |
433.1 ns |
2.37 ns |
2.22 ns |
- |
| TryComputeHash · SHA3-384 · OS Native |
137B |
501.0 ns |
2.78 ns |
2.61 ns |
- |
| TryComputeHash · SHA3-384 · AVX2 |
137B |
584.5 ns |
1.33 ns |
1.04 ns |
- |
| TryComputeHash · SHA3-384 · AVX512F |
137B |
600.3 ns |
1.74 ns |
1.45 ns |
- |
| TryComputeHash · SHA3-384 · BouncyCastle |
137B |
625.7 ns |
3.20 ns |
2.99 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-384 · Managed |
1KB |
1,971.5 ns |
12.95 ns |
12.11 ns |
- |
| TryComputeHash · SHA3-384 · OS Native |
1KB |
2,360.6 ns |
14.59 ns |
13.65 ns |
- |
| TryComputeHash · SHA3-384 · AVX2 |
1KB |
2,707.2 ns |
4.20 ns |
3.28 ns |
- |
| TryComputeHash · SHA3-384 · AVX512F |
1KB |
2,777.8 ns |
6.58 ns |
5.50 ns |
- |
| TryComputeHash · SHA3-384 · BouncyCastle |
1KB |
3,044.7 ns |
11.75 ns |
10.41 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-384 · Managed |
1025B |
1,976.8 ns |
10.25 ns |
9.59 ns |
- |
| TryComputeHash · SHA3-384 · OS Native |
1025B |
2,363.3 ns |
16.71 ns |
15.63 ns |
- |
| TryComputeHash · SHA3-384 · AVX2 |
1025B |
2,707.3 ns |
5.56 ns |
4.93 ns |
- |
| TryComputeHash · SHA3-384 · AVX512F |
1025B |
2,778.5 ns |
7.19 ns |
6.37 ns |
- |
| TryComputeHash · SHA3-384 · BouncyCastle |
1025B |
3,036.8 ns |
15.66 ns |
14.65 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-384 · Managed |
8KB |
15,437.5 ns |
139.61 ns |
130.59 ns |
- |
| TryComputeHash · SHA3-384 · OS Native |
8KB |
18,421.8 ns |
119.05 ns |
111.36 ns |
- |
| TryComputeHash · SHA3-384 · AVX2 |
8KB |
21,188.0 ns |
39.37 ns |
36.83 ns |
- |
| TryComputeHash · SHA3-384 · AVX512F |
8KB |
21,748.3 ns |
45.40 ns |
40.24 ns |
- |
| TryComputeHash · SHA3-384 · BouncyCastle |
8KB |
23,655.2 ns |
85.93 ns |
71.76 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-384 · Managed |
128KB |
246,400.1 ns |
1,466.62 ns |
1,371.88 ns |
- |
| TryComputeHash · SHA3-384 · OS Native |
128KB |
293,007.6 ns |
1,125.98 ns |
940.24 ns |
- |
| TryComputeHash · SHA3-384 · AVX2 |
128KB |
337,722.8 ns |
870.52 ns |
814.29 ns |
- |
| TryComputeHash · SHA3-384 · AVX512F |
128KB |
346,931.9 ns |
562.56 ns |
526.22 ns |
- |
| TryComputeHash · SHA3-384 · BouncyCastle |
128KB |
379,422.1 ns |
1,993.61 ns |
1,864.83 ns |
- |
SHA3-512
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SHA3-512 · Managed |
128B |
410.9 ns |
1.82 ns |
1.70 ns |
- |
| TryComputeHash · SHA3-512 · OS Native |
128B |
501.2 ns |
4.68 ns |
4.38 ns |
- |
| TryComputeHash · SHA3-512 · AVX2 |
128B |
558.9 ns |
1.67 ns |
1.56 ns |
- |
| TryComputeHash · SHA3-512 · AVX512F |
128B |
577.4 ns |
2.51 ns |
2.23 ns |
- |
| TryComputeHash · SHA3-512 · BouncyCastle |
128B |
626.1 ns |
3.10 ns |
2.59 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-512 · Managed |
137B |
399.9 ns |
2.23 ns |
2.09 ns |
- |
| TryComputeHash · SHA3-512 · OS Native |
137B |
503.2 ns |
5.56 ns |
5.20 ns |
- |
| TryComputeHash · SHA3-512 · AVX2 |
137B |
547.4 ns |
2.08 ns |
1.85 ns |
- |
| TryComputeHash · SHA3-512 · AVX512F |
137B |
561.4 ns |
1.43 ns |
1.19 ns |
- |
| TryComputeHash · SHA3-512 · BouncyCastle |
137B |
627.3 ns |
4.27 ns |
3.99 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-512 · Managed |
1KB |
2,948.2 ns |
18.78 ns |
17.56 ns |
- |
| TryComputeHash · SHA3-512 · OS Native |
1KB |
3,503.3 ns |
13.73 ns |
12.17 ns |
- |
| TryComputeHash · SHA3-512 · AVX2 |
1KB |
4,042.3 ns |
10.05 ns |
8.91 ns |
- |
| TryComputeHash · SHA3-512 · AVX512F |
1KB |
4,156.1 ns |
21.35 ns |
17.83 ns |
- |
| TryComputeHash · SHA3-512 · BouncyCastle |
1KB |
4,505.0 ns |
27.87 ns |
26.07 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-512 · Managed |
1025B |
2,939.9 ns |
23.92 ns |
22.37 ns |
- |
| TryComputeHash · SHA3-512 · OS Native |
1025B |
3,505.9 ns |
20.23 ns |
18.92 ns |
- |
| TryComputeHash · SHA3-512 · AVX2 |
1025B |
4,036.9 ns |
10.10 ns |
9.45 ns |
- |
| TryComputeHash · SHA3-512 · AVX512F |
1025B |
4,153.2 ns |
11.04 ns |
9.22 ns |
- |
| TryComputeHash · SHA3-512 · BouncyCastle |
1025B |
4,493.9 ns |
24.78 ns |
23.18 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-512 · Managed |
8KB |
22,111.7 ns |
139.26 ns |
130.26 ns |
- |
| TryComputeHash · SHA3-512 · OS Native |
8KB |
26,373.1 ns |
152.16 ns |
142.33 ns |
- |
| TryComputeHash · SHA3-512 · AVX2 |
8KB |
30,411.7 ns |
58.42 ns |
54.65 ns |
- |
| TryComputeHash · SHA3-512 · AVX512F |
8KB |
31,203.0 ns |
75.71 ns |
67.11 ns |
- |
| TryComputeHash · SHA3-512 · BouncyCastle |
8KB |
34,092.3 ns |
158.38 ns |
148.15 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA3-512 · Managed |
128KB |
352,843.3 ns |
1,856.06 ns |
1,736.16 ns |
- |
| TryComputeHash · SHA3-512 · OS Native |
128KB |
420,651.8 ns |
1,747.83 ns |
1,634.92 ns |
- |
| TryComputeHash · SHA3-512 · AVX2 |
128KB |
485,908.9 ns |
618.03 ns |
578.11 ns |
- |
| TryComputeHash · SHA3-512 · AVX512F |
128KB |
501,116.0 ns |
1,507.32 ns |
1,409.94 ns |
- |
| TryComputeHash · SHA3-512 · BouncyCastle |
128KB |
545,815.0 ns |
3,644.89 ns |
3,409.43 ns |
- |
Keccak Family
Keccak-256
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · Keccak-256 · Managed |
128B |
211.1 ns |
0.99 ns |
0.92 ns |
- |
| TryComputeHash · Keccak-256 · AVX2 |
128B |
281.9 ns |
1.43 ns |
1.27 ns |
- |
| TryComputeHash · Keccak-256 · AVX512F |
128B |
290.0 ns |
0.61 ns |
0.57 ns |
- |
| TryComputeHash · Keccak-256 · BouncyCastle |
128B |
329.4 ns |
2.01 ns |
1.88 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-256 · Managed |
137B |
461.2 ns |
1.73 ns |
1.61 ns |
- |
| TryComputeHash · Keccak-256 · AVX2 |
137B |
610.6 ns |
1.14 ns |
1.06 ns |
- |
| TryComputeHash · Keccak-256 · BouncyCastle |
137B |
625.8 ns |
3.63 ns |
3.40 ns |
- |
| TryComputeHash · Keccak-256 · AVX512F |
137B |
629.5 ns |
1.51 ns |
1.34 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-256 · Managed |
1KB |
1,609.0 ns |
4.48 ns |
3.74 ns |
- |
| TryComputeHash · Keccak-256 · AVX2 |
1KB |
2,193.9 ns |
6.43 ns |
6.01 ns |
- |
| TryComputeHash · Keccak-256 · AVX512F |
1KB |
2,257.0 ns |
5.06 ns |
4.73 ns |
- |
| TryComputeHash · Keccak-256 · BouncyCastle |
1KB |
2,456.4 ns |
14.32 ns |
13.39 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-256 · Managed |
1025B |
1,611.0 ns |
5.68 ns |
5.32 ns |
- |
| TryComputeHash · Keccak-256 · AVX2 |
1025B |
2,196.1 ns |
9.82 ns |
8.70 ns |
- |
| TryComputeHash · Keccak-256 · AVX512F |
1025B |
2,255.8 ns |
4.04 ns |
3.78 ns |
- |
| TryComputeHash · Keccak-256 · BouncyCastle |
1025B |
2,447.7 ns |
13.35 ns |
11.84 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-256 · Managed |
8KB |
12,023.9 ns |
43.01 ns |
33.58 ns |
- |
| TryComputeHash · Keccak-256 · AVX2 |
8KB |
16,455.3 ns |
38.99 ns |
36.47 ns |
- |
| TryComputeHash · Keccak-256 · AVX512F |
8KB |
16,902.9 ns |
49.90 ns |
44.24 ns |
- |
| TryComputeHash · Keccak-256 · BouncyCastle |
8KB |
18,508.8 ns |
102.73 ns |
91.07 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-256 · Managed |
128KB |
189,312.2 ns |
608.44 ns |
539.36 ns |
- |
| TryComputeHash · Keccak-256 · AVX2 |
128KB |
259,226.8 ns |
538.46 ns |
503.67 ns |
- |
| TryComputeHash · Keccak-256 · AVX512F |
128KB |
266,411.8 ns |
1,337.70 ns |
1,117.04 ns |
- |
| TryComputeHash · Keccak-256 · BouncyCastle |
128KB |
291,838.0 ns |
1,090.34 ns |
966.55 ns |
- |
Keccak-384
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · Keccak-384 · Managed |
128B |
437.3 ns |
2.76 ns |
2.58 ns |
- |
| TryComputeHash · Keccak-384 · AVX2 |
128B |
586.9 ns |
1.48 ns |
1.39 ns |
- |
| TryComputeHash · Keccak-384 · AVX512F |
128B |
607.4 ns |
1.44 ns |
1.20 ns |
- |
| TryComputeHash · Keccak-384 · BouncyCastle |
128B |
623.6 ns |
4.38 ns |
4.10 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-384 · Managed |
137B |
435.5 ns |
1.82 ns |
1.70 ns |
- |
| TryComputeHash · Keccak-384 · AVX2 |
137B |
584.1 ns |
1.46 ns |
1.29 ns |
- |
| TryComputeHash · Keccak-384 · AVX512F |
137B |
603.1 ns |
1.45 ns |
1.35 ns |
- |
| TryComputeHash · Keccak-384 · BouncyCastle |
137B |
624.4 ns |
4.46 ns |
4.18 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-384 · Managed |
1KB |
1,973.0 ns |
11.79 ns |
10.46 ns |
- |
| TryComputeHash · Keccak-384 · AVX2 |
1KB |
2,704.9 ns |
5.92 ns |
5.54 ns |
- |
| TryComputeHash · Keccak-384 · AVX512F |
1KB |
2,781.8 ns |
5.02 ns |
4.19 ns |
- |
| TryComputeHash · Keccak-384 · BouncyCastle |
1KB |
3,041.5 ns |
9.73 ns |
8.63 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-384 · Managed |
1025B |
1,971.5 ns |
17.73 ns |
16.59 ns |
- |
| TryComputeHash · Keccak-384 · AVX2 |
1025B |
2,695.8 ns |
4.47 ns |
3.97 ns |
- |
| TryComputeHash · Keccak-384 · AVX512F |
1025B |
2,790.1 ns |
11.88 ns |
10.53 ns |
- |
| TryComputeHash · Keccak-384 · BouncyCastle |
1025B |
3,042.1 ns |
17.61 ns |
16.48 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-384 · Managed |
8KB |
15,399.7 ns |
66.96 ns |
59.36 ns |
- |
| TryComputeHash · Keccak-384 · AVX2 |
8KB |
21,194.1 ns |
36.02 ns |
33.70 ns |
- |
| TryComputeHash · Keccak-384 · AVX512F |
8KB |
21,797.6 ns |
44.02 ns |
39.03 ns |
- |
| TryComputeHash · Keccak-384 · BouncyCastle |
8KB |
23,814.0 ns |
63.91 ns |
56.65 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-384 · Managed |
128KB |
245,553.5 ns |
1,417.93 ns |
1,256.96 ns |
- |
| TryComputeHash · Keccak-384 · AVX2 |
128KB |
336,844.7 ns |
1,001.68 ns |
887.96 ns |
- |
| TryComputeHash · Keccak-384 · AVX512F |
128KB |
347,933.4 ns |
944.25 ns |
837.06 ns |
- |
| TryComputeHash · Keccak-384 · BouncyCastle |
128KB |
381,363.7 ns |
2,875.67 ns |
2,401.32 ns |
- |
Keccak-512
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · Keccak-512 · Managed |
128B |
407.2 ns |
2.00 ns |
1.87 ns |
- |
| TryComputeHash · Keccak-512 · AVX2 |
128B |
557.8 ns |
1.28 ns |
1.07 ns |
- |
| TryComputeHash · Keccak-512 · AVX512F |
128B |
578.5 ns |
1.17 ns |
1.09 ns |
- |
| TryComputeHash · Keccak-512 · BouncyCastle |
128B |
623.1 ns |
3.62 ns |
3.38 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-512 · Managed |
137B |
400.4 ns |
1.51 ns |
1.34 ns |
- |
| TryComputeHash · Keccak-512 · AVX2 |
137B |
547.9 ns |
2.74 ns |
2.29 ns |
- |
| TryComputeHash · Keccak-512 · AVX512F |
137B |
560.5 ns |
1.21 ns |
1.13 ns |
- |
| TryComputeHash · Keccak-512 · BouncyCastle |
137B |
623.0 ns |
2.13 ns |
1.78 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-512 · Managed |
1KB |
2,937.7 ns |
10.70 ns |
10.01 ns |
- |
| TryComputeHash · Keccak-512 · AVX2 |
1KB |
4,023.0 ns |
8.55 ns |
8.00 ns |
- |
| TryComputeHash · Keccak-512 · AVX512F |
1KB |
4,152.0 ns |
7.25 ns |
5.66 ns |
- |
| TryComputeHash · Keccak-512 · BouncyCastle |
1KB |
4,498.2 ns |
17.91 ns |
15.88 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-512 · Managed |
1025B |
2,939.5 ns |
10.52 ns |
9.33 ns |
- |
| TryComputeHash · Keccak-512 · AVX2 |
1025B |
4,033.4 ns |
10.35 ns |
9.68 ns |
- |
| TryComputeHash · Keccak-512 · AVX512F |
1025B |
4,153.4 ns |
7.77 ns |
7.27 ns |
- |
| TryComputeHash · Keccak-512 · BouncyCastle |
1025B |
4,494.8 ns |
13.88 ns |
11.59 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-512 · Managed |
8KB |
22,062.7 ns |
75.81 ns |
67.20 ns |
- |
| TryComputeHash · Keccak-512 · AVX2 |
8KB |
30,350.5 ns |
66.48 ns |
55.51 ns |
- |
| TryComputeHash · Keccak-512 · AVX512F |
8KB |
31,273.0 ns |
51.39 ns |
48.07 ns |
- |
| TryComputeHash · Keccak-512 · BouncyCastle |
8KB |
34,214.6 ns |
120.30 ns |
112.53 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Keccak-512 · Managed |
128KB |
352,953.2 ns |
1,994.76 ns |
1,865.90 ns |
- |
| TryComputeHash · Keccak-512 · AVX2 |
128KB |
484,018.5 ns |
1,079.69 ns |
1,009.94 ns |
- |
| TryComputeHash · Keccak-512 · AVX512F |
128KB |
499,250.8 ns |
1,355.89 ns |
1,268.30 ns |
- |
| TryComputeHash · Keccak-512 · BouncyCastle |
128KB |
545,445.9 ns |
2,698.10 ns |
2,523.81 ns |
- |
SHAKE Family
SHAKE128
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SHAKE128 · Managed |
128B |
244.1 ns |
1.31 ns |
1.10 ns |
- |
| TryComputeHash · SHAKE128 · AVX2 |
128B |
315.8 ns |
0.92 ns |
0.86 ns |
- |
| TryComputeHash · SHAKE128 · AVX512F |
128B |
324.6 ns |
0.87 ns |
0.82 ns |
- |
| TryComputeHash · SHAKE128 · BouncyCastle |
128B |
334.0 ns |
1.54 ns |
1.44 ns |
- |
| TryComputeHash · SHAKE128 · OS Native |
128B |
358.6 ns |
1.62 ns |
1.52 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHAKE128 · Managed |
137B |
241.7 ns |
1.52 ns |
1.35 ns |
- |
| TryComputeHash · SHAKE128 · AVX2 |
137B |
312.8 ns |
0.63 ns |
0.55 ns |
- |
| TryComputeHash · SHAKE128 · AVX512F |
137B |
320.6 ns |
1.04 ns |
0.98 ns |
- |
| TryComputeHash · SHAKE128 · BouncyCastle |
137B |
333.0 ns |
1.64 ns |
1.53 ns |
- |
| TryComputeHash · SHAKE128 · OS Native |
137B |
358.8 ns |
2.54 ns |
2.37 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHAKE128 · Managed |
1KB |
1,485.8 ns |
4.89 ns |
4.33 ns |
- |
| TryComputeHash · SHAKE128 · OS Native |
1KB |
1,777.4 ns |
4.11 ns |
3.43 ns |
- |
| TryComputeHash · SHAKE128 · AVX2 |
1KB |
1,996.8 ns |
7.95 ns |
7.44 ns |
- |
| TryComputeHash · SHAKE128 · AVX512F |
1KB |
2,042.9 ns |
5.80 ns |
5.14 ns |
- |
| TryComputeHash · SHAKE128 · BouncyCastle |
1KB |
2,170.9 ns |
7.58 ns |
6.72 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHAKE128 · Managed |
1025B |
1,485.0 ns |
10.08 ns |
9.43 ns |
- |
| TryComputeHash · SHAKE128 · OS Native |
1025B |
1,773.7 ns |
6.55 ns |
6.12 ns |
- |
| TryComputeHash · SHAKE128 · AVX2 |
1025B |
1,992.2 ns |
5.76 ns |
5.39 ns |
- |
| TryComputeHash · SHAKE128 · AVX512F |
1025B |
2,043.4 ns |
3.80 ns |
3.55 ns |
- |
| TryComputeHash · SHAKE128 · BouncyCastle |
1025B |
2,161.2 ns |
9.79 ns |
8.68 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHAKE128 · Managed |
8KB |
9,773.8 ns |
52.26 ns |
48.89 ns |
- |
| TryComputeHash · SHAKE128 · OS Native |
8KB |
11,695.0 ns |
39.91 ns |
35.38 ns |
- |
| TryComputeHash · SHAKE128 · AVX2 |
8KB |
13,288.0 ns |
17.78 ns |
15.76 ns |
- |
| TryComputeHash · SHAKE128 · AVX512F |
8KB |
13,611.2 ns |
22.10 ns |
19.59 ns |
- |
| TryComputeHash · SHAKE128 · BouncyCastle |
8KB |
14,992.4 ns |
50.70 ns |
47.42 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHAKE128 · Managed |
128KB |
155,257.5 ns |
1,757.42 ns |
1,643.89 ns |
- |
| TryComputeHash · SHAKE128 · OS Native |
128KB |
184,993.6 ns |
1,302.82 ns |
1,218.66 ns |
- |
| TryComputeHash · SHAKE128 · AVX2 |
128KB |
211,627.5 ns |
490.62 ns |
458.93 ns |
- |
| TryComputeHash · SHAKE128 · AVX512F |
128KB |
215,844.5 ns |
401.85 ns |
375.89 ns |
- |
| TryComputeHash · SHAKE128 · BouncyCastle |
128KB |
239,279.5 ns |
951.13 ns |
889.69 ns |
- |
SHAKE256
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SHAKE256 · Managed |
128B |
250.4 ns |
1.40 ns |
1.24 ns |
- |
| TryComputeHash · SHAKE256 · AVX2 |
128B |
326.6 ns |
0.81 ns |
0.68 ns |
- |
| TryComputeHash · SHAKE256 · BouncyCastle |
128B |
331.3 ns |
2.13 ns |
1.89 ns |
- |
| TryComputeHash · SHAKE256 · AVX512F |
128B |
332.5 ns |
1.76 ns |
1.47 ns |
- |
| TryComputeHash · SHAKE256 · OS Native |
128B |
355.5 ns |
2.69 ns |
2.52 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHAKE256 · Managed |
137B |
504.5 ns |
5.16 ns |
4.83 ns |
- |
| TryComputeHash · SHAKE256 · OS Native |
137B |
590.2 ns |
2.69 ns |
2.51 ns |
- |
| TryComputeHash · SHAKE256 · BouncyCastle |
137B |
628.1 ns |
2.39 ns |
2.23 ns |
- |
| TryComputeHash · SHAKE256 · AVX2 |
137B |
653.0 ns |
2.00 ns |
1.87 ns |
- |
| TryComputeHash · SHAKE256 · AVX512F |
137B |
678.2 ns |
1.19 ns |
1.00 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHAKE256 · Managed |
1KB |
1,655.1 ns |
10.38 ns |
9.71 ns |
- |
| TryComputeHash · SHAKE256 · OS Native |
1KB |
1,992.3 ns |
8.17 ns |
7.24 ns |
- |
| TryComputeHash · SHAKE256 · AVX2 |
1KB |
2,243.3 ns |
5.24 ns |
4.64 ns |
- |
| TryComputeHash · SHAKE256 · AVX512F |
1KB |
2,301.7 ns |
7.64 ns |
6.78 ns |
- |
| TryComputeHash · SHAKE256 · BouncyCastle |
1KB |
2,460.0 ns |
10.76 ns |
10.07 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHAKE256 · Managed |
1025B |
1,658.6 ns |
13.45 ns |
11.92 ns |
- |
| TryComputeHash · SHAKE256 · OS Native |
1025B |
1,999.7 ns |
21.58 ns |
19.13 ns |
- |
| TryComputeHash · SHAKE256 · AVX2 |
1025B |
2,245.7 ns |
11.51 ns |
10.20 ns |
- |
| TryComputeHash · SHAKE256 · AVX512F |
1025B |
2,305.9 ns |
4.19 ns |
3.71 ns |
- |
| TryComputeHash · SHAKE256 · BouncyCastle |
1025B |
2,522.9 ns |
11.34 ns |
10.61 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHAKE256 · Managed |
8KB |
12,251.7 ns |
57.35 ns |
50.84 ns |
- |
| TryComputeHash · SHAKE256 · OS Native |
8KB |
14,402.5 ns |
72.91 ns |
68.20 ns |
- |
| TryComputeHash · SHAKE256 · AVX2 |
8KB |
16,495.4 ns |
47.78 ns |
44.70 ns |
- |
| TryComputeHash · SHAKE256 · AVX512F |
8KB |
16,925.4 ns |
44.77 ns |
39.69 ns |
- |
| TryComputeHash · SHAKE256 · BouncyCastle |
8KB |
18,488.5 ns |
47.01 ns |
41.68 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHAKE256 · Managed |
128KB |
189,474.0 ns |
932.69 ns |
826.80 ns |
- |
| TryComputeHash · SHAKE256 · OS Native |
128KB |
226,085.8 ns |
1,248.89 ns |
1,168.21 ns |
- |
| TryComputeHash · SHAKE256 · AVX2 |
128KB |
259,193.5 ns |
452.91 ns |
401.49 ns |
- |
| TryComputeHash · SHAKE256 · AVX512F |
128KB |
265,761.5 ns |
727.08 ns |
680.11 ns |
- |
| TryComputeHash · SHAKE256 · BouncyCastle |
128KB |
293,178.7 ns |
671.83 ns |
524.52 ns |
- |
cSHAKE Family
cSHAKE128
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · cSHAKE128 · Managed |
128B |
243.2 ns |
1.59 ns |
1.41 ns |
- |
| TryComputeHash · cSHAKE128 · AVX2 |
128B |
316.5 ns |
1.23 ns |
1.09 ns |
- |
| TryComputeHash · cSHAKE128 · AVX512F |
128B |
323.8 ns |
1.85 ns |
1.54 ns |
- |
| TryComputeHash · cSHAKE128 · BouncyCastle |
128B |
333.7 ns |
0.99 ns |
0.93 ns |
- |
|
|
|
|
|
|
| TryComputeHash · cSHAKE128 · Managed |
137B |
241.8 ns |
1.06 ns |
0.94 ns |
- |
| TryComputeHash · cSHAKE128 · AVX2 |
137B |
312.8 ns |
0.83 ns |
0.74 ns |
- |
| TryComputeHash · cSHAKE128 · AVX512F |
137B |
320.6 ns |
1.18 ns |
0.99 ns |
- |
| TryComputeHash · cSHAKE128 · BouncyCastle |
137B |
334.0 ns |
2.23 ns |
2.09 ns |
- |
|
|
|
|
|
|
| TryComputeHash · cSHAKE128 · Managed |
1KB |
1,488.3 ns |
14.73 ns |
13.06 ns |
- |
| TryComputeHash · cSHAKE128 · AVX2 |
1KB |
1,994.0 ns |
6.82 ns |
6.38 ns |
- |
| TryComputeHash · cSHAKE128 · AVX512F |
1KB |
2,047.9 ns |
5.14 ns |
4.56 ns |
- |
| TryComputeHash · cSHAKE128 · BouncyCastle |
1KB |
2,164.9 ns |
6.48 ns |
5.42 ns |
- |
|
|
|
|
|
|
| TryComputeHash · cSHAKE128 · Managed |
1025B |
1,485.1 ns |
7.98 ns |
7.47 ns |
- |
| TryComputeHash · cSHAKE128 · AVX2 |
1025B |
2,016.1 ns |
6.09 ns |
5.69 ns |
- |
| TryComputeHash · cSHAKE128 · AVX512F |
1025B |
2,041.5 ns |
5.81 ns |
5.44 ns |
- |
| TryComputeHash · cSHAKE128 · BouncyCastle |
1025B |
2,170.2 ns |
11.75 ns |
10.42 ns |
- |
|
|
|
|
|
|
| TryComputeHash · cSHAKE128 · Managed |
8KB |
9,742.4 ns |
46.32 ns |
38.68 ns |
- |
| TryComputeHash · cSHAKE128 · AVX2 |
8KB |
13,312.8 ns |
41.62 ns |
34.75 ns |
- |
| TryComputeHash · cSHAKE128 · AVX512F |
8KB |
13,600.8 ns |
23.09 ns |
21.60 ns |
- |
| TryComputeHash · cSHAKE128 · BouncyCastle |
8KB |
15,056.2 ns |
49.15 ns |
43.57 ns |
- |
|
|
|
|
|
|
| TryComputeHash · cSHAKE128 · Managed |
128KB |
154,680.8 ns |
661.00 ns |
618.30 ns |
- |
| TryComputeHash · cSHAKE128 · AVX2 |
128KB |
211,334.1 ns |
295.35 ns |
276.28 ns |
- |
| TryComputeHash · cSHAKE128 · AVX512F |
128KB |
215,808.6 ns |
543.06 ns |
481.41 ns |
- |
| TryComputeHash · cSHAKE128 · BouncyCastle |
128KB |
238,815.8 ns |
443.33 ns |
393.00 ns |
- |
cSHAKE256
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · cSHAKE256 · Managed |
128B |
250.4 ns |
1.64 ns |
1.46 ns |
- |
| TryComputeHash · cSHAKE256 · AVX2 |
128B |
325.4 ns |
0.91 ns |
0.85 ns |
- |
| TryComputeHash · cSHAKE256 · BouncyCastle |
128B |
330.1 ns |
1.96 ns |
1.83 ns |
- |
| TryComputeHash · cSHAKE256 · AVX512F |
128B |
331.7 ns |
1.01 ns |
0.89 ns |
- |
|
|
|
|
|
|
| TryComputeHash · cSHAKE256 · Managed |
137B |
502.0 ns |
3.86 ns |
3.61 ns |
- |
| TryComputeHash · cSHAKE256 · BouncyCastle |
137B |
629.8 ns |
2.69 ns |
2.38 ns |
- |
| TryComputeHash · cSHAKE256 · AVX2 |
137B |
653.0 ns |
1.38 ns |
1.22 ns |
- |
| TryComputeHash · cSHAKE256 · AVX512F |
137B |
671.7 ns |
1.09 ns |
0.85 ns |
- |
|
|
|
|
|
|
| TryComputeHash · cSHAKE256 · Managed |
1KB |
1,649.1 ns |
7.90 ns |
7.39 ns |
- |
| TryComputeHash · cSHAKE256 · AVX2 |
1KB |
2,237.4 ns |
4.41 ns |
3.68 ns |
- |
| TryComputeHash · cSHAKE256 · AVX512F |
1KB |
2,297.2 ns |
7.20 ns |
6.73 ns |
- |
| TryComputeHash · cSHAKE256 · BouncyCastle |
1KB |
2,455.3 ns |
15.41 ns |
14.42 ns |
- |
|
|
|
|
|
|
| TryComputeHash · cSHAKE256 · Managed |
1025B |
1,654.9 ns |
6.05 ns |
5.36 ns |
- |
| TryComputeHash · cSHAKE256 · AVX2 |
1025B |
2,239.4 ns |
7.12 ns |
6.66 ns |
- |
| TryComputeHash · cSHAKE256 · AVX512F |
1025B |
2,300.2 ns |
7.05 ns |
5.89 ns |
- |
| TryComputeHash · cSHAKE256 · BouncyCastle |
1025B |
2,447.7 ns |
6.97 ns |
6.18 ns |
- |
|
|
|
|
|
|
| TryComputeHash · cSHAKE256 · Managed |
8KB |
12,115.2 ns |
38.90 ns |
36.39 ns |
- |
| TryComputeHash · cSHAKE256 · AVX2 |
8KB |
16,502.7 ns |
40.67 ns |
33.96 ns |
- |
| TryComputeHash · cSHAKE256 · AVX512F |
8KB |
16,949.2 ns |
76.67 ns |
71.72 ns |
- |
| TryComputeHash · cSHAKE256 · BouncyCastle |
8KB |
18,567.2 ns |
60.53 ns |
53.66 ns |
- |
|
|
|
|
|
|
| TryComputeHash · cSHAKE256 · Managed |
128KB |
189,923.9 ns |
1,437.78 ns |
1,344.90 ns |
- |
| TryComputeHash · cSHAKE256 · AVX2 |
128KB |
259,461.3 ns |
746.12 ns |
697.92 ns |
- |
| TryComputeHash · cSHAKE256 · AVX512F |
128KB |
265,726.3 ns |
732.81 ns |
649.61 ns |
- |
| TryComputeHash · cSHAKE256 · BouncyCastle |
128KB |
292,811.5 ns |
1,825.53 ns |
1,707.61 ns |
- |
KangarooTwelve Family
KT128
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · KT128 · Managed |
128B |
154.7 ns |
1.00 ns |
0.94 ns |
- |
| TryComputeHash · KT128 · AVX2 |
128B |
181.8 ns |
0.52 ns |
0.43 ns |
- |
| TryComputeHash · KT128 · AVX512F |
128B |
186.6 ns |
0.32 ns |
0.28 ns |
- |
|
|
|
|
|
|
| TryComputeHash · KT128 · Managed |
137B |
152.1 ns |
1.04 ns |
0.92 ns |
- |
| TryComputeHash · KT128 · AVX2 |
137B |
179.6 ns |
0.83 ns |
0.73 ns |
- |
| TryComputeHash · KT128 · AVX512F |
137B |
183.1 ns |
0.62 ns |
0.58 ns |
- |
|
|
|
|
|
|
| TryComputeHash · KT128 · Managed |
1KB |
849.2 ns |
4.91 ns |
4.60 ns |
- |
| TryComputeHash · KT128 · AVX2 |
1KB |
1,086.9 ns |
4.55 ns |
3.56 ns |
- |
| TryComputeHash · KT128 · AVX512F |
1KB |
1,121.1 ns |
2.37 ns |
2.21 ns |
- |
|
|
|
|
|
|
| TryComputeHash · KT128 · Managed |
1025B |
845.5 ns |
3.88 ns |
3.63 ns |
- |
| TryComputeHash · KT128 · AVX2 |
1025B |
1,093.9 ns |
3.24 ns |
3.03 ns |
- |
| TryComputeHash · KT128 · AVX512F |
1025B |
1,138.5 ns |
2.98 ns |
2.65 ns |
- |
|
|
|
|
|
|
| TryComputeHash · KT128 · Managed |
8KB |
6,033.1 ns |
52.33 ns |
48.95 ns |
- |
| TryComputeHash · KT128 · AVX2 |
8KB |
7,705.1 ns |
24.37 ns |
22.80 ns |
- |
| TryComputeHash · KT128 · AVX512F |
8KB |
7,810.9 ns |
14.54 ns |
11.35 ns |
- |
|
|
|
|
|
|
| TryComputeHash · KT128 · Managed |
128KB |
88,617.5 ns |
511.75 ns |
453.66 ns |
- |
| TryComputeHash · KT128 · AVX2 |
128KB |
115,695.7 ns |
168.04 ns |
157.19 ns |
- |
| TryComputeHash · KT128 · AVX512F |
128KB |
118,452.4 ns |
186.81 ns |
165.61 ns |
- |
KT256
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · KT256 · Managed |
128B |
164.0 ns |
0.76 ns |
0.67 ns |
- |
| TryComputeHash · KT256 · AVX2 |
128B |
190.2 ns |
0.66 ns |
0.62 ns |
- |
| TryComputeHash · KT256 · AVX512F |
128B |
198.1 ns |
0.41 ns |
0.34 ns |
- |
|
|
|
|
|
|
| TryComputeHash · KT256 · Managed |
137B |
315.0 ns |
2.45 ns |
2.29 ns |
- |
| TryComputeHash · KT256 · AVX2 |
137B |
371.3 ns |
0.87 ns |
0.77 ns |
- |
| TryComputeHash · KT256 · AVX512F |
137B |
381.1 ns |
0.46 ns |
0.43 ns |
- |
|
|
|
|
|
|
| TryComputeHash · KT256 · Managed |
1KB |
924.1 ns |
5.31 ns |
4.97 ns |
- |
| TryComputeHash · KT256 · AVX2 |
1KB |
1,204.1 ns |
4.60 ns |
4.07 ns |
- |
| TryComputeHash · KT256 · AVX512F |
1KB |
1,237.3 ns |
3.59 ns |
3.36 ns |
- |
|
|
|
|
|
|
| TryComputeHash · KT256 · Managed |
1025B |
923.8 ns |
5.25 ns |
4.91 ns |
- |
| TryComputeHash · KT256 · AVX2 |
1025B |
1,204.7 ns |
2.09 ns |
1.95 ns |
- |
| TryComputeHash · KT256 · AVX512F |
1025B |
1,241.4 ns |
3.96 ns |
3.70 ns |
- |
|
|
|
|
|
|
| TryComputeHash · KT256 · Managed |
8KB |
6,901.0 ns |
31.08 ns |
29.08 ns |
- |
| TryComputeHash · KT256 · AVX2 |
8KB |
9,219.4 ns |
16.63 ns |
15.56 ns |
- |
| TryComputeHash · KT256 · AVX512F |
8KB |
9,648.6 ns |
34.03 ns |
30.17 ns |
- |
|
|
|
|
|
|
| TryComputeHash · KT256 · Managed |
128KB |
108,866.3 ns |
782.88 ns |
732.30 ns |
- |
| TryComputeHash · KT256 · AVX2 |
128KB |
142,240.1 ns |
233.37 ns |
194.87 ns |
- |
| TryComputeHash · KT256 · AVX512F |
128KB |
146,595.3 ns |
372.78 ns |
330.46 ns |
- |
TurboSHAKE Family
TurboSHAKE128
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · TurboSHAKE128-32 · Managed |
128B |
153.8 ns |
1.35 ns |
1.26 ns |
- |
| TryComputeHash · TurboSHAKE128-32 · AVX2 |
128B |
177.1 ns |
0.88 ns |
0.78 ns |
- |
| TryComputeHash · TurboSHAKE128-32 · AVX512F |
128B |
182.6 ns |
0.47 ns |
0.44 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE128-32 · Managed |
137B |
149.6 ns |
1.14 ns |
1.01 ns |
- |
| TryComputeHash · TurboSHAKE128-32 · AVX2 |
137B |
175.1 ns |
1.46 ns |
1.29 ns |
- |
| TryComputeHash · TurboSHAKE128-32 · AVX512F |
137B |
179.4 ns |
1.22 ns |
1.08 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE128-32 · Managed |
1KB |
844.5 ns |
2.38 ns |
2.22 ns |
- |
| TryComputeHash · TurboSHAKE128-32 · AVX2 |
1KB |
1,090.5 ns |
4.94 ns |
4.62 ns |
- |
| TryComputeHash · TurboSHAKE128-32 · AVX512F |
1KB |
1,128.0 ns |
7.23 ns |
6.41 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE128-32 · Managed |
1025B |
847.1 ns |
4.36 ns |
3.64 ns |
- |
| TryComputeHash · TurboSHAKE128-32 · AVX2 |
1025B |
1,089.0 ns |
3.26 ns |
2.89 ns |
- |
| TryComputeHash · TurboSHAKE128-32 · AVX512F |
1025B |
1,122.8 ns |
3.56 ns |
2.97 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE128-32 · Managed |
8KB |
5,316.5 ns |
33.30 ns |
31.15 ns |
- |
| TryComputeHash · TurboSHAKE128-32 · AVX2 |
8KB |
6,959.3 ns |
10.06 ns |
9.41 ns |
- |
| TryComputeHash · TurboSHAKE128-32 · AVX512F |
8KB |
7,174.9 ns |
16.49 ns |
15.42 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE128-32 · Managed |
128KB |
83,788.8 ns |
288.72 ns |
255.94 ns |
- |
| TryComputeHash · TurboSHAKE128-32 · AVX2 |
128KB |
110,369.2 ns |
219.84 ns |
183.57 ns |
- |
| TryComputeHash · TurboSHAKE128-32 · AVX512F |
128KB |
113,634.3 ns |
162.63 ns |
144.17 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE128-64 · Managed |
128B |
172.4 ns |
0.65 ns |
0.54 ns |
- |
| TryComputeHash · TurboSHAKE128-64 · AVX2 |
128B |
197.8 ns |
0.69 ns |
0.54 ns |
- |
| TryComputeHash · TurboSHAKE128-64 · AVX512F |
128B |
202.7 ns |
0.60 ns |
0.56 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE128-64 · Managed |
137B |
171.9 ns |
1.61 ns |
1.35 ns |
- |
| TryComputeHash · TurboSHAKE128-64 · AVX2 |
137B |
194.2 ns |
0.62 ns |
0.58 ns |
- |
| TryComputeHash · TurboSHAKE128-64 · AVX512F |
137B |
198.7 ns |
0.28 ns |
0.25 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE128-64 · Managed |
1KB |
864.2 ns |
3.93 ns |
3.68 ns |
- |
| TryComputeHash · TurboSHAKE128-64 · AVX2 |
1KB |
1,110.7 ns |
4.08 ns |
3.61 ns |
- |
| TryComputeHash · TurboSHAKE128-64 · AVX512F |
1KB |
1,147.3 ns |
4.06 ns |
3.60 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE128-64 · Managed |
1025B |
865.2 ns |
3.31 ns |
2.93 ns |
- |
| TryComputeHash · TurboSHAKE128-64 · AVX2 |
1025B |
1,111.6 ns |
5.86 ns |
5.48 ns |
- |
| TryComputeHash · TurboSHAKE128-64 · AVX512F |
1025B |
1,147.2 ns |
6.65 ns |
5.19 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE128-64 · Managed |
8KB |
5,314.3 ns |
18.66 ns |
15.58 ns |
- |
| TryComputeHash · TurboSHAKE128-64 · AVX2 |
8KB |
6,983.6 ns |
7.02 ns |
6.22 ns |
- |
| TryComputeHash · TurboSHAKE128-64 · AVX512F |
8KB |
7,187.0 ns |
7.60 ns |
6.35 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE128-64 · Managed |
128KB |
83,521.0 ns |
307.33 ns |
272.44 ns |
- |
| TryComputeHash · TurboSHAKE128-64 · AVX2 |
128KB |
110,149.1 ns |
120.24 ns |
93.88 ns |
- |
| TryComputeHash · TurboSHAKE128-64 · AVX512F |
128KB |
113,535.2 ns |
214.85 ns |
179.41 ns |
- |
TurboSHAKE256
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · TurboSHAKE256 · Managed |
128B |
159.1 ns |
1.12 ns |
1.05 ns |
- |
| TryComputeHash · TurboSHAKE256 · AVX2 |
128B |
185.8 ns |
0.39 ns |
0.33 ns |
- |
| TryComputeHash · TurboSHAKE256 · AVX512F |
128B |
189.8 ns |
0.32 ns |
0.28 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE256 · Managed |
137B |
320.7 ns |
1.72 ns |
1.61 ns |
- |
| TryComputeHash · TurboSHAKE256 · AVX2 |
137B |
375.3 ns |
0.92 ns |
0.81 ns |
- |
| TryComputeHash · TurboSHAKE256 · AVX512F |
137B |
388.2 ns |
1.22 ns |
1.15 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE256 · Managed |
1KB |
927.5 ns |
6.68 ns |
6.25 ns |
- |
| TryComputeHash · TurboSHAKE256 · AVX2 |
1KB |
1,205.3 ns |
3.79 ns |
3.54 ns |
- |
| TryComputeHash · TurboSHAKE256 · AVX512F |
1KB |
1,244.8 ns |
3.23 ns |
3.03 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE256 · Managed |
1025B |
923.7 ns |
4.80 ns |
4.49 ns |
- |
| TryComputeHash · TurboSHAKE256 · AVX2 |
1025B |
1,202.0 ns |
4.87 ns |
4.56 ns |
- |
| TryComputeHash · TurboSHAKE256 · AVX512F |
1025B |
1,244.2 ns |
4.86 ns |
4.06 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE256 · Managed |
8KB |
6,543.2 ns |
38.09 ns |
35.63 ns |
- |
| TryComputeHash · TurboSHAKE256 · AVX2 |
8KB |
8,599.4 ns |
18.75 ns |
17.54 ns |
- |
| TryComputeHash · TurboSHAKE256 · AVX512F |
8KB |
8,911.2 ns |
19.66 ns |
17.43 ns |
- |
|
|
|
|
|
|
| TryComputeHash · TurboSHAKE256 · Managed |
128KB |
101,215.2 ns |
338.83 ns |
300.36 ns |
- |
| TryComputeHash · TurboSHAKE256 · AVX2 |
128KB |
134,094.9 ns |
360.29 ns |
319.39 ns |
- |
| TryComputeHash · TurboSHAKE256 · AVX512F |
128KB |
139,133.1 ns |
514.02 ns |
455.66 ns |
- |
BLAKE2 Family
BouncyCastle leads the BLAKE2 benchmarks due to highly optimized native code. The managed AVX2/SSSE3/SSE2 SIMD implementations are competitive (within ~15% of BouncyCastle or even), while the scalar fallback is significantly slower (~3.5× for BLAKE2b, ~4× for BLAKE2s).
Key observations:
- BouncyCastle: Highly optimized reference
- Managed AVX2: Competitive SIMD implementation
- Managed scalar: Fallback for non-SIMD platforms
BLAKE2b-256
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · BLAKE2b-256 · BouncyCastle |
128B |
98.77 ns |
0.182 ns |
0.161 ns |
- |
| TryComputeHash · BLAKE2b-256 · AVX2 |
128B |
107.30 ns |
0.247 ns |
0.231 ns |
- |
| TryComputeHash · BLAKE2b-256 · Managed |
128B |
364.75 ns |
1.445 ns |
1.352 ns |
- |
| TryComputeHash · BLAKE2b-256 · BLAKE2b-256 (Konscious) |
128B |
486.42 ns |
2.493 ns |
2.332 ns |
1120 B |
|
|
|
|
|
|
| TryComputeHash · BLAKE2b-256 · BouncyCastle |
137B |
186.87 ns |
0.528 ns |
0.494 ns |
- |
| TryComputeHash · BLAKE2b-256 · AVX2 |
137B |
204.71 ns |
0.640 ns |
0.599 ns |
- |
| TryComputeHash · BLAKE2b-256 · Managed |
137B |
715.95 ns |
4.027 ns |
3.767 ns |
- |
| TryComputeHash · BLAKE2b-256 · BLAKE2b-256 (Konscious) |
137B |
909.54 ns |
1.678 ns |
1.401 ns |
1136 B |
|
|
|
|
|
|
| TryComputeHash · BLAKE2b-256 · BouncyCastle |
1KB |
717.79 ns |
2.119 ns |
1.982 ns |
- |
| TryComputeHash · BLAKE2b-256 · AVX2 |
1KB |
819.39 ns |
2.971 ns |
2.779 ns |
- |
| TryComputeHash · BLAKE2b-256 · Managed |
1KB |
2,819.30 ns |
6.932 ns |
6.145 ns |
- |
| TryComputeHash · BLAKE2b-256 · BLAKE2b-256 (Konscious) |
1KB |
2,993.45 ns |
4.124 ns |
3.655 ns |
2016 B |
|
|
|
|
|
|
| TryComputeHash · BLAKE2b-256 · BouncyCastle |
1025B |
801.14 ns |
2.909 ns |
2.721 ns |
- |
| TryComputeHash · BLAKE2b-256 · AVX2 |
1025B |
924.95 ns |
4.650 ns |
4.349 ns |
- |
| TryComputeHash · BLAKE2b-256 · Managed |
1025B |
3,172.66 ns |
10.301 ns |
9.635 ns |
- |
| TryComputeHash · BLAKE2b-256 · BLAKE2b-256 (Konscious) |
1025B |
3,413.68 ns |
11.563 ns |
10.816 ns |
2024 B |
|
|
|
|
|
|
| TryComputeHash · BLAKE2b-256 · BouncyCastle |
8KB |
5,639.65 ns |
16.957 ns |
14.160 ns |
- |
| TryComputeHash · BLAKE2b-256 · AVX2 |
8KB |
6,524.74 ns |
18.712 ns |
16.588 ns |
- |
| TryComputeHash · BLAKE2b-256 · Managed |
8KB |
22,588.89 ns |
47.420 ns |
42.036 ns |
- |
| TryComputeHash · BLAKE2b-256 · BLAKE2b-256 (Konscious) |
8KB |
23,084.37 ns |
74.722 ns |
69.895 ns |
9184 B |
|
|
|
|
|
|
| TryComputeHash · BLAKE2b-256 · BouncyCastle |
128KB |
88,882.87 ns |
191.387 ns |
159.816 ns |
- |
| TryComputeHash · BLAKE2b-256 · AVX2 |
128KB |
104,729.18 ns |
158.411 ns |
148.178 ns |
- |
| TryComputeHash · BLAKE2b-256 · Managed |
128KB |
360,613.04 ns |
767.925 ns |
641.252 ns |
- |
| TryComputeHash · BLAKE2b-256 · BLAKE2b-256 (Konscious) |
128KB |
394,263.23 ns |
1,333.598 ns |
1,247.448 ns |
132078 B |
BLAKE2b-512
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · BLAKE2b-512 · BouncyCastle |
128B |
102.9 ns |
0.26 ns |
0.25 ns |
- |
| TryComputeHash · BLAKE2b-512 · AVX2 |
128B |
108.4 ns |
0.32 ns |
0.29 ns |
- |
| TryComputeHash · BLAKE2b-512 · Managed |
128B |
365.6 ns |
1.23 ns |
1.15 ns |
- |
| TryComputeHash · BLAKE2b-512 · BLAKE2b-512 (Konscious) |
128B |
502.7 ns |
3.95 ns |
3.69 ns |
1216 B |
|
|
|
|
|
|
| TryComputeHash · BLAKE2b-512 · BouncyCastle |
137B |
190.1 ns |
0.86 ns |
0.81 ns |
- |
| TryComputeHash · BLAKE2b-512 · AVX2 |
137B |
205.8 ns |
0.46 ns |
0.41 ns |
- |
| TryComputeHash · BLAKE2b-512 · Managed |
137B |
713.0 ns |
1.53 ns |
1.28 ns |
- |
| TryComputeHash · BLAKE2b-512 · BLAKE2b-512 (Konscious) |
137B |
913.2 ns |
2.70 ns |
2.52 ns |
1232 B |
|
|
|
|
|
|
| TryComputeHash · BLAKE2b-512 · BouncyCastle |
1KB |
718.2 ns |
1.57 ns |
1.31 ns |
- |
| TryComputeHash · BLAKE2b-512 · AVX2 |
1KB |
823.2 ns |
3.79 ns |
3.55 ns |
- |
| TryComputeHash · BLAKE2b-512 · Managed |
1KB |
2,823.3 ns |
7.98 ns |
7.46 ns |
- |
| TryComputeHash · BLAKE2b-512 · BLAKE2b-512 (Konscious) |
1KB |
3,030.5 ns |
7.91 ns |
7.40 ns |
2112 B |
|
|
|
|
|
|
| TryComputeHash · BLAKE2b-512 · BouncyCastle |
1025B |
805.0 ns |
1.76 ns |
1.65 ns |
- |
| TryComputeHash · BLAKE2b-512 · AVX2 |
1025B |
921.8 ns |
7.44 ns |
6.96 ns |
- |
| TryComputeHash · BLAKE2b-512 · Managed |
1025B |
3,179.3 ns |
11.48 ns |
10.74 ns |
- |
| TryComputeHash · BLAKE2b-512 · BLAKE2b-512 (Konscious) |
1025B |
3,433.9 ns |
12.32 ns |
11.52 ns |
2120 B |
|
|
|
|
|
|
| TryComputeHash · BLAKE2b-512 · BouncyCastle |
8KB |
5,594.6 ns |
9.53 ns |
8.92 ns |
- |
| TryComputeHash · BLAKE2b-512 · AVX2 |
8KB |
6,538.1 ns |
17.74 ns |
16.59 ns |
- |
| TryComputeHash · BLAKE2b-512 · Managed |
8KB |
22,439.4 ns |
40.78 ns |
31.84 ns |
- |
| TryComputeHash · BLAKE2b-512 · BLAKE2b-512 (Konscious) |
8KB |
23,134.7 ns |
47.25 ns |
39.46 ns |
9280 B |
|
|
|
|
|
|
| TryComputeHash · BLAKE2b-512 · BouncyCastle |
128KB |
89,132.1 ns |
269.63 ns |
239.02 ns |
- |
| TryComputeHash · BLAKE2b-512 · AVX2 |
128KB |
104,527.7 ns |
174.19 ns |
154.42 ns |
- |
| TryComputeHash · BLAKE2b-512 · Managed |
128KB |
359,655.5 ns |
700.37 ns |
584.84 ns |
- |
| TryComputeHash · BLAKE2b-512 · BLAKE2b-512 (Konscious) |
128KB |
397,470.6 ns |
1,673.69 ns |
1,565.57 ns |
132174 B |
BLAKE2s-128
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · BLAKE2s-128 · Ssse3 |
128B |
156.6 ns |
0.24 ns |
0.20 ns |
- |
| TryComputeHash · BLAKE2s-128 · AVX2 |
128B |
156.9 ns |
0.70 ns |
0.65 ns |
- |
| TryComputeHash · BLAKE2s-128 · Sse2 |
128B |
160.0 ns |
0.16 ns |
0.13 ns |
- |
| TryComputeHash · BLAKE2s-128 · BouncyCastle |
128B |
162.3 ns |
2.45 ns |
2.29 ns |
- |
| TryComputeHash · BLAKE2s-128 · Managed |
128B |
593.0 ns |
3.78 ns |
3.53 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2s-128 · AVX2 |
137B |
235.4 ns |
0.53 ns |
0.50 ns |
- |
| TryComputeHash · BLAKE2s-128 · Ssse3 |
137B |
239.2 ns |
0.54 ns |
0.50 ns |
- |
| TryComputeHash · BLAKE2s-128 · BouncyCastle |
137B |
243.1 ns |
1.59 ns |
1.24 ns |
- |
| TryComputeHash · BLAKE2s-128 · Sse2 |
137B |
244.0 ns |
0.18 ns |
0.16 ns |
- |
| TryComputeHash · BLAKE2s-128 · Managed |
137B |
883.9 ns |
3.99 ns |
3.73 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2s-128 · AVX2 |
1KB |
1,203.2 ns |
2.61 ns |
2.31 ns |
- |
| TryComputeHash · BLAKE2s-128 · Ssse3 |
1KB |
1,215.2 ns |
1.00 ns |
0.94 ns |
- |
| TryComputeHash · BLAKE2s-128 · BouncyCastle |
1KB |
1,225.0 ns |
3.62 ns |
3.39 ns |
- |
| TryComputeHash · BLAKE2s-128 · Sse2 |
1KB |
1,241.5 ns |
1.66 ns |
1.55 ns |
- |
| TryComputeHash · BLAKE2s-128 · Managed |
1KB |
4,644.0 ns |
23.02 ns |
21.53 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2s-128 · AVX2 |
1025B |
1,287.3 ns |
2.71 ns |
2.27 ns |
- |
| TryComputeHash · BLAKE2s-128 · Ssse3 |
1025B |
1,296.1 ns |
0.91 ns |
0.76 ns |
- |
| TryComputeHash · BLAKE2s-128 · BouncyCastle |
1025B |
1,299.3 ns |
2.93 ns |
2.74 ns |
- |
| TryComputeHash · BLAKE2s-128 · Sse2 |
1025B |
1,324.3 ns |
1.17 ns |
1.10 ns |
- |
| TryComputeHash · BLAKE2s-128 · Managed |
1025B |
4,925.0 ns |
22.87 ns |
20.27 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2s-128 · AVX2 |
8KB |
9,592.6 ns |
15.91 ns |
14.10 ns |
- |
| TryComputeHash · BLAKE2s-128 · BouncyCastle |
8KB |
9,659.6 ns |
26.50 ns |
22.13 ns |
- |
| TryComputeHash · BLAKE2s-128 · Ssse3 |
8KB |
9,680.3 ns |
10.52 ns |
9.84 ns |
- |
| TryComputeHash · BLAKE2s-128 · Sse2 |
8KB |
9,889.1 ns |
10.53 ns |
9.34 ns |
- |
| TryComputeHash · BLAKE2s-128 · Managed |
8KB |
37,084.5 ns |
162.22 ns |
151.74 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2s-128 · BouncyCastle |
128KB |
153,650.0 ns |
491.31 ns |
435.53 ns |
- |
| TryComputeHash · BLAKE2s-128 · AVX2 |
128KB |
153,760.9 ns |
565.84 ns |
529.29 ns |
- |
| TryComputeHash · BLAKE2s-128 · Ssse3 |
128KB |
154,896.7 ns |
220.16 ns |
205.94 ns |
- |
| TryComputeHash · BLAKE2s-128 · Sse2 |
128KB |
158,149.3 ns |
191.20 ns |
178.85 ns |
- |
| TryComputeHash · BLAKE2s-128 · Managed |
128KB |
591,773.3 ns |
1,006.67 ns |
941.64 ns |
- |
BLAKE2s-256
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · BLAKE2s-256 · Ssse3 |
128B |
157.7 ns |
0.28 ns |
0.26 ns |
- |
| TryComputeHash · BLAKE2s-256 · AVX2 |
128B |
158.0 ns |
0.38 ns |
0.33 ns |
- |
| TryComputeHash · BLAKE2s-256 · Sse2 |
128B |
160.8 ns |
0.21 ns |
0.19 ns |
- |
| TryComputeHash · BLAKE2s-256 · BouncyCastle |
128B |
161.7 ns |
0.70 ns |
0.62 ns |
- |
| TryComputeHash · BLAKE2s-256 · Managed |
128B |
594.6 ns |
3.66 ns |
3.43 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2s-256 · AVX2 |
137B |
236.1 ns |
1.17 ns |
1.10 ns |
- |
| TryComputeHash · BLAKE2s-256 · Ssse3 |
137B |
239.7 ns |
0.30 ns |
0.28 ns |
- |
| TryComputeHash · BLAKE2s-256 · Sse2 |
137B |
244.5 ns |
0.29 ns |
0.26 ns |
- |
| TryComputeHash · BLAKE2s-256 · BouncyCastle |
137B |
245.6 ns |
0.48 ns |
0.43 ns |
- |
| TryComputeHash · BLAKE2s-256 · Managed |
137B |
883.9 ns |
4.74 ns |
4.43 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2s-256 · AVX2 |
1KB |
1,206.2 ns |
2.89 ns |
2.56 ns |
- |
| TryComputeHash · BLAKE2s-256 · Ssse3 |
1KB |
1,215.5 ns |
1.54 ns |
1.44 ns |
- |
| TryComputeHash · BLAKE2s-256 · BouncyCastle |
1KB |
1,230.9 ns |
3.97 ns |
3.52 ns |
- |
| TryComputeHash · BLAKE2s-256 · Sse2 |
1KB |
1,240.8 ns |
1.12 ns |
0.99 ns |
- |
| TryComputeHash · BLAKE2s-256 · Managed |
1KB |
4,631.9 ns |
15.03 ns |
13.32 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2s-256 · AVX2 |
1025B |
1,286.8 ns |
5.32 ns |
4.97 ns |
- |
| TryComputeHash · BLAKE2s-256 · Ssse3 |
1025B |
1,297.5 ns |
1.10 ns |
1.03 ns |
- |
| TryComputeHash · BLAKE2s-256 · BouncyCastle |
1025B |
1,305.5 ns |
4.15 ns |
3.47 ns |
- |
| TryComputeHash · BLAKE2s-256 · Sse2 |
1025B |
1,325.0 ns |
0.99 ns |
0.92 ns |
- |
| TryComputeHash · BLAKE2s-256 · Managed |
1025B |
4,926.4 ns |
11.71 ns |
10.38 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2s-256 · AVX2 |
8KB |
9,621.8 ns |
42.54 ns |
39.79 ns |
- |
| TryComputeHash · BLAKE2s-256 · BouncyCastle |
8KB |
9,672.1 ns |
23.61 ns |
20.93 ns |
- |
| TryComputeHash · BLAKE2s-256 · Ssse3 |
8KB |
9,679.6 ns |
11.17 ns |
10.44 ns |
- |
| TryComputeHash · BLAKE2s-256 · Sse2 |
8KB |
9,885.4 ns |
8.98 ns |
8.40 ns |
- |
| TryComputeHash · BLAKE2s-256 · Managed |
8KB |
36,998.4 ns |
113.31 ns |
100.45 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE2s-256 · AVX2 |
128KB |
153,491.8 ns |
438.60 ns |
366.25 ns |
- |
| TryComputeHash · BLAKE2s-256 · BouncyCastle |
128KB |
153,809.1 ns |
341.77 ns |
302.97 ns |
- |
| TryComputeHash · BLAKE2s-256 · Ssse3 |
128KB |
154,941.4 ns |
165.67 ns |
154.97 ns |
- |
| TryComputeHash · BLAKE2s-256 · Sse2 |
128KB |
158,103.2 ns |
176.54 ns |
165.14 ns |
- |
| TryComputeHash · BLAKE2s-256 · Managed |
128KB |
592,589.6 ns |
1,672.05 ns |
1,482.23 ns |
- |
BLAKE3
BLAKE3 is a modern hash function designed for extreme parallelism and speed. It can leverage tree hashing to process multiple chunks simultaneously, making it ideal for hashing large files. The Native (Rust) variant uses blake3-dotnet, which wraps the official Rust implementation via P/Invoke—this is the fastest option and recommended when native dependencies are acceptable.
The managed CryptoHives implementation uses SSSE3 SIMD instructions with optimized state management. At small inputs (128B-1kb), the SSSE3 path is ~1.4× slower than the native Rust implementation and ~9× faster than BouncyCastle. At large inputs (128KB), the gap widens to ~12× because the native implementation parallelizes chunk compression across SIMD lanes (AVX2/AVX-512 hash_many), while the managed version processes chunks sequentially.
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · BLAKE3 · Native |
128B |
101.4 ns |
1.43 ns |
1.33 ns |
- |
| TryComputeHash · BLAKE3 · Ssse3 |
128B |
143.9 ns |
1.93 ns |
1.81 ns |
- |
| TryComputeHash · BLAKE3 · Managed |
128B |
542.1 ns |
0.99 ns |
0.78 ns |
- |
| TryComputeHash · BLAKE3 · BouncyCastle |
128B |
1,268.0 ns |
4.94 ns |
4.62 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE3 · Native |
137B |
150.5 ns |
0.31 ns |
0.29 ns |
- |
| TryComputeHash · BLAKE3 · Ssse3 |
137B |
221.8 ns |
1.05 ns |
0.98 ns |
- |
| TryComputeHash · BLAKE3 · Managed |
137B |
800.4 ns |
3.44 ns |
3.21 ns |
- |
| TryComputeHash · BLAKE3 · BouncyCastle |
137B |
1,876.7 ns |
4.64 ns |
4.11 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE3 · Native |
1KB |
745.5 ns |
1.46 ns |
1.36 ns |
- |
| TryComputeHash · BLAKE3 · Ssse3 |
1KB |
1,073.6 ns |
3.03 ns |
2.84 ns |
- |
| TryComputeHash · BLAKE3 · Managed |
1KB |
4,212.7 ns |
19.71 ns |
17.47 ns |
- |
| TryComputeHash · BLAKE3 · BouncyCastle |
1KB |
9,458.4 ns |
32.20 ns |
30.12 ns |
- |
|
|
|
|
|
|
| TryComputeHash · BLAKE3 · Native |
1025B |
849.1 ns |
1.93 ns |
1.71 ns |
- |
| TryComputeHash · BLAKE3 · Ssse3 |
1025B |
1,225.7 ns |
2.72 ns |
2.27 ns |
- |
| TryComputeHash · BLAKE3 · Managed |
1025B |
4,714.9 ns |
10.05 ns |
8.91 ns |
- |
| TryComputeHash · BLAKE3 · BouncyCastle |
1025B |
10,585.0 ns |
32.92 ns |
30.79 ns |
56 B |
|
|
|
|
|
|
| TryComputeHash · BLAKE3 · Native |
8KB |
1,166.5 ns |
2.57 ns |
2.28 ns |
- |
| TryComputeHash · BLAKE3 · Ssse3 |
8KB |
10,208.8 ns |
50.20 ns |
44.50 ns |
- |
| TryComputeHash · BLAKE3 · Managed |
8KB |
35,299.8 ns |
150.17 ns |
133.12 ns |
- |
| TryComputeHash · BLAKE3 · BouncyCastle |
8KB |
81,207.4 ns |
171.09 ns |
151.67 ns |
392 B |
|
|
|
|
|
|
| TryComputeHash · BLAKE3 · Native |
128KB |
14,276.1 ns |
29.44 ns |
22.99 ns |
- |
| TryComputeHash · BLAKE3 · Ssse3 |
128KB |
163,229.8 ns |
553.37 ns |
462.09 ns |
- |
| TryComputeHash · BLAKE3 · Managed |
128KB |
564,676.6 ns |
1,373.35 ns |
1,146.81 ns |
- |
| TryComputeHash · BLAKE3 · BouncyCastle |
128KB |
1,281,956.7 ns |
1,637.00 ns |
1,366.97 ns |
7112 B |
Ascon Family
Ascon is a lightweight authenticated encryption and hashing family, selected as the NIST Lightweight Cryptography standard in 2023. It is designed for constrained environments (IoT, embedded systems) where resources are limited but security is paramount.
The managed implementation is approximately 33% faster than BouncyCastle across all input sizes, with consistent zero-allocation behavior regardless of input size—ideal for memory-constrained environments.
Ascon-Hash256
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · Ascon-Hash256 · Managed |
128B |
565.4 ns |
3.23 ns |
2.86 ns |
- |
| TryComputeHash · Ascon-Hash256 · BouncyCastle |
128B |
761.2 ns |
2.59 ns |
2.43 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Ascon-Hash256 · Managed |
137B |
597.3 ns |
2.11 ns |
1.97 ns |
- |
| TryComputeHash · Ascon-Hash256 · BouncyCastle |
137B |
803.2 ns |
2.82 ns |
2.63 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Ascon-Hash256 · Managed |
1KB |
3,662.4 ns |
13.94 ns |
13.04 ns |
- |
| TryComputeHash · Ascon-Hash256 · BouncyCastle |
1KB |
4,957.2 ns |
21.35 ns |
19.97 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Ascon-Hash256 · Managed |
1025B |
3,661.7 ns |
16.07 ns |
15.03 ns |
- |
| TryComputeHash · Ascon-Hash256 · BouncyCastle |
1025B |
4,949.9 ns |
18.97 ns |
15.84 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Ascon-Hash256 · Managed |
8KB |
28,385.4 ns |
72.01 ns |
67.35 ns |
- |
| TryComputeHash · Ascon-Hash256 · BouncyCastle |
8KB |
38,337.8 ns |
76.00 ns |
63.46 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Ascon-Hash256 · Managed |
128KB |
452,199.2 ns |
1,165.82 ns |
973.51 ns |
- |
| TryComputeHash · Ascon-Hash256 · BouncyCastle |
128KB |
612,759.8 ns |
1,521.26 ns |
1,348.56 ns |
- |
Ascon-XOF128
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · Ascon-XOF128 · Managed |
128B |
566.8 ns |
2.44 ns |
2.28 ns |
- |
| TryComputeHash · Ascon-XOF128 · BouncyCastle |
128B |
769.2 ns |
2.82 ns |
2.64 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Ascon-XOF128 · Managed |
137B |
598.4 ns |
1.79 ns |
1.50 ns |
- |
| TryComputeHash · Ascon-XOF128 · BouncyCastle |
137B |
799.3 ns |
3.25 ns |
3.04 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Ascon-XOF128 · Managed |
1KB |
3,666.3 ns |
9.90 ns |
8.78 ns |
- |
| TryComputeHash · Ascon-XOF128 · BouncyCastle |
1KB |
4,896.0 ns |
10.00 ns |
8.35 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Ascon-XOF128 · Managed |
1025B |
3,670.9 ns |
11.41 ns |
10.67 ns |
- |
| TryComputeHash · Ascon-XOF128 · BouncyCastle |
1025B |
4,893.9 ns |
15.05 ns |
13.34 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Ascon-XOF128 · Managed |
8KB |
28,353.1 ns |
48.73 ns |
43.20 ns |
- |
| TryComputeHash · Ascon-XOF128 · BouncyCastle |
8KB |
38,066.7 ns |
157.73 ns |
139.83 ns |
- |
|
|
|
|
|
|
| TryComputeHash · Ascon-XOF128 · Managed |
128KB |
453,383.1 ns |
1,562.41 ns |
1,461.48 ns |
- |
| TryComputeHash · Ascon-XOF128 · BouncyCastle |
128KB |
606,453.8 ns |
2,086.59 ns |
1,849.71 ns |
- |
KMAC Family
KMAC (Keccak Message Authentication Code) is defined in NIST SP 800-185 and provides a Keccak-based keyed hash function. Like SHA-3, SHAKE, and cSHAKE, KMAC shares the same optimized Keccak permutation core, benefiting from the scalar optimizations described in the Keccak section above.
The managed CryptoHives implementation is the fastest at all input sizes, outperforming the OS-provided KMAC by ~30% and BouncyCastle by ~48%. This advantage comes from the highly optimized scalar Keccak core that benefits both the hash computation and the KMAC-specific cSHAKE encoding overhead.
KMAC128
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · KMAC-128 · Managed |
128B |
663.0 ns |
4.79 ns |
4.48 ns |
- |
| TryComputeHash · KMAC-128 · OS Native |
128B |
1,002.6 ns |
4.56 ns |
4.05 ns |
184 B |
| TryComputeHash · KMAC-128 · BouncyCastle |
128B |
1,968.0 ns |
11.58 ns |
10.27 ns |
256 B |
|
|
|
|
|
|
| TryComputeHash · KMAC-128 · Managed |
137B |
658.5 ns |
3.18 ns |
2.97 ns |
- |
| TryComputeHash · KMAC-128 · OS Native |
137B |
1,021.5 ns |
9.15 ns |
8.11 ns |
200 B |
| TryComputeHash · KMAC-128 · BouncyCastle |
137B |
1,964.5 ns |
7.34 ns |
6.51 ns |
256 B |
|
|
|
|
|
|
| TryComputeHash · KMAC-128 · Managed |
1KB |
1,890.0 ns |
6.21 ns |
5.50 ns |
- |
| TryComputeHash · KMAC-128 · OS Native |
1KB |
2,480.8 ns |
9.25 ns |
8.66 ns |
1080 B |
| TryComputeHash · KMAC-128 · BouncyCastle |
1KB |
3,778.8 ns |
22.56 ns |
21.10 ns |
256 B |
|
|
|
|
|
|
| TryComputeHash · KMAC-128 · Managed |
1025B |
1,890.2 ns |
7.46 ns |
6.98 ns |
- |
| TryComputeHash · KMAC-128 · OS Native |
1025B |
2,491.5 ns |
14.28 ns |
13.36 ns |
1088 B |
| TryComputeHash · KMAC-128 · BouncyCastle |
1025B |
3,799.9 ns |
21.49 ns |
20.10 ns |
256 B |
|
|
|
|
|
|
| TryComputeHash · KMAC-128 · Managed |
8KB |
10,151.4 ns |
46.49 ns |
43.49 ns |
- |
| TryComputeHash · KMAC-128 · OS Native |
8KB |
12,855.6 ns |
41.59 ns |
34.73 ns |
8248 B |
| TryComputeHash · KMAC-128 · BouncyCastle |
8KB |
16,693.3 ns |
84.67 ns |
75.06 ns |
256 B |
|
|
|
|
|
|
| TryComputeHash · KMAC-128 · Managed |
128KB |
154,955.0 ns |
883.94 ns |
783.59 ns |
- |
| TryComputeHash · KMAC-128 · OS Native |
128KB |
223,594.4 ns |
1,454.16 ns |
1,360.22 ns |
131151 B |
| TryComputeHash · KMAC-128 · BouncyCastle |
128KB |
240,585.1 ns |
1,056.01 ns |
987.80 ns |
256 B |
KMAC256
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · KMAC-256 · Managed |
128B |
666.6 ns |
3.65 ns |
3.05 ns |
- |
| TryComputeHash · KMAC-256 · OS Native |
128B |
998.1 ns |
4.72 ns |
3.94 ns |
184 B |
| TryComputeHash · KMAC-256 · BouncyCastle |
128B |
1,946.6 ns |
10.75 ns |
9.53 ns |
256 B |
|
|
|
|
|
|
| TryComputeHash · KMAC-256 · Managed |
137B |
911.5 ns |
3.40 ns |
3.19 ns |
- |
| TryComputeHash · KMAC-256 · OS Native |
137B |
1,258.0 ns |
11.30 ns |
10.57 ns |
200 B |
| TryComputeHash · KMAC-256 · BouncyCastle |
137B |
2,238.9 ns |
15.88 ns |
14.86 ns |
256 B |
|
|
|
|
|
|
| TryComputeHash · KMAC-256 · Managed |
1KB |
2,067.5 ns |
14.56 ns |
13.62 ns |
- |
| TryComputeHash · KMAC-256 · OS Native |
1KB |
2,702.5 ns |
6.43 ns |
5.70 ns |
1080 B |
| TryComputeHash · KMAC-256 · BouncyCastle |
1KB |
4,070.0 ns |
28.05 ns |
26.23 ns |
256 B |
|
|
|
|
|
|
| TryComputeHash · KMAC-256 · Managed |
1025B |
2,056.8 ns |
10.78 ns |
9.56 ns |
- |
| TryComputeHash · KMAC-256 · OS Native |
1025B |
2,696.0 ns |
17.38 ns |
16.26 ns |
1088 B |
| TryComputeHash · KMAC-256 · BouncyCastle |
1025B |
4,067.2 ns |
24.84 ns |
22.02 ns |
256 B |
|
|
|
|
|
|
| TryComputeHash · KMAC-256 · Managed |
8KB |
12,491.8 ns |
88.68 ns |
82.95 ns |
- |
| TryComputeHash · KMAC-256 · OS Native |
8KB |
15,646.1 ns |
139.58 ns |
130.57 ns |
8248 B |
| TryComputeHash · KMAC-256 · BouncyCastle |
8KB |
20,164.1 ns |
110.33 ns |
103.21 ns |
256 B |
|
|
|
|
|
|
| TryComputeHash · KMAC-256 · Managed |
128KB |
189,838.3 ns |
1,320.60 ns |
1,235.29 ns |
- |
| TryComputeHash · KMAC-256 · OS Native |
128KB |
263,347.0 ns |
1,215.03 ns |
1,014.60 ns |
131151 B |
| TryComputeHash · KMAC-256 · BouncyCastle |
128KB |
293,350.7 ns |
1,650.91 ns |
1,463.49 ns |
256 B |
Legacy Algorithms
MD5 and SHA-1 are provided exclusively for backward compatibility with legacy protocols and file formats (e.g., verifying old checksums, interoperability with legacy systems). Both algorithms have known cryptographic weaknesses:
- MD5: Vulnerable to collision attacks since 2004; should not be used for security
- SHA-1: Collision attacks demonstrated in 2017 (SHAttered); deprecated by NIST
The OS implementations are fastest due to potential hardware acceleration. The managed implementations prioritize correctness and portability over optimization, as these algorithms should only be used for non-security purposes.
MD5
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · MD5 · OS Native |
128B |
268.5 ns |
0.41 ns |
0.36 ns |
- |
| TryComputeHash · MD5 · Managed |
128B |
306.6 ns |
1.40 ns |
1.24 ns |
- |
| TryComputeHash · MD5 · BouncyCastle |
128B |
369.2 ns |
0.55 ns |
0.46 ns |
- |
|
|
|
|
|
|
| TryComputeHash · MD5 · OS Native |
137B |
266.5 ns |
0.53 ns |
0.47 ns |
- |
| TryComputeHash · MD5 · Managed |
137B |
312.9 ns |
1.37 ns |
1.29 ns |
- |
| TryComputeHash · MD5 · BouncyCastle |
137B |
368.4 ns |
0.91 ns |
0.85 ns |
- |
|
|
|
|
|
|
| TryComputeHash · MD5 · OS Native |
1KB |
1,369.3 ns |
2.21 ns |
2.07 ns |
- |
| TryComputeHash · MD5 · Managed |
1KB |
1,700.0 ns |
9.62 ns |
9.00 ns |
- |
| TryComputeHash · MD5 · BouncyCastle |
1KB |
2,011.0 ns |
3.28 ns |
2.56 ns |
- |
|
|
|
|
|
|
| TryComputeHash · MD5 · OS Native |
1025B |
1,369.3 ns |
1.73 ns |
1.62 ns |
- |
| TryComputeHash · MD5 · Managed |
1025B |
1,707.1 ns |
5.34 ns |
5.00 ns |
- |
| TryComputeHash · MD5 · BouncyCastle |
1025B |
2,008.3 ns |
3.85 ns |
3.41 ns |
- |
|
|
|
|
|
|
| TryComputeHash · MD5 · OS Native |
8KB |
10,153.5 ns |
10.22 ns |
9.56 ns |
- |
| TryComputeHash · MD5 · Managed |
8KB |
12,810.9 ns |
75.89 ns |
67.27 ns |
- |
| TryComputeHash · MD5 · BouncyCastle |
8KB |
15,129.1 ns |
20.69 ns |
17.27 ns |
- |
|
|
|
|
|
|
| TryComputeHash · MD5 · OS Native |
128KB |
160,797.5 ns |
172.63 ns |
153.03 ns |
- |
| TryComputeHash · MD5 · Managed |
128KB |
202,861.9 ns |
884.49 ns |
827.35 ns |
- |
| TryComputeHash · MD5 · BouncyCastle |
128KB |
240,458.7 ns |
440.91 ns |
412.42 ns |
- |
SHA-1
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SHA-1 · OS Native |
128B |
228.4 ns |
0.75 ns |
0.70 ns |
- |
| TryComputeHash · SHA-1 · BouncyCastle |
128B |
441.7 ns |
1.51 ns |
1.41 ns |
- |
| TryComputeHash · SHA-1 · Managed |
128B |
455.4 ns |
2.53 ns |
2.37 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-1 · OS Native |
137B |
226.8 ns |
0.62 ns |
0.55 ns |
- |
| TryComputeHash · SHA-1 · BouncyCastle |
137B |
439.0 ns |
1.81 ns |
1.70 ns |
- |
| TryComputeHash · SHA-1 · Managed |
137B |
452.8 ns |
1.66 ns |
1.55 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-1 · OS Native |
1KB |
1,098.1 ns |
5.82 ns |
5.44 ns |
- |
| TryComputeHash · SHA-1 · BouncyCastle |
1KB |
2,426.2 ns |
9.21 ns |
8.62 ns |
- |
| TryComputeHash · SHA-1 · Managed |
1KB |
2,447.8 ns |
7.84 ns |
7.34 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-1 · OS Native |
1025B |
1,097.4 ns |
5.38 ns |
5.03 ns |
- |
| TryComputeHash · SHA-1 · BouncyCastle |
1025B |
2,419.9 ns |
8.67 ns |
6.77 ns |
- |
| TryComputeHash · SHA-1 · Managed |
1025B |
2,449.6 ns |
15.64 ns |
14.63 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-1 · OS Native |
8KB |
8,029.1 ns |
10.25 ns |
8.01 ns |
- |
| TryComputeHash · SHA-1 · BouncyCastle |
8KB |
18,214.6 ns |
50.03 ns |
41.78 ns |
- |
| TryComputeHash · SHA-1 · Managed |
8KB |
18,331.6 ns |
64.63 ns |
60.46 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SHA-1 · OS Native |
128KB |
127,393.9 ns |
355.35 ns |
332.39 ns |
- |
| TryComputeHash · SHA-1 · BouncyCastle |
128KB |
290,083.7 ns |
1,440.77 ns |
1,347.69 ns |
- |
| TryComputeHash · SHA-1 · Managed |
128KB |
291,925.0 ns |
902.88 ns |
800.38 ns |
- |
Regional Standards
These algorithms serve regulatory compliance requirements in specific jurisdictions. While not commonly used in Western applications, they are mandatory in their respective regions:
| Algorithm |
Region |
Use Case |
| SM3 |
China |
Required for Chinese government and financial systems (GB/T 32905-2016) |
| Streebog |
Russia |
Russian federal standard GOST R 34.11-2012, required for government communications |
| Kupyna |
Ukraine |
Ukrainian national standard DSTU 7564:2014, required for government systems |
| LSH |
South Korea |
Korean national standard KS X 3262, approved by KCMVP |
| Whirlpool |
ISO/NESSIE |
European cryptographic standard (ISO/IEC 10118-3) |
| RIPEMD-160 |
Europe/Crypto |
Used in Bitcoin address generation and some European standards |
The managed Streebog implementation is notably faster (1.4–1.8×) than reference implementations while using less memory—important for embedded systems in constrained environments. The managed Kupyna implementation uses T-table optimization (combining SubBytes, ShiftBytes, and MixColumns) to outperform BouncyCastle by 30–45%.
SM3
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · SM3 · Managed |
128B |
692.6 ns |
2.28 ns |
2.14 ns |
- |
| TryComputeHash · SM3 · BouncyCastle |
128B |
782.8 ns |
6.58 ns |
5.14 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SM3 · Managed |
137B |
698.3 ns |
3.23 ns |
3.02 ns |
- |
| TryComputeHash · SM3 · BouncyCastle |
137B |
782.5 ns |
3.93 ns |
3.49 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SM3 · Managed |
1KB |
3,876.5 ns |
21.10 ns |
19.74 ns |
- |
| TryComputeHash · SM3 · BouncyCastle |
1KB |
4,387.0 ns |
32.79 ns |
27.38 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SM3 · Managed |
1025B |
3,896.0 ns |
24.37 ns |
22.80 ns |
- |
| TryComputeHash · SM3 · BouncyCastle |
1025B |
4,372.0 ns |
28.28 ns |
26.45 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SM3 · Managed |
8KB |
29,382.2 ns |
136.44 ns |
113.93 ns |
- |
| TryComputeHash · SM3 · BouncyCastle |
8KB |
33,101.4 ns |
311.18 ns |
275.85 ns |
- |
|
|
|
|
|
|
| TryComputeHash · SM3 · Managed |
128KB |
465,447.6 ns |
3,096.12 ns |
2,744.63 ns |
- |
| TryComputeHash · SM3 · BouncyCastle |
128KB |
523,842.6 ns |
2,370.73 ns |
2,101.59 ns |
- |
Streebog-256
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · Streebog-256 · Managed |
128B |
2.384 μs |
0.0084 μs |
0.0078 μs |
- |
| TryComputeHash · Streebog-256 · OpenGost |
128B |
3.437 μs |
0.0135 μs |
0.0126 μs |
408 B |
| TryComputeHash · Streebog-256 · BouncyCastle |
128B |
4.267 μs |
0.0443 μs |
0.0414 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Streebog-256 · Managed |
137B |
2.406 μs |
0.0106 μs |
0.0099 μs |
- |
| TryComputeHash · Streebog-256 · OpenGost |
137B |
3.448 μs |
0.0258 μs |
0.0228 μs |
408 B |
| TryComputeHash · Streebog-256 · BouncyCastle |
137B |
4.279 μs |
0.0229 μs |
0.0203 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Streebog-256 · Managed |
1KB |
9.023 μs |
0.0397 μs |
0.0371 μs |
- |
| TryComputeHash · Streebog-256 · OpenGost |
1KB |
12.749 μs |
0.1175 μs |
0.1099 μs |
408 B |
| TryComputeHash · Streebog-256 · BouncyCastle |
1KB |
16.247 μs |
0.1146 μs |
0.1072 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Streebog-256 · Managed |
1025B |
9.069 μs |
0.0466 μs |
0.0436 μs |
- |
| TryComputeHash · Streebog-256 · OpenGost |
1025B |
12.721 μs |
0.0680 μs |
0.0603 μs |
408 B |
| TryComputeHash · Streebog-256 · BouncyCastle |
1025B |
16.323 μs |
0.1521 μs |
0.1423 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Streebog-256 · Managed |
8KB |
63.100 μs |
0.2803 μs |
0.2622 μs |
- |
| TryComputeHash · Streebog-256 · OpenGost |
8KB |
87.146 μs |
0.7910 μs |
0.7399 μs |
408 B |
| TryComputeHash · Streebog-256 · BouncyCastle |
8KB |
111.290 μs |
0.5364 μs |
0.4479 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Streebog-256 · Managed |
128KB |
975.244 μs |
3.2397 μs |
3.0304 μs |
- |
| TryComputeHash · Streebog-256 · OpenGost |
128KB |
1,369.374 μs |
14.4580 μs |
12.8166 μs |
408 B |
| TryComputeHash · Streebog-256 · BouncyCastle |
128KB |
1,750.307 μs |
9.4760 μs |
8.8638 μs |
- |
Streebog-512
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · Streebog-512 · Managed |
128B |
2.392 μs |
0.0112 μs |
0.0105 μs |
- |
| TryComputeHash · Streebog-512 · OpenGost |
128B |
3.364 μs |
0.0171 μs |
0.0152 μs |
176 B |
| TryComputeHash · Streebog-512 · BouncyCastle |
128B |
4.244 μs |
0.0283 μs |
0.0251 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Streebog-512 · Managed |
137B |
2.383 μs |
0.0068 μs |
0.0057 μs |
- |
| TryComputeHash · Streebog-512 · OpenGost |
137B |
3.375 μs |
0.0270 μs |
0.0253 μs |
176 B |
| TryComputeHash · Streebog-512 · BouncyCastle |
137B |
4.250 μs |
0.0277 μs |
0.0259 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Streebog-512 · Managed |
1KB |
9.155 μs |
0.0258 μs |
0.0215 μs |
- |
| TryComputeHash · Streebog-512 · OpenGost |
1KB |
12.638 μs |
0.0596 μs |
0.0528 μs |
176 B |
| TryComputeHash · Streebog-512 · BouncyCastle |
1KB |
16.219 μs |
0.1396 μs |
0.1306 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Streebog-512 · Managed |
1025B |
9.118 μs |
0.0309 μs |
0.0289 μs |
- |
| TryComputeHash · Streebog-512 · OpenGost |
1025B |
12.688 μs |
0.1122 μs |
0.1049 μs |
176 B |
| TryComputeHash · Streebog-512 · BouncyCastle |
1025B |
16.243 μs |
0.1715 μs |
0.1604 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Streebog-512 · Managed |
8KB |
63.075 μs |
0.2877 μs |
0.2691 μs |
- |
| TryComputeHash · Streebog-512 · OpenGost |
8KB |
87.287 μs |
0.7096 μs |
0.6638 μs |
176 B |
| TryComputeHash · Streebog-512 · BouncyCastle |
8KB |
112.265 μs |
0.8141 μs |
0.7615 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Streebog-512 · Managed |
128KB |
961.985 μs |
2.5844 μs |
2.4174 μs |
- |
| TryComputeHash · Streebog-512 · OpenGost |
128KB |
1,365.909 μs |
7.7554 μs |
6.4761 μs |
176 B |
| TryComputeHash · Streebog-512 · BouncyCastle |
128KB |
1,749.143 μs |
10.1758 μs |
9.5184 μs |
- |
Whirlpool
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Median |
Allocated |
| TryComputeHash · Whirlpool · Managed |
128B |
1.345 μs |
0.0265 μs |
0.0261 μs |
1.344 μs |
- |
| TryComputeHash · Whirlpool · Hashify .NET |
128B |
2.079 μs |
0.0399 μs |
0.0560 μs |
2.075 μs |
6336 B |
| TryComputeHash · Whirlpool · BouncyCastle |
128B |
5.107 μs |
0.0535 μs |
0.0501 μs |
5.094 μs |
56 B |
|
|
|
|
|
|
|
| TryComputeHash · Whirlpool · Managed |
137B |
1.328 μs |
0.0087 μs |
0.0082 μs |
1.326 μs |
- |
| TryComputeHash · Whirlpool · Hashify .NET |
137B |
2.066 μs |
0.0411 μs |
0.0403 μs |
2.053 μs |
6328 B |
| TryComputeHash · Whirlpool · BouncyCastle |
137B |
5.143 μs |
0.0814 μs |
0.0761 μs |
5.135 μs |
56 B |
|
|
|
|
|
|
|
| TryComputeHash · Whirlpool · Managed |
1KB |
7.624 μs |
0.1062 μs |
0.0941 μs |
7.621 μs |
- |
| TryComputeHash · Whirlpool · Hashify .NET |
1KB |
10.440 μs |
0.0591 μs |
0.0524 μs |
10.418 μs |
12032 B |
| TryComputeHash · Whirlpool · BouncyCastle |
1KB |
31.852 μs |
0.6259 μs |
0.6697 μs |
31.603 μs |
56 B |
|
|
|
|
|
|
|
| TryComputeHash · Whirlpool · Managed |
1025B |
9.148 μs |
0.1751 μs |
0.2338 μs |
9.064 μs |
- |
| TryComputeHash · Whirlpool · Hashify .NET |
1025B |
10.854 μs |
0.2152 μs |
0.3086 μs |
10.750 μs |
12040 B |
| TryComputeHash · Whirlpool · BouncyCastle |
1025B |
31.762 μs |
0.6230 μs |
0.5827 μs |
31.757 μs |
56 B |
|
|
|
|
|
|
|
| TryComputeHash · Whirlpool · Managed |
8KB |
58.836 μs |
1.1718 μs |
3.0038 μs |
57.556 μs |
- |
| TryComputeHash · Whirlpool · Hashify .NET |
8KB |
76.728 μs |
0.6145 μs |
0.5131 μs |
76.800 μs |
58624 B |
| TryComputeHash · Whirlpool · BouncyCastle |
8KB |
240.887 μs |
1.0425 μs |
0.9752 μs |
240.714 μs |
56 B |
|
|
|
|
|
|
|
| TryComputeHash · Whirlpool · Managed |
128KB |
913.005 μs |
6.1540 μs |
5.7564 μs |
913.813 μs |
- |
| TryComputeHash · Whirlpool · Hashify .NET |
128KB |
1,310.202 μs |
25.4117 μs |
33.0423 μs |
1,309.372 μs |
857372 B |
| TryComputeHash · Whirlpool · BouncyCastle |
128KB |
3,860.332 μs |
74.5913 μs |
73.2586 μs |
3,821.104 μs |
56 B |
RIPEMD-160
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · RIPEMD-160 · BouncyCastle |
128B |
641.7 ns |
1.48 ns |
1.31 ns |
- |
| TryComputeHash · RIPEMD-160 · Managed |
128B |
703.3 ns |
4.18 ns |
3.91 ns |
- |
|
|
|
|
|
|
| TryComputeHash · RIPEMD-160 · BouncyCastle |
137B |
638.4 ns |
2.69 ns |
2.39 ns |
- |
| TryComputeHash · RIPEMD-160 · Managed |
137B |
704.8 ns |
2.92 ns |
2.73 ns |
- |
|
|
|
|
|
|
| TryComputeHash · RIPEMD-160 · BouncyCastle |
1KB |
3,552.2 ns |
7.05 ns |
6.25 ns |
- |
| TryComputeHash · RIPEMD-160 · Managed |
1KB |
3,932.4 ns |
28.19 ns |
26.37 ns |
- |
|
|
|
|
|
|
| TryComputeHash · RIPEMD-160 · BouncyCastle |
1025B |
3,559.0 ns |
9.88 ns |
9.24 ns |
- |
| TryComputeHash · RIPEMD-160 · Managed |
1025B |
3,929.3 ns |
18.79 ns |
16.66 ns |
- |
|
|
|
|
|
|
| TryComputeHash · RIPEMD-160 · BouncyCastle |
8KB |
26,875.9 ns |
56.46 ns |
50.05 ns |
- |
| TryComputeHash · RIPEMD-160 · Managed |
8KB |
29,747.4 ns |
181.94 ns |
151.93 ns |
- |
|
|
|
|
|
|
| TryComputeHash · RIPEMD-160 · BouncyCastle |
128KB |
426,248.4 ns |
1,480.62 ns |
1,384.98 ns |
- |
| TryComputeHash · RIPEMD-160 · Managed |
128KB |
471,273.7 ns |
2,642.99 ns |
2,472.25 ns |
- |
Kupyna-256 (DSTU 7564)
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · Kupyna-256 · Managed |
128B |
2.219 μs |
0.0095 μs |
0.0079 μs |
- |
| TryComputeHash · Kupyna-256 · BouncyCastle |
128B |
3.254 μs |
0.0117 μs |
0.0104 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-256 · Managed |
137B |
2.215 μs |
0.0149 μs |
0.0132 μs |
- |
| TryComputeHash · Kupyna-256 · BouncyCastle |
137B |
3.259 μs |
0.0130 μs |
0.0122 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-256 · Managed |
1KB |
11.039 μs |
0.0720 μs |
0.0673 μs |
- |
| TryComputeHash · Kupyna-256 · BouncyCastle |
1KB |
16.235 μs |
0.0594 μs |
0.0496 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-256 · Managed |
1025B |
11.032 μs |
0.1018 μs |
0.0953 μs |
- |
| TryComputeHash · Kupyna-256 · BouncyCastle |
1025B |
16.327 μs |
0.1228 μs |
0.1149 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-256 · Managed |
8KB |
81.341 μs |
0.4505 μs |
0.3994 μs |
- |
| TryComputeHash · Kupyna-256 · BouncyCastle |
8KB |
120.315 μs |
0.6395 μs |
0.5982 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-256 · Managed |
128KB |
1,290.112 μs |
11.5268 μs |
10.7822 μs |
- |
| TryComputeHash · Kupyna-256 · BouncyCastle |
128KB |
1,894.703 μs |
2.8173 μs |
2.1996 μs |
- |
Kupyna-384 (DSTU 7564)
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · Kupyna-384 · Managed |
128B |
4.326 μs |
0.0308 μs |
0.0273 μs |
- |
| TryComputeHash · Kupyna-384 · BouncyCastle |
128B |
6.628 μs |
0.0207 μs |
0.0193 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-384 · Managed |
137B |
4.318 μs |
0.0281 μs |
0.0262 μs |
- |
| TryComputeHash · Kupyna-384 · BouncyCastle |
137B |
6.629 μs |
0.0175 μs |
0.0155 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-384 · Managed |
1KB |
16.415 μs |
0.1117 μs |
0.1045 μs |
- |
| TryComputeHash · Kupyna-384 · BouncyCastle |
1KB |
25.293 μs |
0.1173 μs |
0.1098 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-384 · Managed |
1025B |
16.453 μs |
0.1207 μs |
0.1129 μs |
- |
| TryComputeHash · Kupyna-384 · BouncyCastle |
1025B |
25.293 μs |
0.0921 μs |
0.0862 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-384 · Managed |
8KB |
112.686 μs |
0.5792 μs |
0.5418 μs |
- |
| TryComputeHash · Kupyna-384 · BouncyCastle |
8KB |
174.548 μs |
0.7726 μs |
0.6849 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-384 · Managed |
128KB |
1,765.146 μs |
8.1956 μs |
7.2652 μs |
- |
| TryComputeHash · Kupyna-384 · BouncyCastle |
128KB |
2,733.068 μs |
13.6616 μs |
11.4081 μs |
- |
Kupyna-512 (DSTU 7564)
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · Kupyna-512 · Managed |
128B |
4.319 μs |
0.0257 μs |
0.0227 μs |
- |
| TryComputeHash · Kupyna-512 · BouncyCastle |
128B |
6.620 μs |
0.0240 μs |
0.0201 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-512 · Managed |
137B |
4.325 μs |
0.0205 μs |
0.0182 μs |
- |
| TryComputeHash · Kupyna-512 · BouncyCastle |
137B |
6.630 μs |
0.0184 μs |
0.0163 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-512 · Managed |
1KB |
16.387 μs |
0.1101 μs |
0.1029 μs |
- |
| TryComputeHash · Kupyna-512 · BouncyCastle |
1KB |
25.276 μs |
0.1349 μs |
0.1262 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-512 · Managed |
1025B |
16.358 μs |
0.0767 μs |
0.0640 μs |
- |
| TryComputeHash · Kupyna-512 · BouncyCastle |
1025B |
25.428 μs |
0.1356 μs |
0.1202 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-512 · Managed |
8KB |
112.719 μs |
0.3260 μs |
0.2890 μs |
- |
| TryComputeHash · Kupyna-512 · BouncyCastle |
8KB |
174.818 μs |
0.7154 μs |
0.6342 μs |
- |
|
|
|
|
|
|
| TryComputeHash · Kupyna-512 · Managed |
128KB |
1,763.256 μs |
8.4060 μs |
7.8630 μs |
- |
| TryComputeHash · Kupyna-512 · BouncyCastle |
128KB |
2,731.852 μs |
12.8837 μs |
12.0514 μs |
- |
LSH-256-256 (KS X 3262)
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · LSH-256-256 · Managed |
128B |
1.846 μs |
0.0074 μs |
0.0069 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-256-256 · Managed |
137B |
1.850 μs |
0.0068 μs |
0.0064 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-256-256 · Managed |
1KB |
8.122 μs |
0.0345 μs |
0.0306 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-256-256 · Managed |
1025B |
8.120 μs |
0.0368 μs |
0.0344 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-256-256 · Managed |
8KB |
58.127 μs |
0.1996 μs |
0.1867 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-256-256 · Managed |
128KB |
916.027 μs |
2.7993 μs |
2.6185 μs |
- |
LSH-512-256 (KS X 3262)
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · LSH-512-256 · Managed |
128B |
1.038 μs |
0.0047 μs |
0.0042 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-512-256 · Managed |
137B |
1.034 μs |
0.0050 μs |
0.0046 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-512-256 · Managed |
1KB |
4.935 μs |
0.0275 μs |
0.0257 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-512-256 · Managed |
1025B |
4.946 μs |
0.0079 μs |
0.0070 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-512-256 · Managed |
8KB |
32.047 μs |
0.2102 μs |
0.1966 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-512-256 · Managed |
128KB |
495.859 μs |
2.3437 μs |
1.9571 μs |
- |
LSH-512-512 (KS X 3262)
| Description |
TestDataSize |
Mean |
Error |
StdDev |
Allocated |
| TryComputeHash · LSH-512-512 · Managed |
128B |
1.037 μs |
0.0021 μs |
0.0019 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-512-512 · Managed |
137B |
1.035 μs |
0.0034 μs |
0.0030 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-512-512 · Managed |
1KB |
4.954 μs |
0.0181 μs |
0.0170 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-512-512 · Managed |
1025B |
4.952 μs |
0.0186 μs |
0.0165 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-512-512 · Managed |
8KB |
31.994 μs |
0.1344 μs |
0.1258 μs |
- |
|
|
|
|
|
|
| TryComputeHash · LSH-512-512 · Managed |
128KB |
496.102 μs |
2.4450 μs |
2.2871 μs |
- |
See also