DSA Performance Test

Test metadata

Please note

FFC domain parameters

Choose the lengths (L,N) of the primes (p,q) for a desired security strength:

You may use the domain parameters p, q and g in the text areas below, or generate new ones. Generation of new domain parameters may take a few minutes. It is silently performed in the background by a web worker.

To generate new domain parameters, enter a different initial domain parameter seed in the first text area below or click the button to generate one at random.

Initial domain parameter seed (256 bits, encoded as 64 hex digits):

Validate the generated domain parameters using Algorithm A.1.1.3 of NIST FIPS 186-4.




FFC key pair

DSA uses an FFC key pair. You may use the key pair in the private and public key text areas below, or time the generation of random FFC key pairs by clicking the button.

The time it takes to generate a key pair is estimated by an experiment run in the background, where a web worker uses performance.now() to measure the time it takes to generate 100 random key pairs. Since performance.now() measures elapsed time rather than computation time, the measured time may be inflated by any extraneous activity taking place in the machine at the same time. To partially compensate for that, the experiment is repeated ten times and the minimum elapsed time is reported. The last random key pair generated in the last repetition of the experiment is written to the private and public key text areas.

Private key x:

Public key y:

DSA signature computation

You may enter the message to be signed in the text area below, or generate a random one with a specified bit length. The bit length must be a multiple of 4, and the message in the text area must be hex-encoded.

Bit length of message to be generated at random:

Message (hex-encoded):

Click the button below to time the generation of DSA signatures on the above message.

A DSA signature is randomized by the use of a random per-message secret. The time it takes to generate a randomized signature is estimated by an experiment run in the background, where a web worker uses performance.now() to measure the time it takes to generate 100 randomized signatures. For the reasons explained above in connection with the generation of key pairs, the experiment is repeated ten times and the minimum elapsed time is reported. The last randomized signature generated in the last repetition of the experiment will be written to the r and s text areas below.

Component r (hex encoded) of the last computed signature:

Component s (hex encoded) of the last computed signature:

DSA signature verification

Click the button below to time the verification of the above signature.

The time it takes to verify a signature is estimated by an experiment run in the background, where a web worker uses performance.now() to measure the time it takes to generate 100 randomized signatures. For the same reasons as above, the experiment is repeated ten times and the minimum elapsed time is reported.