Aller au contenu
uencoder

Implémenter ECDSA signatures

ECDSA (Elliptic Curve Digital Signature Algorithme) provides digital signatures avec smaller clés than RSA. Apprendre signing et verification.

  1. 1

    ECDSA: to sign message m with private key d, compute e = hash(m), pick random k, compute (x, y) = k*G, r = x mod n, s = k^(-1)(e + r*d) mod n. Signature is (r, s). To verify with public key Q = d*G: compute w = s^(-1) mod n, u1 = e*w, u2 = r*w, (x, y) = u1*G + u2*Q, verify x mod n = r. The random k must never repeat or leak — this broke PlayStation 3 and some Bitcoin wallets.

  2. 2
    Générateur HMAC →

    Générer a deterministic HMAC for the message. ECDSA requires a hash of the message — use SHA-256. For deterministic ECDSA (RFC 6979), derive k from the private key and message hash using HMAC, eliminating the need for random k and preventing nonce reuse vulnerabilities.

  3. 3
    Calculatrice de hash →

    Hash the message with SHA-256 before signing. The hash reduces the message to a fixed-size digest that fits in the curve's field. Use SHA-256 for P-256, SHA-384 for P-384. Never use MD5 or SHA-1 — they are broken and allow signature forgery.

Questions fréquentes

What happens if the ECDSA nonce k is reused?
Catastrophic key compromise. If two messages are signed with the same k, an attacker can compute the private key d from the two signatures. This broke Sony PlayStation 3 (static k) and some early Bitcoin implementations. Use deterministic ECDSA (RFC 6979) to eliminate this risk.
ECDSA vs EdDSA?
ECDSA requires a random nonce per signature (or deterministic derivation). EdDSA (Ed25519) is deterministic by design, uses Edwards curves (faster, simpler, no special cases), and is strongly unforgeable. Use Ed25519 (EdDSA) for new systems — it is simpler, faster, and avoids the nonce pitfall.

Workflows résolvant cette tâche

Hacher le contenu et coder en Base64
Calculer un hachage de l'entrée et coder le condensat en Base64 pour un transport compact.
PIPELINE
Hacher le texte et vérifier l'intégrité
Calculer un hachage du texte d'entrée et le comparer à un hachage attendu pour vérifier l'intégrité.
PIPELINE
Hacher le texte et vérifier avec somme CRC32
Calculer à la fois un hachage cryptographique SHA-256 et une somme de contrôle CRC32 pour la vérification d'intégrité des données.
PIPELINE
Signer HMAC puis coder en Base64
Générer une signature HMAC puis coder en Base64 pour les en-têtes d'authentification API.
PIPELINE
Signer HMAC et vérifier
Générer une signature HMAC pour un message et la vérifier contre une signature attendue.
PIPELINE
Signer HMAC une chaîne de requête API
Générer une signature HMAC-SHA256 pour une charge utile de requête pour authentifier les appels API.
PIPELINE
Hacher MD5 puis coder en Base58
Calculer le hash MD5 puis coder en Base58 pour une représentation compacte.
PIPELINE
Comparaison de vitesse multi-hash
Hacher l'entrée et benchmarker plusieurs algorithmes de hachage pour comparer leur vitesse et sortie.
PIPELINE
Générer un mot de passe et hacher
Générer un mot de passe aléatoire puis le hacher pour un stockage sécurisé.
PIPELINE
Hash SHA3-256 avec somme CRC32
Calculer le hash SHA3-256 puis la somme CRC32 pour une double vérification d'intégrité.
PIPELINE
Hacher SHA-512 puis Hex
Calculer le hash SHA-512 puis coder en Hex pour lisibilité.
PIPELINE
Inverser le texte et hacher
Inverser le texte puis calculer le hachage SHA-256 du résultat inversé.
PIPELINE
Brouiller le texte et hacher
Brouiller le texte puis hacher le résultat brouillé.
PIPELINE

Outils associés