Jacob's RSA Implementation Running on Web Assembly

This is a version of my RSA Implementation with OAEP running entirely client-side* in your browser with Web Assembly! It runs slowly (and generating large keys is impractical) due to the limitations of WASM, but if you'd like to use high-speed versions of my code, please feel free to clone, compile, and run either the "multithreaded" or "max-speed" branches of my code (not the "emscripten" branch running here in your browser's virtual machine).

* The project only runs client-side-only if you use none of the recently-added server-side functionality. See here for more info.

Note: Generating keys here is somewhat less secure than cloning, compiling, and running my machine-code (non-emscripten) branches from GitHub.

WHY: Because Web Assembly's wasi-random has not yet been implemented nor standardized, I am forced (on the web version only) to use a pseudorandom number generation method that is only semi-cryptographically secure.

The Good News:

New Server-Side Functionality

Securely Store Your Text Across Devices

I've introduced a new encryption feature for securely storing text on the server, accessible from any device with your private key. Here's how it works:

  1. Firstly, your browser must prove to the server that it has the private key associated with your public key.
  2. Now authenticated, your browser can upload text to store via a similar process.
  3. Downloading Stored Data

No Key Loaded

Stored Keys (client-side only via JS localStorage)

Key Generation

Key Download

Key Upload

Encryption

Message Validation

Decryption

Message Signing

Ciphertexts, Plaintexts, and Signatures