Cifrado y descifrado RSA
Cifra con una clave pública RSA y descifra con la privada (OAEP o PKCS#1 v1.5).
openssl pkeyutl -decrypt -inkey private.pem -in ciphertext.bin -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256Cifra un secreto corto con la clave pública RSA de alguien (o con su certificado) para que solo quien tenga la clave privada pueda leerlo, o descifra un texto cifrado con tu clave privada. Elige OAEP con SHA-256 (recomendado), OAEP con SHA-1 o PKCS#1 v1.5; el resultado sale en Base64 o hexadecimal y funciona con OpenSSL. Todo se ejecuta en tu navegador, así que las claves y los mensajes nunca salen de tu dispositivo; es gratis y no requiere registro.
Cómo cifrar y descifrar con RSA
- Elige Cifrar o Descifrar y pega la clave o abre un archivo de clave: una clave pública o un certificado para cifrar, la clave privada (PKCS#8 o PKCS#1) para descifrar.
- Elige el relleno: OAEP · SHA-256, salvo que la otra parte necesite otro.
- Escribe el mensaje, o pega el texto cifrado en Base64 o hexadecimal. El resultado aparece mientras escribes.
- Copia el resultado, o descarga el texto cifrado como archivo .bin para OpenSSL.
Funciones
- Cifra con una clave pública, un certificado o la mitad pública de una clave privada; descifra con la clave privada
- OAEP con SHA-256 (predeterminado), OAEP con SHA-1 o PKCS#1 v1.5
- Claves en PEM o DER: SPKI, PKCS#1, PKCS#8 y certificados X.509, de hasta 16.384 bits
- Texto cifrado en Base64 o hexadecimal, o como archivo .bin; descifra Base64 o hexadecimal pegado, o un archivo .bin abierto
- Muestra cuántos bytes pueden cifrar la clave y el relleno, y el comando openssl pkeyutl equivalente
- Se ejecuta en un proceso de WebAssembly en segundo plano dentro de tu navegador
¿Es privado?
Sí. El cifrado y el descifrado se hacen en tu navegador, en un proceso de WebAssembly en segundo plano; las claves, los mensajes y los textos cifrados nunca se suben ni se guardan.
Preguntas frecuentes
¿Qué longitud puede tener el mensaje?
RSA cifra un solo bloque. Con una clave de 2048 bits, son hasta 190 bytes con OAEP SHA-256, 214 con OAEP SHA-1 y 245 con PKCS#1 v1.5; las claves más grandes permiten más. Para algo más largo, cifra los datos con un cifrado simétrico o usa Cifrar archivos.
¿Por qué el texto cifrado es distinto cada vez?
Todos los rellenos añaden bytes aleatorios antes de cifrar, así que el mismo mensaje da un texto cifrado nuevo cada vez. Es intencionado, y todos ellos se descifran en el mismo mensaje.
¿Funciona con OpenSSL?
Sí. Un texto cifrado aquí se descifra con openssl pkeyutl -decrypt -inkey private.pem -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256 (o rsa_padding_mode:pkcs1), y los textos cifrados con openssl pkeyutl -encrypt se descifran aquí. Usa el mismo relleno en ambos lados.
¿Qué formatos de clave puedo usar?
Claves públicas PEM (BEGIN PUBLIC KEY o BEGIN RSA PUBLIC KEY), certificados y claves privadas sin cifrar en PKCS#8 (BEGIN PRIVATE KEY) o PKCS#1 (BEGIN RSA PRIVATE KEY), también como archivos DER. Las claves protegidas con contraseña y las de OpenSSH hay que convertirlas antes; la herramienta explica cómo.
¿Por qué falla el descifrado?
Normalmente, por el relleno o la clave. Descifra con el mismo relleno que se usó para cifrar y con la clave privada que corresponde a la clave pública usada; la herramienta no distingue entre estos casos a propósito, así que prueba los otros rellenos. Un texto cifrado siempre mide lo mismo que la clave (256 bytes con una clave de 2048 bits), así que, si es más corto, se cortó al copiarlo.