Computes the generator \( g \):

Computes the fingerprint \( \mathcal{H}(m) \):

Computes the public verification key \( v \):

Chooses the ephemeral key and its inverse:

Computes the signature of the fingerprint:

Enter the message (or integer) that Samantha wants to sign:

Hit **enter** to generate the parameters and use the
**left** and **right** arrow keys to navigate.

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 receives 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.

In the signature Samantha needs a random ephemeral key \( e \) that is unique for this signature and 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 the two values \( \sigma_{1} \) and \( \sigma_{2} \).

Finally she sends the message \( m \) and the signature \( (\sigma_{1}, \sigma_{2}) \) to Victor.

In the 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} \) 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 computes \( V_{1} \) and \( V_{2} \) which he needs in the last step of the verification.

Victor verifies the signature of the fingerprint \( \mathcal{H}(m) \).

If the two computed values are equals, 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 signature

Computes the inverse and the fingerprint:

Verifies the signature of the fingerprint: