Cifrado, descifrado, firmas y generación de claves RSA
CifradoTodo se ejecuta en tu navegador: no se sube nada
Cifra con una clave pública RSA, descifra con la privada, o firma y verifica — todo dentro del navegador, sin subir ni las claves ni el contenido. Se aceptan las cuatro cabeceras PEM: `PUBLIC KEY` y `PRIVATE KEY` (X.509 / PKCS#8), además de `RSA PUBLIC KEY` y `RSA PRIVATE KEY` (PKCS#1, la forma habitual en OpenSSL antiguo y en conversiones de `ssh-keygen`; esta herramienta las envuelve en la cáscara ASN.1 que espera la API criptográfica del navegador). ¿Sin claves a mano? Usa «Generar un par de claves»: se crea uno nuevo en local y se emite como PEM de clave privada PKCS#8 y clave pública SPKI, listo para guardar en archivos. ⚠️ Tres cosas que conviene saber: el cifrado usa relleno OAEP — la API del navegador omite a propósito el cifrado PKCS#1 v1.5 por el ataque Bleichenbacher de oráculo de relleno, así que hablar con un sistema antiguo que solo admita `PKCS1Padding` requiere un servidor —; RSA cifra muy pocos datos, 190 bytes con una clave de 2048 bits y OAEP-SHA256, por lo que para contenido más largo hace falta cifrado híbrido (genera una clave AES para el cuerpo y cifra solo esa clave con RSA); y las claves de 1024 bits ya no se consideran seguras — úsalas solo por compatibilidad con sistemas antiguos y, para lo nuevo, 2048 bits o más.
Funciones
- Cinco operaciones: generar un par de claves, cifrar, descifrar, firmar y verificar
- Genera en local un par RSA de 1024 / 2048 / 3072 / 4096 bits, emitido como privada PKCS#8 y pública SPKI en PEM
- Las cuatro cabeceras PEM, PKCS#1 incluida (la cáscara ASN.1 se añade por ti)
- Las claves con saltos de línea, sangría y espacios sobrantes funcionan tal cual se peguen
- Criptograma y firmas en Base64 o hexadecimal
- OAEP-SHA256 para el cifrado y RSASSA-PKCS1-v1_5 para las firmas (la opción más compatible)
- Si se da la clave equivocada, se nombra con claridad en vez de aflorar como un error de relleno
Cómo se usa
- Elige la operación: generar un par de claves, cifrar, descifrar, firmar o verificar
- Al cifrar o firmar, pega la clave PEM en el campo correspondiente; al generar no hace falta clave
- Para verificar, rellena además el campo de la firma
- Pega el contenido y pulsa Ctrl/⌘ + Enter, o haz clic en Ejecutar; las claves de 3072 / 4096 bits tardan unos segundos
Preguntas frecuentes
- ¿Por qué no se puede cifrar con PKCS#1 v1.5?
- Porque la Web Crypto del navegador implementa solo OAEP. Es deliberado: el cifrado v1.5 sufre el ataque Bleichenbacher de oráculo de relleno — distinguiendo «relleno incorrecto» de «relleno correcto pero contenido distinto», un atacante recupera el texto claro paso a paso, y desde 1998 no han dejado de aparecer variantes —. Por eso la especificación lo excluye del cifrado y lo mantiene solo para firmas, donde no surge ningún oráculo de relleno. Así que esta herramienta no puede con `RSA/ECB/PKCS1Padding`, una forma muy común en sistemas antiguos: eso necesita un servidor o una biblioteca dedicada.
- ¿Cuántos datos puede cifrar RSA?
- Muy pocos, y la cantidad escala con la clave: RSA-OAEP con SHA-256 limita una clave de 2048 bits a 190 bytes (256 menos dos hashes de 32 bytes menos 2) y una de 4096 bits a 446 bytes. Pasarse falla. No es un límite de implementación, sino una consecuencia de la estructura matemática de RSA. Para contenido más largo, el método estándar es el cifrado híbrido: genera una clave AES aleatoria para cifrar el cuerpo y cifra solo esa clave AES con RSA — y una clave AES son 16 o 32 bytes, cómodamente dentro del límite.
- ¿Qué diferencia hay entre firmar y cifrar? ¿Cuál uso?
- Cifrar responde a «que nadie más lo lea» (se cifra con la clave pública del destinatario; solo él puede descifrarlo con la privada). Firmar responde a «esto viene de quien dice y no se ha modificado» (se firma con tu propia clave privada; cualquiera verifica con tu pública). Van en direcciones opuestas: el cifrado entra por la clave pública y sale por la privada; la firma entra por la privada y sale por la pública. En sistemas reales a menudo se usan las dos: al enviar un contrato se cifra con la pública del destinatario para la confidencialidad y se firma con tu privada para el origen. Los dos modos de aquí corresponden justo a esos dos usos; solo ten cuidado de no intercambiar las claves.
- ¿Qué produce «Generar un par de claves» y qué tamaño elijo?
- Dos bloques PEM estándar: una clave privada PKCS#8 y una clave pública SPKI, creadas a partir de la fuente aleatoria criptográfica del navegador y existentes solo en esta salida. Sobre el tamaño, 2048 bits es la opción recomendada hoy — seguridad suficiente y buena compatibilidad —; 1024 bits ya no se considera seguro (su coste de factorización está al alcance) y pertenece solo a integraciones antiguas; 3072 / 4096 resisten mejor el futuro, a cambio de unos segundos de generación y de operaciones más lentas después. La generación es cálculo puro: tras hacer clic, dale un momento — 3072 / 4096 bits no es un cuelgue, es aritmética.
Herramientas relacionadas
AES / DES
CifradoCifra y descifra texto con AES, DES o 3DES en los modos CBC, GCM, CTR y ECB, con claves en texto, hex o Base64. Se ejecuta en tu navegador.
Hash
CifradoCalcula resúmenes MD5, SHA-1, SHA-256, SHA-512 o MD4 de cualquier texto, en bytes UTF-8 para que coincidan con openssl. En tu navegador.
Bcrypt
CifradoGenera hashes bcrypt ($2y$) o comprueba una contraseña contra uno existente. El factor de coste es ajustable y todo se calcula en tu navegador.
Base64
CifradoConvierte texto a Base64 y al revés, con UTF-8 correcto para acentos, chino y emoji. Todo se ejecuta en tu navegador: no se sube nada.
Codificar URL
CifradoEscapa texto a la forma %XX y lo devuelve, tratando una URL completa y un valor de parámetro como trabajos distintos. Todo en tu navegador.
Entidades HTML
CifradoConvierte < > & y las comillas en entidades HTML y las devuelve en una sola pasada, así que &lt; da <, no un ángulo. En tu navegador.