Verificador de firma Ed25519 | Comprueba firmas EdDSA del RFC 8032 en el navegador
Pega una clave pública Ed25519, el mensaje y la firma, y la Web Crypto API del navegador ejecuta la verificación EdDSA del RFC 8032 para indicar si la firma es válida para esa clave y ese mensaje. Tres codificaciones (hex, base64, base64url) te permiten pegar valores de JWT, claves SSH o transacciones de blockchain tal cual.
💡 Sobre esta herramienta
Ed25519 es EdDSA sobre la forma de Edwards retorcida de Curve25519. Sus claves públicas de 32 bytes y firmas de 64 bytes, junto con una verificación rápida, lo convirtieron en la opción por defecto en muchos sistemas: el algoritmo EdDSA de los JWT, las claves ssh-ed25519 de OpenSSH y la firma de transacciones en Solana, Cosmos y NEAR.
Para quien aprende criptografía aplicada, lo valioso aquí es ver el flujo completo paso a paso. Una firma EdDSA no es magia: la verificación toma tres entradas independientes —clave pública, mensaje y firma— y devuelve un único bit, válido o inválido. Si cambias un solo carácter del mensaje, la firma deja de coincidir, porque Ed25519 (PureEdDSA) calcula un hash sobre el mensaje completo. Probar esa propiedad a mano fija la intuición mejor que cualquier diagrama.
La herramienta decodifica cada entrada a un Uint8Array según su formato, comprueba las longitudes (32 bytes la clave, 64 la firma), importa la clave con crypto.subtle.importKey y llama a crypto.subtle.verify. Cada campo tiene su propio selector, así que puedes combinar una clave en hex con una firma en base64. La clave, el mensaje y la firma se procesan en tu navegador y nunca se envían a un servidor.
🧐 Preguntas frecuentes
¿Necesito la clave privada? No. La verificación solo necesita la clave pública. No hay campo para la clave privada ni función de firma: esta herramienta verifica, no genera firmas nuevas.
¿Debo pegar el mensaje ya hasheado? No. Ed25519 (PureEdDSA) hashea el mensaje completo de forma interna al firmar y verificar, así que pega el mensaje original tal como se firmó. Un digest previo dará Inválida.
¿Qué ocurre si elijo la codificación equivocada? Si un valor no se decodifica verás un error en rojo, y si la clave o la firma no miden 32 / 64 bytes aparece un aviso de longitud. Revisa el selector de formato de cada campo (hex, base64 o base64url).
Mi navegador dice que Ed25519 no es compatible.
Web Crypto Ed25519 está disponible en Chrome 137+, Safari 17+ y Firefox 130+. En motores anteriores crypto.subtle.importKey falla, así que la herramienta informa de la falta de soporte. Prueba con un navegador actualizado.
¿Verifica firmas Ed448 o secp256k1? No. Esta herramienta es solo para Ed25519. Las firmas sobre otras curvas quedan fuera del alcance.
📚 Datos curiosos
Una razón del rápido éxito de Ed25519 es la firma determinista. ECDSA necesita un nonce aleatorio nuevo por firma, y los nonces sesgados o reutilizados han filtrado claves privadas en incidentes reales. Ed25519 deriva ese valor de la clave privada y del mensaje, así que la misma clave y el mismo mensaje siempre producen la misma firma y desaparece toda esa clase de fallos.
El número "25519" proviene del primo 2²⁵⁵ − 19, que también da nombre a Curve25519. Una clave pública cabe en 32 bytes porque un punto de la curva se comprime a una sola coordenada más un bit de signo: la matemática elegante detrás de que una clave ssh-ed25519 ocupe una única línea.