Generates a public/private key pair for a user.
Output: publicKey & privateKey (Base64)
Derives a shared session key.
Output: SharedSessionKey (Base64)
Encrypts a plaintext string using AES-256-GCM.
Output: ciphertext & iv (Base64)
Decrypts ciphertext back into plaintext.
Output: PlainText (String)
GenerateKeyPair() – Both sender and receiver create their key pairs.
Exchange Public Keys – Share only public keys.
EstablishSharedKey() – Derive a shared session key.
EncryptMessage() – Encrypt messages using the session key.
DecryptMessage() – Decrypt received messages.
Flow of the Project
Step 1: Generate Key Pair for Sender
Step 2: Generate Key Pair for Receiver
Step 3: Establish Shared Session Key
(The receiver can also run EstablishSharedKey(PrivateKeyOfReceiver, PublicKeyOfSender) to get the same session key.)
Step 4: Encrypt a Message
Step 5: Decrypt a Message