Skip to content

Ed25519 Forge

EdDSA · Curve25519 · RFC 8032

Generate a keypair, deterministically sign a message, verify signatures, and forge a small-order key to watch ZIP215 and strict verification disagree.

Key Forge

- 32-byte private scalar — never fully displayed in UI
- 32-byte private scalar → 32-byte compressed point on Curve25519
public key = [scalar]·G

The public key is the base point G added to itself scalar times. Watch a coarse double-and-add walk that mechanical multiplication on the real Ed25519 group (order shown, not to scale).

Your browser does not support canvas.

Generate a keypair to walk [scalar]·G.

Sign

- 64 bytes: R = bytes 0–31 (a curve point), S = bytes 32–63 (a scalar).

Verify

Enter hexadecimal characters. Spaces and separators are ignored.

Try a failure:
Awaiting keypair, signature, and verification input.
Why this matters

Most signature schemes require a random nonce per signature. If that RNG fails - even once - your private key is exposed. Ed25519 eliminates this entire class of failure by deriving the nonce deterministically from the private key and message. Sony's PlayStation 3 was broken because their ECDSA implementation used a constant nonce. Ed25519 makes that mistake structurally impossible. The "Ed25519 vs ECDSA" tab runs this break live on real P-256: reuse the nonce and watch the private key fall out and forge a signature the real verifier accepts.

Ed25519 vs ECDSA

Ed25519 uses deterministic nonces, derived from private key material and message, so nonce RNG failure cannot expose keys the way bad ECDSA nonce generation can. Its group has cofactor = 8, which affects validation rules and small-subgroup edge cases. Ed25519 is commonly batch-verified, often verifies around 2x faster than P-256 ECDSA in practical stacks, and always outputs compact 64-byte signatures (instead of variable-length DER encoding).

Live: an ECDSA nonce slip leaks the whole private key

This runs on real NIST P-256 in your browser. A fresh keypair signs two different messages. When the nonce k repeats, the two signatures share the same r, and the private key d falls straight out of the algebra — then a brand-new message is signed with the recovered key and handed to the real @noble/curves P-256 verifier. This is the class of bug Ed25519's deterministic nonce makes impossible.

Live: Ed25519 signs the same message twice — measured

The claim that Ed25519 is deterministic is checked, not asserted: the same message is signed twice with a fresh key and the two 64-byte signatures are compared byte-for-byte, right here.