Computes the public key \( pk = (n, v) \):
Computes the fingerprint \( \mathcal{H}(m) \):
Computes the signature \( \sigma \) of the fingerprint \( \mathcal{H}(m) \):
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.
Samantha chooses the two prime numbers \( p \) and \( q \) and computes \( n = p \cdot q \).
She then computes the public verification exponent \( v \) by randomly choosing a \( 3 \leq v \leq n-1 \) until \( \gcd(v, \phi(n)) = 1 \) where \( \phi(n) = (p - 1) \cdot (q - 1) \).
Samantha then sends her public key \( pk = (n, v) \) to Victor.
Samantha computes the fingerprint \( \mathcal{H}(m) \) of the message \( m \) by using a public known hash function \( \mathcal{H} \).
Because Samantha know the value of \( v \) and \( \phi(n) \) she can easily compute the secret signing exponent \( s \) with the extended Euclidean algorithm.
She then computes the signature of the fingerprint and sends the message \( m \) and the signature \( \sigma \) 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 get the same fingerprint as Samantha.
Victor verifies the signature \( \sigma \) 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 key \( pk = (n, v) \)
Receives the signature \( \sigma \) and the message \( m \)
Computes the fingerprint \( \mathcal{H}(m) \):
Verifies the signature of the fingerprint: