https://github.com/johnmanjohnston/end-to-end-encrypted-chat
Utility to securely transfer text using end-to-end encryption
https://github.com/johnmanjohnston/end-to-end-encrypted-chat
chat cryption e2ee encryption-decryption end-to-end-encryption security
Last synced: 11 months ago
JSON representation
Utility to securely transfer text using end-to-end encryption
- Host: GitHub
- URL: https://github.com/johnmanjohnston/end-to-end-encrypted-chat
- Owner: johnmanjohnston
- Created: 2023-06-27T11:17:31.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2023-07-07T12:40:22.000Z (almost 3 years ago)
- Last Synced: 2025-03-14T04:43:58.194Z (about 1 year ago)
- Topics: chat, cryption, e2ee, encryption-decryption, end-to-end-encryption, security
- Language: JavaScript
- Homepage:
- Size: 9.77 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# end-to-end-encryted-chat
A basic utility to transfer text, using end-to-end encryption.
The utility is built using socket.io, to connect clients to the server and transfer text, and uses Node.js for the server.
# Usage
You can start the server, by using the following:
```shell
node server.js
```
The server should then start running on `http://localhost:3000`
Then, to connect as a client, you can run
```shell
node client.js
```
You'll then be prompted to enter a room name, then your username will be assigned as your socket ID.
After another user connects to the same room, both users' public keys will be stored and sent to each other, which are used to
encrypt messages.
To leave the room, enter `.exit`.
# Demo
On running `client.js`, you'll be prompted to enter a room name.

After entering a room name, you'll be assigned a username, which is your socket ID

We can also see the users joining the server.

After another client joins the same room, the clients' public keys are exchanged

Users can then have a lovely conversation about whatever they please.

All the data being sent over to the server is encrypted using state-of-the-art, end-to-end encryption, so even if the users are being spied on, the data can't be decrypted without the user's private key.

After a user leaves (by entering `.exit`), the other user in the room will be notified.

As users leave, we can see them leaving on the server.
