Secrets Exchange

You are one of Alice and Bob, and you want to exchange secret messages with the other partner. Alice initiates the exchange with a handshake; Bob responds to the handshake. Once both sides have exchanged a token (which can safely be transmitted in public), they have a shared secret which nobody else knows and which they can use to exchange encrypted messages.

You may also like to visit the GitHub project page where you can obtain an offline application that does the same thing as this website, or visit the original version of this page.

Alice (initiates the handshake)
Step 1:
Enter a number
Step 2:
Send this to Bob
make sure this is not “1”
Step 3:
Paste Bob’s number
Step 4: Communicate start encrypting/decrypting
Bob (responds to the handshake)
Step 1:
Paste Alice’s number
Step 2:
Enter a number
Step 3:
Send this to Alice
make sure this is not “1”
Step 4: Communicate start encrypting/decrypting
Encrypt/decrypt messages:

The plain-text message must be at most 99 characters long. Please check whether “decrypt” actually reproduces the plain text before sending it to the other party.

Send message
Read message

Some background information

Your own number (Alice’s Step 1 and Bob’s Step 2) is your own, private secret that nobody else knows or must know. The shared secret (displayed below) is known only to you and your partner, but is and must never be transmitted.

If you make a copy of the shared secret, or of your private secret and the other party’s public handshake, you can later resume decrypting and encrypting messages from the same session. (To encrypt/decrypt messages with a user-defined shared secret, please use the old website.)

Internal data (for information only)
p a (large) prime
g a subgroup generator in (Z/pZ)×
gab the shared secret