Computes the generator \( g \):
Computes the fingerprint \( \mathcal{H}(m) \) of the message:
Computes the public verification key \( v \) and sends it to Victor:
Chooses a unique ephemeral key \( e \) for this signature:
Computes the signature of the fingerprint and sends it to Victor:
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 \) using a publicly known hash function \( \mathcal{H} \).
Samantha chooses a secret signing exponent \( s \) and computes the public verification exponent \( v \), which she sends to Victor.
For the signature, Samantha needs an ephemeral key \( e \) that is unique for this signature.
Samantha computes the signature of the fingerprint \( \mathcal{H}(m) \), which consists of two parts: \( \sigma_{1} \) and \( \sigma_{2} \). In the computation, she uses the concatenation operation \( \| \).
She then sends the message \( m \) and the signature \( (\sigma_{1}, \sigma_{2}) \) to Victor.
Victor uses the same hash function \( \mathcal{H} \) as Samantha to compute the fingerprint \( \mathcal{H}(m) \) of the message \( m \).
If nobody has tampered with the content of the message, Victor gets the same fingerprint as Samantha.
Victor verifies the signature of the fingerprint \( \mathcal{H}(m) \), using the concatenation operation \( \| \).
If the two computed values are equal, the message was signed by Samantha and nobody has tampered with the content of the message.
Receives the public parameters.
Receives the public verification key \( v \).
Receives the message and the signature.
Computes the fingerprint \( \mathcal{H}(m) \):
Verifies the signature of the fingerprint: