Computes the generator \( g \):
Computes the fingerprint \( \mathcal{H}(m) \) of the message:
Computes the public verification key \( v \):
Chooses the ephemeral key and calculates its inverse:
Computes the signature of the fingerprint:
Enter the message (or integer) that Samantha wants to sign:
Press Enter to generate the parameters. Use the Left and Right arrow keys to navigate between steps.
A trusted third party chooses two prime numbers, \( q \) and \( p \), and a generator \( g_{1} \) of the group \( \mathbb{Z}_{p} \).
The generator \( g_{1} \) is used to compute another generator \( g \) of order \( q \) from the group \( \mathbb{Z}_{p}^{*} \).
Samantha and Victor receive the two prime numbers \( p \) and \( q \), and the generator \( g \).
Samantha computes the fingerprint \( \mathcal{H}(m) \) of the message \( m \) by using the SHA-1 hash function \( \mathcal{H} \).
Samantha chooses a secret signing key \( s \) and computes the public verification key \( v \), which she sends to Victor.
For the signature, Samantha needs a random ephemeral key \( e \) that is unique for this signature, as well as its inverse \( e^{-1} \).
The extended Euclidean algorithm is used to compute the inverse \( e^{-1} \).
Samantha computes the signature of the fingerprint \( \mathcal{H}(m) \), which consists of two values: \( \sigma_{1} \) and \( \sigma_{2} \).
Finally, she sends the message \( m \) and the signature \( (\sigma_{1}, \sigma_{2}) \) to Victor.
For verification, Victor needs the inverse of \( \sigma_{2} \) and the fingerprint of the message.
The extended Euclidean algorithm is again used to compute the inverse \( \sigma_{2}^{-1} \).
Victor uses the SHA-1 hash function \( \mathcal{H} \), just as Samantha did, to compute the fingerprint \( \mathcal{H}(m) \) of the message \( m \).
If nobody has tampered with the content of the message, Victor will get the same fingerprint as Samantha.
Victor computes \( V_{1} \) and \( V_{2} \), which he needs in the final step of the verification.
Victor verifies the signature of the fingerprint \( \mathcal{H}(m) \).
If the two computed values are equal, the message was signed by Samantha and nobody has tampered with its content.
Receives the public parameters.
Receives the public verification key \( v \).
Receives the message and its signature.
Computes the inverse and the fingerprint:
Verifies the signature of the fingerprint: