Crypto Signatures09/08/2026 | 15 minutes to read | Open in Markdown
In this post, I look at the different signature algorithms available to .NET developers. I am going to compare these algorithms from a performance point of view. However, I am not going to focus on their security strength.
Signature algorithms are used to provide integrity and authenticity for data. At the network level, a TLS connection provides encryption, but this is often not enough because some environments may terminate TLS connections. For example, load balancers and ingress proxies often terminate the TLS connection (and sometimes even downgrade the HTTP protocol version) before forwarding requests to the actual server instance. By signing each request or response message individually, a receiver can validate the signature of the sender. It can confirm that a message has not been tampered with and that it originates from the sender rather than from a man-in-the-middle attacker.
What it does not do:
- It does not protect against replay attacks by itself, unless a nonce, idempotency key, or timestamp is included in the signed data.
- Signatures do not encrypt the message. Anyone with access to the message can still read it. This means TLS is still required at the connection level.
One use case for message signatures is RFC 9421 HTTP Message Signatures, which describes the topic in more detail. For this post, I will use some of the suggestions from RFC 9421. It mentions 5 signature algorithms, which I will consider in my investigation. The RFC also states that these algorithms are not exclusive and that other algorithms may also be used for signing messages. In .NET 11, one of the 5 suggested algorithms, Ed25519, is not implemented, so I will substitute it with a more relevant post-quantum cryptography algorithm: MLDsa44.
Test Parameters
Algorithms
This post compares the mean execution time of the following algorithms:
- RSASSA-PSS using SHA-512
- RSASSA-PKCS1-v1_5 using SHA-256
- HMAC using SHA-256
- ECDSA using the NIST P-256 curve and SHA-256
- ECDSA using the NIST P-384 curve and SHA-384
- MLDsa-44
Most of these are asymmetric algorithms, with the exception of HMAC-SHA256. This symmetric algorithm requires the same secret to be known by both the sender and the receiver. The other algorithms do not require a shared secret; instead, they use key pairs and can be used with public-key cryptography.
Platforms
Another interesting note about .NET 11 is that it uses different implementations on different platforms under the hood. On Windows, it uses the crypto service provided by Windows, while on Linux it uses OpenSSL. For my testing, I wanted to include these platforms and run them on the same hardware for a fair comparison. In many real-world cases, end-user devices sign messages, so I also run the tests on some Android phones inside a Linux environment. This gives a rough idea of the impact of message signing on a handheld device while still using OpenSSL as the underlying implementation.
Messaging Patterns
There are two typical use cases: a single-shot case, where an application signs a single message during a longer time period, and a multi-message case, where an application signs multiple messages with the same keys and algorithm. This results in different API usage patterns. In this post, the public-private key pairs are never imported from certificates.
Message Size
I am also curious about how the size of the message impacts the execution time. I will test three cases:
- a small message, roughly the size of a single JSON property value
- a medium message, where the plaintext is roughly the sum of a few properties (93 bytes)
- a 1 KB message
Execution
In the comparison, I run a .NET 11.0 application using BenchmarkDotNet on Windows and Linux (WSL), so I can use the same hardware underneath. For Android, I use a recent Samsung S25 and an older Samsung S10 Lite device.
Learnings
Let me first summarize the main things I learned while using the .NET crypto APIs:
- All algorithms I tested work with bytes. If the input is a string, such as JSON, it must be encoded first before it can be signed.
- In .NET, there is typically a static
CreateorGenerateKeymethod to instantiate an algorithm. - The size of the signature depends on the algorithm, and most span based
Signmethods require a destination buffer large enough for the output. To know the exact (or max) size required for an algorithm, there is typically a property on the algorithm object that returns this value. - The size of ECDSA signatures depends on the output format, and it may vary. For example, with the NIST P-256 curve and the
Rfc3279DerSequenceoutput format, the signature may require 72 bytes. - Asymmetric encryption is only feasible for small values (for example, encrypting a symmetric key), which are then used with AES. In the case of asymmetric signatures, this means the input is typically hashed first.
- When using the symmetric HMACSHA256 signatures, it is best to derive a pseudo-random key (PRK) from the initial shared secret, and then expand it based on some public information to get the actual key used by HMACSHA256. To do this, HKDF can be used.
- HKDF is deterministic. Symmetric signatures are not publicly verifiable.
- The effective bit strength of the overall algorithm is limited by its weakest component. Increasing the number of bytes does not necessarily increase the overall entropy.
At this point, I think I have covered most of the basics of these algorithms, and in the coming months I will share more interesting findings.
Results
The results are included below and are also available as a gist along with the test code.
Let me summarize my takeaways:
- The asymmetric signatures are dominated by the cost of the algorithm, not by the message size.
- The algorithm choice matters more than the size of the workload.
- The single shot benchmarks are significantly longer because the initialization of these algorithms is expensive. When signing multiple messages, it makes sense to plan ahead to avoid these extra costs without reducing the strength of the signature (using a nonce, IV, etc.).
- The post quantum signatures are slower today than ECDsa, but still faster than the RSA algorithms.
- The platform matters a lot: Windows, Linux, and Android are not equivalent. Surprisingly, a modern phone is not far behind a laptop, but the performance difference depends on the actual algorithm. 6 The relative ordering of algorithms is mostly stable across platforms.
- Symmetric signature methods are not directly comparable to asymmetric signatures.
Single Shot Benchmarks on Windows
Method | MessageInput | Mean | Error | StdDev |
|---|---|---|---|---|
SingleShot_ECDsa_P256 | High(...)ory. [1024] | 1,564.208 us | 14.5931 us | 13.6504 us |
SingleShot_ECDsa_P384 | High(...)ory. [1024] | 2,353.331 us | 21.1178 us | 19.7536 us |
SingleShot_HMACSHA256 | High(...)ory. [1024] | 2.350 us | 0.0188 us | 0.0176 us |
SingleShot_RsaPss | High(...)ory. [1024] | 44,131.467 us | 1,267.6967 us | 3,737.8326 us |
SingleShot_Rsa_Pkcs1 | High(...)ory. [1024] | 43,661.192 us | 1,228.6989 us | 3,584.1726 us |
SingleShot_MLDsa | High(...)ory. [1024] | 829.9 us | 16.46 us | 15.39 us |
SingleShot_MLDsaPreHash | High(...)ory. [1024] | 811.7 us | 5.56 us | 4.64 us |
SingleShot_ECDsa_P256 | some secret value | 1,533.848 us | 24.3585 us | 22.7850 us |
SingleShot_ECDsa_P384 | some secret value | 2,365.076 us | 25.2889 us | 23.6552 us |
SingleShot_HMACSHA256 | some secret value | 1.408 us | 0.0039 us | 0.0032 us |
SingleShot_RsaPss | some secret value | 47,121.932 us | 1,396.1999 us | 4,116.7273 us |
SingleShot_Rsa_Pkcs1 | some secret value | 47,668.320 us | 1,549.6138 us | 4,569.0714 us |
SingleShot_MLDsa | some secret value | 815.4 us | 13.83 us | 12.93 us |
SingleShot_MLDsaPreHash | some secret value | 815.3 us | 14.70 us | 13.75 us |
SingleShot_ECDsa_P256 | some (...)value [93] | 1,555.298 us | 6.4149 us | 5.6866 us |
SingleShot_ECDsa_P384 | some (...)value [93] | 2,360.783 us | 9.9602 us | 8.8295 us |
SingleShot_HMACSHA256 | some (...)value [93] | 1.504 us | 0.0283 us | 0.0265 us |
SingleShot_RsaPss | some (...)value [93] | 44,372.139 us | 1,058.0692 us | 3,103.1341 us |
SingleShot_Rsa_Pkcs1 | some (...)value [93] | 43,772.493 us | 1,238.8381 us | 3,633.2978 us |
SingleShot_MLDsa | some (...)value [93] | 817.1 us | 13.67 us | 12.12 us |
SingleShot_MLDsaPreHash | some (...)value [93] | 814.8 us | 6.74 us | 5.97 us |
Multiple message - Windows
ECDsa P256 - Windows
Method | MessageInput | Mean | Error | StdDev |
|---|---|---|---|---|
ECDSA_Sign | High(...)ory. [1024] | 113.2 us | 0.63 us | 0.59 us |
ECDSA_Verify | High(...)ory. [1024] | 105.7 us | 0.16 us | 0.15 us |
ECDSA_Sign | some secret value | 111.2 us | 0.82 us | 0.77 us |
ECDSA_Verify | some secret value | 104.8 us | 0.21 us | 0.17 us |
ECDSA_Sign | some (...)value [93] | 111.4 us | 0.76 us | 0.71 us |
ECDSA_Verify | some (...)value [93] | 104.8 us | 0.12 us | 0.10 us |
ECDsa P384 - Windows
Method | MessageInput | Mean | Error | StdDev |
|---|---|---|---|---|
ECDSA_Sign | High(...)ory. [1024] | 206.3 us | 0.58 us | 0.54 us |
ECDSA_Verify | High(...)ory. [1024] | 213.6 us | 0.19 us | 0.17 us |
ECDSA_Sign | some secret value | 202.4 us | 0.62 us | 0.58 us |
ECDSA_Verify | some secret value | 213.9 us | 0.19 us | 0.18 us |
ECDSA_Sign | some (...)value [93] | 201.9 us | 0.55 us | 0.52 us |
ECDSA_Verify | some (...)value [93] | 212.4 us | 0.13 us | 0.12 us |
RSA 2048 PSS SHA512 - Windows
Method | MessageInput | Mean | Error | StdDev |
|---|---|---|---|---|
RSA_Sign | High(...)ory. [1024] | 421.46 us | 4.958 us | 4.141 us |
RSA_Verify | High(...)ory. [1024] | 15.74 us | 0.152 us | 0.135 us |
RSA_Sign | some secret value | 414.13 us | 8.200 us | 7.269 us |
RSA_Verify | some secret value | 14.23 us | 0.086 us | 0.077 us |
RSA_Sign | some (...)value [93] | 410.06 us | 2.462 us | 2.303 us |
RSA_Verify | some (...)value [93] | 14.23 us | 0.082 us | 0.073 us |
RSA 2048 PKCS1 SHA256 - Windows
Method | MessageInput | Mean | Error | StdDev |
|---|---|---|---|---|
RSA_Sign | High(...)ory. [1024] | 417.72 us | 4.232 us | 3.752 us |
RSA_Verify | High(...)ory. [1024] | 13.65 us | 0.235 us | 0.220 us |
RSA_Sign | some secret value | 408.34 us | 1.548 us | 1.372 us |
RSA_Verify | some secret value | 13.02 us | 0.060 us | 0.056 us |
RSA_Sign | some (...)value [93] | 409.00 us | 2.991 us | 2.498 us |
RSA_Verify | some (...)value [93] | 13.08 us | 0.089 us | 0.083 us |
MLDsa44 - Windows
Method | MessageInput | Mean | Error | StdDev |
|---|---|---|---|---|
MLDsa_Sign | High(...)ory. [1024] | 291.12 us | 3.439 us | 3.049 us |
MLDsa_Verify | High(...)ory. [1024] | 37.51 us | 0.463 us | 0.411 us |
MLDsa_Sign | some secret value | 283.43 us | 5.269 us | 5.411 us |
MLDsa_Verify | some secret value | 35.10 us | 0.259 us | 0.216 us |
MLDsa_Sign | some (...)value [93] | 285.09 us | 5.165 us | 8.041 us |
MLDsa_Verify | some (...)value [93] | 35.66 us | 0.306 us | 0.286 us |
MLDsa44 with PreHash - Windows
Method | MessageInput | Mean | Error | StdDev |
|---|---|---|---|---|
MLDsa_Sign | High(...)ory. [1024] | 292.42 us | 5.325 us | 6.735 us |
MLDsa_Verify | High(...)ory. [1024] | 35.86 us | 0.301 us | 0.281 us |
MLDsa_Sign | some secret value | 286.66 us | 5.286 us | 4.945 us |
MLDsa_Verify | some secret value | 35.52 us | 0.305 us | 0.270 us |
MLDsa_Sign | some (...)value [93] | 279.63 us | 5.268 us | 5.410 us |
MLDsa_Verify | some (...)value [93] | 35.66 us | 0.428 us | 0.400 us |
HMACSHA256 - Windows
Method | MessageInput | Mean | Error | StdDev |
|---|---|---|---|---|
HMACSHA256_Sign | High(...)ory. [1024] | 748.0 ns | 5.07 ns | 4.23 ns |
HMACSHA256_Verify | High(...)ory. [1024] | 856.0 ns | 6.95 ns | 5.42 ns |
HMACSHA256_Sign | some secret value | 261.5 ns | 2.87 ns | 2.68 ns |
HMACSHA256_Verify | some secret value | 390.4 ns | 3.82 ns | 3.39 ns |
HMACSHA256_Sign | some (...)value [93] | 277.1 ns | 2.31 ns | 2.16 ns |
HMACSHA256_Verify | some (...)value [93] | 414.0 ns | 6.33 ns | 5.92 ns |
Multiple message - Linux
BenchmarkDotNet v0.16.0-preview.1, Linux Ubuntu 26.04 (Resolute Raccoon) 12th Gen Intel Core i7-1255U 2.61GHz, 1 CPU, 12 logical and 6 physical cores DefaultJob : .NET 11.0.0 (11.0.0-preview.7.26381.103, 11.0.26.38203), X64 RyuJIT x86-64-v3
ECDsa P256 - Linux
Method | MessageInput | Mean | Error | StdDev |
|---|---|---|---|---|
ECDSA_Sign | High(...)ory. [1024] | 19.37 us | 0.146 us | 0.114 us |
ECDSA_Verify | High(...)ory. [1024] | 56.23 us | 0.733 us | 0.612 us |
ECDSA_Sign | some secret value | 18.77 us | 0.210 us | 0.196 us |
ECDSA_Verify | some secret value | 55.48 us | 0.407 us | 0.360 us |
ECDSA_Sign | some (...)value [93] | 18.73 us | 0.275 us | 0.257 us |
ECDSA_Verify | some (...)value [93] | 55.25 us | 0.424 us | 0.397 us |
ECDsa P384 - Linux
Method | MessageInput | Mean | Error | StdDev |
|---|---|---|---|---|
ECDSA_Sign | High(...)ory. [1024] | 148.1 us | 1.65 us | 1.55 us |
ECDSA_Verify | High(...)ory. [1024] | 330.3 us | 3.07 us | 2.56 us |
ECDSA_Sign | some secret value | 146.4 us | 1.63 us | 1.52 us |
ECDSA_Verify | some secret value | 326.3 us | 2.17 us | 1.82 us |
ECDSA_Sign | some (...)value [93] | 145.9 us | 1.52 us | 1.42 us |
ECDSA_Verify | some (...)value [93] | 329.5 us | 3.74 us | 3.50 us |
RSA 2048 PSS SHA512 - Linux
Method | MessageInput | Mean | Error | StdDev | Median |
|---|---|---|---|---|---|
RSA_Sign | High(...)ory. [1024] | 452.02 us | 2.657 us | 2.486 us | 451.47 us |
RSA_Verify | High(...)ory. [1024] | 18.05 us | 0.202 us | 0.168 us | 18.04 us |
RSA_Sign | some secret value | 463.74 us | 8.788 us | 19.104 us | 454.73 us |
RSA_Verify | some secret value | 17.07 us | 0.207 us | 0.193 us | 17.05 us |
RSA_Sign | some (...)value [93] | 450.79 us | 4.403 us | 3.904 us | 450.75 us |
RSA_Verify | some (...)value [93] | 17.25 us | 0.334 us | 0.312 us | 17.25 us |
RSA 2048 PKCS1 SHA256 - Linux
Method | MessageInput | Mean | Error | StdDev |
|---|---|---|---|---|
RSA_Sign | High(...)ory. [1024] | 450.85 us | 4.362 us | 3.867 us |
RSA_Verify | High(...)ory. [1024] | 15.70 us | 0.188 us | 0.176 us |
RSA_Sign | some secret value | 449.85 us | 5.213 us | 4.876 us |
RSA_Verify | some secret value | 15.23 us | 0.160 us | 0.150 us |
RSA_Sign | some (...)value [93] | 447.16 us | 3.305 us | 2.580 us |
RSA_Verify | some (...)value [93] | 15.25 us | 0.141 us | 0.132 us |
MLDsa44 - Linux
Method | MessageInput | Mean | Error | StdDev |
|---|---|---|---|---|
MLDsa_Sign | High(...)ory. [1024] | 406.32 us | 7.550 us | 7.062 us |
MLDsa_Verify | High(...)ory. [1024] | 82.38 us | 0.622 us | 0.581 us |
MLDsa_Sign | some secret value | 406.38 us | 6.485 us | 7.208 us |
MLDsa_Verify | some secret value | 81.53 us | 0.767 us | 0.641 us |
MLDsa_Sign | some (...)value [93] | 406.00 us | 7.954 us | 12.384 us |
MLDsa_Verify | some (...)value [93] | 81.29 us | 0.670 us | 0.594 us |
MLDsa44 with PreHash - Linux
Method | MessageInput | Mean | Error | StdDev |
|---|---|---|---|---|
MLDsa_Sign | High(...)ory. [1024] | 408.47 us | 6.359 us | 5.949 us |
MLDsa_Verify | High(...)ory. [1024] | 81.93 us | 0.660 us | 0.551 us |
MLDsa_Sign | some secret value | 399.96 us | 7.379 us | 6.162 us |
MLDsa_Verify | some secret value | 81.46 us | 0.747 us | 0.662 us |
MLDsa_Sign | some (...)value [93] | 401.81 us | 7.012 us | 6.559 us |
MLDsa_Verify | some (...)value [93] | 81.42 us | 0.796 us | 0.744 us |
HMACSHA256 - Linux
Method | MessageInput | Mean | Error | StdDev |
|---|---|---|---|---|
HMACSHA256_Sign | High(...)ory. [1024] | 1,416.5 ns | 6.81 ns | 6.37 ns |
HMACSHA256_Verify | High(...)ory. [1024] | 1,549.4 ns | 15.06 ns | 12.57 ns |
HMACSHA256_Sign | some secret value | 935.8 ns | 9.78 ns | 9.15 ns |
HMACSHA256_Verify | some secret value | 1,066.9 ns | 15.37 ns | 13.63 ns |
HMACSHA256_Sign | some (...)value [93] | 969.7 ns | 9.55 ns | 8.93 ns |
HMACSHA256_Verify | some (...)value [93] | 1,101.8 ns | 13.91 ns | 12.33 ns |
Multiple message - Samsung S25
BenchmarkDotNet v0.16.0-nightly.20260816.607, Linux Ubuntu 26.04 (Resolute Raccoon) Oryon Memory: 10.85 GB Total, 0.96 GB Available [Host] : .NET 11.0.0 (11.0.0-preview.7.26381.103, 11.0.26.38203), Arm64 RyuJIT armv8.0-a Job-HAIMXI : .NET 11.0.0 (11.0.0-preview.7.26381.103, 11.0.26.38203), Arm64 RyuJIT armv8.0-a
ECDsa P256 - S25
Method | MessageInput | Mean | Error | StdDev | Median |
|---|---|---|---|---|---|
ECDSA_Sign | High(...)ory. [1024] | 13.74 us | 0.239 us | 0.489 us | 13.59 us |
ECDSA_Verify | High(...)ory. [1024] | 36.20 us | 0.236 us | 0.220 us | 36.11 us |
ECDSA_Sign | some secret value | 13.40 us | 0.066 us | 0.061 us | 13.40 us |
ECDSA_Verify | some secret value | 36.25 us | 0.158 us | 0.148 us | 36.25 us |
ECDSA_Sign | some (...)value [93] | 14.50 us | 0.518 us | 1.478 us | 13.51 us |
ECDSA_Verify | some (...)value [93] | 35.71 us | 0.406 us | 0.339 us | 35.73 us |
ECDsa P384 - S25
Method | MessageInput | Mean | Error | StdDev | Median |
|---|---|---|---|---|---|
ECDSA_Sign | High(...)ory. [1024] | 444.5 us | 6.46 us | 6.04 us | 447.2 us |
ECDSA_Verify | High(...)ory. [1024] | 980.1 us | 13.14 us | 12.29 us | 984.1 us |
ECDSA_Sign | some secret value | 445.0 us | 3.87 us | 3.62 us | 444.5 us |
ECDSA_Verify | some secret value | 953.2 us | 19.06 us | 55.30 us | 968.7 us |
ECDSA_Sign | some (...)value [93] | 115.3 us | 5.13 us | 13.60 us | 108.2 us |
ECDSA_Verify | some (...)value [93] | 255.2 us | 5.08 us | 12.07 us | 253.4 us |
RSA 2048 PSS SHA512 - S25
Method | MessageInput | Mean | Error | StdDev | Median |
|---|---|---|---|---|---|
RSA_Sign | High(...)ory. [1024] | 514.06 us | 36.828 us | 106.256 us | 451.40 us |
RSA_Verify | High(...)ory. [1024] | 13.45 us | 0.053 us | 0.059 us | 13.43 us |
RSA_Sign | some secret value | 585.22 us | 0.176 us | 0.164 us | 585.26 us |
RSA_Verify | some secret value | 15.06 us | 0.015 us | 0.013 us | 15.06 us |
RSA_Sign | some (...)value [93] | 509.34 us | 9.515 us | 11.327 us | 511.14 us |
RSA_Verify | some (...)value [93] | 15.24 us | 0.431 us | 1.186 us | 15.82 us |
RSA 2048 PKCS1 SHA256 - S25
Method | MessageInput | Mean | Error | StdDev | P95 |
|---|---|---|---|---|---|
RSA_Sign | High(...)ory. [1024] | 440.58 us | 8.754 us | 22.441 us | 509.82 us |
RSA_Verify | High(...)ory. [1024] | 12.50 us | 0.064 us | 0.060 us | 12.57 us |
RSA_Sign | some secret value | 449.72 us | 2.636 us | 2.466 us | 452.44 us |
RSA_Verify | some secret value | 12.61 us | 0.008 us | 0.008 us | 12.62 us |
RSA_Sign | some (...)value [93] | 509.74 us | 17.992 us | 51.911 us | 582.78 us |
RSA_Verify | some (...)value [93] | 14.33 us | 0.284 us | 0.474 us | 14.81 us |
MLDsa44 - S25
Method | MessageInput | Mean | Error | StdDev | Median |
|---|---|---|---|---|---|
MLDsa_Sign | High(...)ory. [1024] | 358.68 us | 7.019 us | 7.510 us | 361.24 us |
MLDsa_Verify | High(...)ory. [1024] | 70.69 us | 0.263 us | 0.233 us | 70.69 us |
MLDsa_Sign | some secret value | 399.20 us | 11.496 us | 33.896 us | 394.79 us |
MLDsa_Verify | some secret value | 81.33 us | 4.289 us | 12.647 us | 70.32 us |
MLDsa_Sign | some (...)value [93] | 388.80 us | 7.433 us | 7.953 us | 389.84 us |
MLDsa_Verify | some (...)value [93] | 87.09 us | 0.032 us | 0.030 us | 87.09 us |
MLDsa44 with PreHash - S25
Method | MessageInput | Mean | Error | StdDev | Median |
|---|---|---|---|---|---|
MLDsa_Sign | High(...)ory. [1024] | 360.29 us | 6.737 us | 6.302 us | 356.24 us |
MLDsa_Verify | High(...)ory. [1024] | 81.30 us | 4.182 us | 12.331 us | 71.29 us |
MLDsa_Sign | some secret value | 393.16 us | 6.876 us | 6.432 us | 393.63 us |
MLDsa_Verify | some secret value | 82.14 us | 2.196 us | 6.122 us | 81.74 us |
MLDsa_Sign | some (...)value [93] | 446.16 us | 8.897 us | 15.583 us | 449.99 us |
MLDsa_Verify | some (...)value [93] | 81.77 us | 0.033 us | 0.028 us | 81.76 us |
HMACSHA256 - S25
Method | MessageInput | Mean | Error | StdDev |
|---|---|---|---|---|
HMACSHA256_Sign | High(...)ory. [1024] | 1.101 us | 0.0177 us | 0.0148 us |
HMACSHA256_Verify | High(...)ory. [1024] | 1.262 us | 0.0052 us | 0.0049 us |
HMACSHA256_Sign | some secret value | 1.003 us | 0.0310 us | 0.0913 us |
HMACSHA256_Verify | some secret value | 1.180 us | 0.0216 us | 0.0168 us |
HMACSHA256_Sign | some (...)value [93] | 1.023 us | 0.0015 us | 0.0014 us |
HMACSHA256_Verify | some (...)value [93] | 1.268 us | 0.0008 us | 0.0007 us |
Multiple message - Samsung S10 Lite
BenchmarkDotNet v0.16.0-nightly.20260816.607, Linux Ubuntu 26.04 (Resolute Raccoon) Kryo-4XX-Gold, Kryo-4XX-Silver, 4 physical cores Memory: 7.27 GB Total, 0.62 GB Available .NET SDK 10.0.111 [Host] : .NET 11.0.0 (11.0.0-preview.7.26381.103, 11.0.26.38203), Arm64 RyuJIT armv8.0-a Job-HAIMXI : .NET 11.0.0 (11.0.0-preview.7.26381.103, 11.0.26.38203), Arm64 RyuJIT armv8.0-a
ECDsa P256 - S10
Method | MessageInput | Mean | Error | StdDev |
|---|---|---|---|---|
ECDSA_Sign | High(...)ory. [1024] | 54.72 us | 0.238 us | 0.223 us |
ECDSA_Verify | High(...)ory. [1024] | 164.85 us | 0.790 us | 0.660 us |
ECDSA_Sign | some secret value | 54.31 us | 0.288 us | 0.240 us |
ECDSA_Verify | some secret value | 164.23 us | 0.476 us | 0.422 us |
ECDSA_Sign | some (...)value [93] | 54.10 us | 0.305 us | 0.270 us |
ECDSA_Verify | some (...)value [93] | 164.18 us | 0.497 us | 0.441 us |
ECDsa P384 - S10
Method | MessageInput | Mean | Error | StdDev |
|---|---|---|---|---|
ECDSA_Sign | High(...)ory. [1024] | 474.1 us | 7.84 us | 7.33 us |
ECDSA_Verify | High(...)ory. [1024] | 1,026.6 us | 16.59 us | 15.52 us |
ECDSA_Sign | some secret value | 468.4 us | 4.26 us | 3.99 us |
ECDSA_Verify | some secret value | 1,029.4 us | 20.04 us | 18.74 us |
ECDSA_Sign | some (...)value [93] | 476.1 us | 9.19 us | 8.60 us |
ECDSA_Verify | some (...)value [93] | 1,016.7 us | 10.89 us | 9.65 us |
RSA 2048 PSS SHA512 - S10
Method | MessageInput | Mean | Error | StdDev |
|---|---|---|---|---|
RSA_Sign | High(...)ory. [1024] | 3,063.79 us | 45.886 us | 38.317 us |
RSA_Verify | High(...)ory. [1024] | 93.73 us | 1.227 us | 1.147 us |
RSA_Sign | some secret value | 3,046.40 us | 36.235 us | 30.258 us |
RSA_Verify | some secret value | 91.13 us | 1.087 us | 0.963 us |
RSA_Sign | some (...)value [93] | 3,046.01 us | 31.340 us | 29.316 us |
RSA_Verify | some (...)value [93] | 91.07 us | 1.052 us | 0.984 us |
RSA 2048 PKCS1 SHA256 - S10
Method | MessageInput | Mean | Error | StdDev |
|---|---|---|---|---|
RSA_Sign | High(...)ory. [1024] | 3,031.35 us | 24.249 us | 22.682 us |
RSA_Verify | High(...)ory. [1024] | 87.99 us | 0.913 us | 0.809 us |
RSA_Sign | some secret value | 3,056.26 us | 52.614 us | 49.215 us |
RSA_Verify | some secret value | 87.93 us | 1.165 us | 1.090 us |
RSA_Sign | some (...)value [93] | 3,020.71 us | 17.484 us | 14.600 us |
RSA_Verify | some (...)value [93] | 87.26 us | 0.466 us | 0.413 us |
MLDsa44 - S10
Method | MessageInput | Mean | Error | StdDev |
|---|---|---|---|---|
MLDsa_Sign | High(...)ory. [1024] | 976.7 us | 19.15 us | 18.81 us |
MLDsa_Verify | High(...)ory. [1024] | 187.0 us | 0.34 us | 0.28 us |
MLDsa_Sign | some secret value | 977.2 us | 19.06 us | 30.23 us |
MLDsa_Verify | some secret value | 186.3 us | 2.78 us | 2.60 us |
MLDsa_Sign | some (...)value [93] | 994.1 us | 19.87 us | 34.27 us |
MLDsa_Verify | some (...)value [93] | 184.5 us | 0.74 us | 0.58 us |
MLDsa44 with PreHash - S10
Method | MessageInput | Mean | Error | StdDev |
|---|---|---|---|---|
MLDsa_Sign | High(...)ory. [1024] | 977.6 us | 18.36 us | 19.65 us |
MLDsa_Verify | High(...)ory. [1024] | 187.4 us | 2.05 us | 1.92 us |
MLDsa_Sign | some secret value | 986.1 us | 19.57 us | 37.70 us |
MLDsa_Verify | some secret value | 185.9 us | 1.35 us | 1.20 us |
MLDsa_Sign | some (...)value [93] | 986.7 us | 19.40 us | 34.49 us |
MLDsa_Verify | some (...)value [93] | 186.4 us | 2.02 us | 1.89 us |
HMACSHA256 - S10
Method | MessageInput | Mean | Error | StdDev | Median |
|---|---|---|---|---|---|
HMACSHA256_Sign | High(...)ory. [1024] | 2.573 us | 0.0178 us | 0.0368 us | 2.569 us |
HMACSHA256_Verify | High(...)ory. [1024] | 2.875 us | 0.0419 us | 0.0371 us | 2.875 us |
HMACSHA256_Sign | some secret value | 2.438 us | 0.2610 us | 0.7573 us | 2.014 us |
HMACSHA256_Verify | some secret value | 2.271 us | 0.0330 us | 0.0308 us | 2.270 us |
HMACSHA256_Sign | some (...)value [93] | 2.051 us | 0.0135 us | 0.0120 us | 2.053 us |
HMACSHA256_Verify | some (...)value [93] | 2.300 us | 0.0165 us | 0.0129 us | 2.301 us |