Laszlo

Hello, I am Laszlo

Software-Engineer, .NET developer

Contact Me

Crypto Signatures

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 Create or GenerateKey method to instantiate an algorithm.
  • The size of the signature depends on the algorithm, and most span based Sign methods 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 Rfc3279DerSequence output 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:

  1. The asymmetric signatures are dominated by the cost of the algorithm, not by the message size.
  2. The algorithm choice matters more than the size of the workload.
  3. 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.).
  4. The post quantum signatures are slower today than ECDsa, but still faster than the RSA algorithms.
  5. 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.
  6. 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