Computes \( A \) in the public key:
Receives the ciphertext \( (c_{1}, c_{2}) \)
Computes \( x \) and \( x^{-1} \):
Decrypts the ciphertext:
Enter the message (a sentence) or key (an integer between 1 and 280) that Bob wants to send encrypted to Alice:
Hit enter to generate the parameters and use the left and right arrow keys to navigate.
A trusted third party publish a prime number \( p \) and a generator \( g \) of the group \( \mathbb{Z}_{p}^{*} \).
Alice chooses the secret key \( sk = a \) and computes the public key \( pk = (p, g, A) \) which she sends to Bob.
The ciphertext of the message \( m \) consists of the two values \( c_{1} \) and \( c_{2} \).
To compute \( c_{1} \) Bob needs an random ephemeral key \( k \) that is unique for this encryption.
Before Bob can encrypt the message \( m \) he needs to convert each letter into its corresponding ASCII value.
Bob uses Alice's public key \( pk = (p, g, A) \) to encrypt the message \( m \).
He then sends the ciphertext \( (c_{1}, c_{2}) \) to Alice.
Alice needs the inverse of \( x \) to decrypt the ciphertext \( c_{2} \).
First Alice computes the value of \( x \) using \( c_{1} \) and the secret key \( sk = a \) and then she uses the extended Euclidean algorithm to compute the inverse \( x^{-1} \) of \( x \).
Alice uses \( x^{-1} \) to decrypt the received ciphertext from Bob.
Receives the public key \( pk = (p, g, A) \)
Computes the first value \( c_{1} \) of the ciphertext
Converts the letters into ASCII values:
Encrypts the message \( m \):