search

Found

info Visão geral

Cole uma chave pública de 32 bytes, uma mensagem e uma assinatura de 64 bytes. Web Crypto do navegador executa a verificação Ed25519 (RFC 8032).

📘 Como usar

  1. Cole a chave pública Ed25519 (32 bytes) e escolha o formato (hex, base64 ou base64url)
  2. Insira a mensagem assinada e a assinatura de 64 bytes, ajustando cada seletor de formato
  3. Veja a etiqueta Válida ou Inválida e os bytes da chave, da mensagem e da assinatura

Verificador de assinatura Ed25519

Resultado da verificação

Preencha a chave pública, a mensagem e a assinatura para verificar automaticamente

Bytes da chave
Bytes da mensagem
Bytes da assinatura
Algoritmo
Ed25519

※ EdDSA conforme RFC 8032 sobre Edwards25519. Chave privada 32 B, chave pública 32 B, assinatura 64 B.

※ Usa a Web Crypto API do navegador (Ed25519). Chrome 137+, Safari 17+, Firefox 130+.

※ Todo o processamento ocorre no navegador; a chave, a mensagem e a assinatura nunca são enviadas a um servidor.

Article

Verificador de assinatura Ed25519 | Confira assinaturas EdDSA do RFC 8032 no navegador

Cole uma chave pública Ed25519, a mensagem e a assinatura, e a Web Crypto API do navegador executa a verificação EdDSA do RFC 8032 para dizer se a assinatura é válida para essa chave e essa mensagem. Três codificações (hex, base64, base64url) deixam você colar valores de JWT, chaves SSH ou transações de blockchain como estão.

💡 Sobre esta ferramenta

Ed25519 é o EdDSA sobre a forma de Edwards torcida da Curve25519. Suas chaves públicas de 32 bytes e assinaturas de 64 bytes, somadas a uma verificação rápida, o tornaram a escolha padrão em vários sistemas: o algoritmo EdDSA dos JWT, as chaves ssh-ed25519 do OpenSSH e a assinatura de transações na Solana, no Cosmos e na NEAR.

Quem já depurou verificação de assinatura conhece as perguntas. O servidor realmente assinou esse payload? A chave veio em base64, mas a documentação fala em hex — qual está certa? Uma atualização de biblioteca mudou a saída em silêncio e agora verify retorna falso. A ideia é isolar o problema sem escrever um script em Node ou um trecho em Python só para testar.

A ferramenta decodifica cada entrada para um Uint8Array conforme o formato, confere os tamanhos (32 bytes na chave, 64 na assinatura), importa a chave com crypto.subtle.importKey e chama crypto.subtle.verify. Cada campo tem o seu próprio seletor, então uma chave em hex ao lado de uma assinatura em base64 não é problema. A chave, a mensagem e a assinatura ficam no seu navegador e nunca são enviadas a um servidor.

🧐 Perguntas frequentes

Preciso da chave privada? Não. A verificação só precisa da chave pública. Não há campo de chave privada nem função de assinatura: esta ferramenta verifica, não gera novas assinaturas.

Devo colar a mensagem já com hash? Não. O Ed25519 (PureEdDSA) faz o hash da mensagem inteira internamente ao assinar e verificar, então cole a mensagem original como foi assinada. Um digest pré-calculado resultará em Inválida.

O que acontece se eu escolher a codificação errada? Se um valor não decodificar, aparece um erro em vermelho, e se a chave ou a assinatura não tiver 32 / 64 bytes, surge um aviso de tamanho. Reveja o seletor de formato de cada campo (hex, base64 ou base64url).

Meu navegador diz que o Ed25519 não é compatível. O Web Crypto Ed25519 existe no Chrome 137+, no Safari 17+ e no Firefox 130+. Em motores mais antigos, crypto.subtle.importKey falha, então a ferramenta avisa sobre a falta de suporte. Tente um navegador atualizado.

Ele verifica assinaturas Ed448 ou secp256k1? Não. Esta ferramenta é exclusiva para Ed25519. Assinaturas em outras curvas estão fora do escopo.

📚 Curiosidades

Um motivo do sucesso rápido do Ed25519 é a assinatura determinística. O ECDSA precisa de um nonce aleatório novo a cada assinatura, e nonces enviesados ou reutilizados já vazaram chaves privadas em incidentes reais. O Ed25519 deriva esse valor da chave privada e da mensagem, então a mesma chave e a mesma mensagem sempre produzem a mesma assinatura, e toda essa classe de falhas desaparece.

O número "25519" vem do primo 2²⁵⁵ − 19, que também dá nome à Curve25519. Uma chave pública cabe em 32 bytes porque um ponto da curva se comprime em uma única coordenada mais um bit de sinal: a matemática elegante por trás de uma chave ssh-ed25519 caber em uma só linha.