Chooses the key \( K \)

Computes the MAC \( HMAC_{S} \) of the message \( 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 512-bit hexadecimal key \( K \) for the hash function \( \mathcal{H} \).

She then sends the key \( K \) through a secure channel to Victor.

Samantha uses the key \( K \), the 512-bit fixed hexadecimal strings \( opad = 36 \dots 36 \) and \( ipad = 5C \dots 5C \) to compute the MAC \(HMAC_{S} \) of the message \( m \) where \( \mathcal{H} \) is the SHA-1 hash function.

She then sends the MAC \( HMAC_{S} \) and the message \( m \) to Victor.

Like Samantha, Victor uses the key, the fixed hexadecimal strings \( opad = 36 \dots 36 \) and \( ipad = 5C \dots 5C \) and the SHA-1 hash function \( \mathcal{H} \) to compute the MAC \(HMAC_{V} \) of the message \( m \).

Victor verifies the MAC of the message \( m \).

If the two MAC's are equal he know that the message was written and signed by Samantha, i.e. nobody have tampered with the message.

Receives the key \( K \)

Receives the message \( m \) and the MAC \( HMAC_{S} \)

Computes the MAC \( HMAC_{V} \) of the message \( m \):

Verifies the MAC of the message: