🔐 EC Key Generator
Generate Elliptic Curve (EC) cryptographic key pairs for modern SSL/TLS certificates, ECDSA digital signatures, and secure communications.
- SSL/TLS Certificates: Used in HTTPS to secure websites with smaller, faster keys compared to RSA.
- Digital Signatures: EC keys are used to sign JWT tokens, code, and documents using ECDSA.
- SSH Authentication: Common in modern SSH setups (e.g.,
ecdsa,ed25519) for logging into servers. - Mobile & IoT Devices: Ideal for devices with limited CPU/battery due to efficiency.
- Blockchain & Crypto: Cryptocurrencies like Bitcoin and Ethereum use EC keys (e.g.,
secp256k1). - Zero-Knowledge Systems: Power advanced cryptography like zk-SNARKs and private coins (e.g., Monero).
| Feature | EC (Elliptic Curve) | RSA |
|---|---|---|
| Key Size | Smaller (256-bit) | Larger (2048+ bit) |
| Performance | Faster | Slower |
| Security per Bit | Higher | Lower |
| Mobile Friendly | ✅ Yes | ❌ Less ideal |
| Bandwidth Usage | Lower | Higher |
What the button does
This one really does generate a key in your browser, with no server involved. It calls the WebCrypto API for an ECDSA key pair on curve P-256 - the curve OpenSSL calls prime256v1 and standards call secp256r1 - marks it extractable, exports the private half as PKCS#8 DER, base64-encodes that and breaks it into 64-character lines between PRIVATE KEY markers. A new pair is made on load and on every click, and nothing is stored. Only the private key is shown; the public point sits inside it and can be derived at any time.
PEM, DER, PKCS#8 and SEC1
DER is the raw binary encoding; PEM is that same binary in base64 with header
lines. PKCS#8 is the generic private-key
container used here, labelled BEGIN PRIVATE KEY and carrying an
algorithm identifier. The older EC-specific SEC1 form is labelled
BEGIN EC PRIVATE KEY. Some tooling wants one and not the other:
openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -out ec.key
openssl pkey -in ec.key -noout -text # inspect, confirm the curve
openssl pkey -in ec.key -pubout -out ec.pub
openssl pkcs8 -topk8 -nocrypt -in sec1.key -out pkcs8.key
Frequently asked questions
What is the difference between BEGIN PRIVATE KEY and BEGIN EC PRIVATE KEY?
The first is PKCS#8, which names the algorithm inside the structure. The second
is SEC1, an elliptic-curve-only format. Both hold the same secret; convert with
openssl pkcs8 -topk8 in one direction, openssl ec in
the other.
Is P-256 stronger than RSA 2048?
Slightly. P-256 gives roughly 128 bits of security, against about 112 for RSA 2048, and matches RSA 3072 - with a 32-byte key instead of a 256-byte modulus, which is why handshakes are faster.
Can I get a secp256k1 key from this page?
No. It is fixed to P-256, and WebCrypto does not offer the Bitcoin curve.
For secp256k1 use openssl ecparam -name secp256k1 -genkey -noout.