Herramientas
Guías

Cifrado / Firma RSA

Cifrado

Cifrado RSA-OAEP y firma RSASSA-PKCS1-v1_5 con Web Crypto. Genera un par de claves o pega una clave PEM.

100 % del lado del cliente Sin backend
Mensaje
Firma
Clave (PEM)
Salida
Clave pública (PEM)
Clave privada (PEM)
En esta página

¿Qué es RSA?#

RSA es criptografía asimétrica: funciona con un par de claves emparejadas en lugar de con un único secreto compartido. Una clave pública se puede entregar a cualquiera: su único trabajo es cifrar datos y comprobar firmas. Una clave privada se queda contigo y es lo único que puede descifrar datos cifrados con la clave pública o producir una firma que cualquiera puede verificar. Esa separación es lo que permite a dos partes que nunca han compartido un secreto intercambiar mensajes confidenciales y probar autenticidad.

Esta página cubre las cuatro operaciones para las que se usa normalmente RSA, todas a través del motor nativo Web Crypto del navegador:

  • Cifrar / Descifrar usan RSA-OAEP con SHA-256, el esquema moderno de relleno autenticado. Un mensaje corto cifrado con la clave pública solo puede leerse con la clave privada.
  • Firmar / Verificar usan RSASSA-PKCS1-v1_5 con SHA-256, el esquema de firma más interoperable, el que la mayoría de JWTs y cadenas X.509 aún usan.
  • La generación de claves produce pares de 2048, 3072 o 4096 bits con un exponente público de 65537, exportados como PEM estándar (SubjectPublicKeyInfo para la clave pública, PKCS#8 para la privada).

RSA está deliberadamente limitado a payloads cortos. Con RSA-2048 y SHA-256, el mensaje más grande que puedes cifrar es de unos 190 bytes; para algo más grande, usa la herramienta simétrica y protege su clave con RSA.

Cómo usarlo#

  1. Genera un par. Elige un tamaño de clave (2048 / 3072 / 4096) y pulsa Generar par de claves. Se rellenan dos cajas de solo lectura: la clave pública y la clave privada, ambas en PEM. Copia cada una a un sitio seguro: la clave privada es lo que nunca debes compartir.
  2. Elige un modo: Cifrar, Descifrar, Firmar o Verificar.
  3. Pon la clave correcta en el campo Clave según el modo:
    • Cifrar → pega la clave pública.
    • Descifrar → pega la clave privada.
    • Firmar → pega la clave privada.
    • Verificar → pega la clave pública.
  4. Escribe el mensaje. Para verificar, pega también la firma (base64) en el campo de firma.
  5. Ejecútalo. La línea de estado reporta el resultado; para verificar indica de forma explícita si la firma es válida o no.

Características principales#

  • Dos algoritmos, un único par de claves. El mismo PEM sirve para el cifrado OAEP y la firma PKCS#1, porque Web Crypto toma el algoritmo al importar.
  • Salida PEM estándar. Las claves públicas son SPKI, las privadas PKCS#8: los formatos que cualquier lenguaje y plataforma leen de forma nativa.
  • Exponente público 65537. El valor universalmente elegido; lo bastante pequeño para ser rápido, lo bastante grande para evitar debilidades conocidas.
  • Firmas interoperables. RSASSA-PKCS1-v1_5 es el formato que esperan los JWTs reales, la firma de código y las cadenas de certificados.
  • Cero subidas. La generación de claves, el cifrado y la firma se ejecutan localmente en tu navegador; la clave privada nunca toca un servidor.

Ejemplo detallado#

Pulsa Generar par de claves con 2048 seleccionado. La caja de la clave pública se rellena con un bloque PEM de esta forma:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyY7v...(líneas de base64)
-----END PUBLIC KEY-----

La caja de la clave privada se rellena con un bloque -----BEGIN PRIVATE KEY----- más largo. Ahora cambia a Cifrar, pega la clave pública en el campo Clave, escribe handshake: 0x4F2A como mensaje y ejecútalo. La salida es un único blob base64 de unos 344 caracteres: exactamente 256 bytes de texto cifrado RSA-2048, codificados en base64.

Cambia a Descifrar, pega la clave privada en el campo Clave, suelta ese blob en el campo del mensaje y ejecútalo: el handshake: 0x4F2A original regresa. Para firmar, el mismo flujo con Firmar produce una firma base64 de 344 caracteres que Verificar confirmará como válida frente a la clave pública, y reportará como no válida si cambias un solo carácter del mensaje antes.

Preguntas frecuentes#

¿Por qué RSA solo puede cifrar mensajes cortos?#

RSA opera con números módulo el tamaño de la clave. Con RSA-2048 tienes un bloque de 256 bytes, y el relleno OAEP consume 2 * hashLen + 2 bytes de él (98 para SHA-256), dejando 190 bytes para el mensaje. Es por diseño: RSA es para claves y firmas, no para datos en volumen. El patrón estándar es «híbrido»: cifra los datos en volumen con AES (usa la herramienta simétrica) y luego cifra solo la clave AES con RSA.

¿2048, 3072 o 4096 bits?#

2048 es la base actual y aún se considera adecuada para la mayoría de los usos. 3072 equivale aproximadamente a una fuerza simétrica de 128 bits; 4096 es la opción conservadora para claves que quieres que duren una década o más. Cada paso cuesta tiempo real en la generación de claves y en cada operación, con rendimientos de seguridad decrecientes.

¿Cuál es la diferencia entre cifrar y firmar?#

El cifrado va sobre secreto: la clave pública cierra, la clave privada abre. La firma va sobre autenticidad: la clave privada crea la firma, la clave pública la comprueba. Usan el mismo par de claves pero algoritmos distintos (OAEP frente a PKCS#1) y responden a preguntas distintas: «¿puede alguien leer esto?» frente a «¿produjo esto de verdad el poseedor de esta clave?».

¿Mi clave privada se envía a algún sitio cuando la genero o la uso?#

No. La generación, el cifrado, el descifrado, la firma y la verificación se realizan todos dentro de la página por Web Crypto. Los bloques PEM existen solo en tu pestaña del navegador; no se transmite nada. Si manejas una clave privada de producción, genérala en un entorno que controles en lugar de pegarla en una página web.