Home › Developer Tools › RSA Encryption Tool

RSA Encryption Tool

Encrypt a short message with an RSA public key and decrypt it with the matching private key, using RSA-OAEP through your browser's Web Crypto API. Paste PEM or JWK keys, or generate a test key pair in one click.

Last updated:

Do the same with OpenSSL

  

Everything runs locally with the Web Crypto API; keys and messages never leave this page. Generated key pairs are for testing; for real secrets, create keys on the machine that will keep them.

Advertisement
Advertisement

How to use the RSA Encryption Tool

  1. Add keys: paste the recipient's public key to encrypt, or the private key to decrypt. Press Generate key pair to try it with fresh test keys.
  2. Pick the OAEP hash. SHA-256 is the modern default; choose SHA-1 to work with OpenSSL, Java or .NET code that uses plain OAEP padding.
  3. Encrypt: type the message and press Encrypt message. Copy the Base64 (or hex) ciphertext.
  4. Decrypt: switch to the Decrypt tab, paste the ciphertext and press Decrypt message. The same hash and label must be used on both sides.
  5. Check interoperability with the OpenSSL commands under Do the same with OpenSSL.

Maximum message size for RSA-OAEP

An OAEP-padded block can carry at most k − 2·hLen − 2 bytes, where k is the modulus length in bytes and hLen the hash output length (SHA-1 20, SHA-256 32, SHA-384 48, SHA-512 64 bytes). The ciphertext is always exactly k bytes long, whatever the message length.

Key sizeCiphertextOAEP SHA-1OAEP SHA-256OAEP SHA-512
2048-bit256 bytes (344 Base64 chars)214 bytes190 bytes126 bytes
3072-bit384 bytes (512 Base64 chars)342 bytes318 bytes254 bytes
4096-bit512 bytes (684 Base64 chars)470 bytes446 bytes382 bytes

Sizes are counted in UTF-8 bytes, so letters such as é or emoji use 2 to 4 bytes each.

Key formats this tool reads

HeaderFormatUse
BEGIN PUBLIC KEYX.509 SubjectPublicKeyInfo (SPKI)Encrypt
BEGIN RSA PUBLIC KEYPKCS#1 public keyEncrypt
BEGIN CERTIFICATEX.509 certificate (its public key is used)Encrypt
BEGIN PRIVATE KEYPKCS#8 private keyDecrypt (or encrypt via the derived public key)
BEGIN RSA PRIVATE KEYPKCS#1 private key (traditional OpenSSL)Decrypt
{"kty":"RSA", …}JSON Web Key or JWKSEncrypt or decrypt

Password-protected keys (BEGIN ENCRYPTED PRIVATE KEY) must be unlocked first with openssl pkey -in key.pem -out plain.pem. Need a key pair to start? Use the RSA key generator.

When to use RSA encryption

  • Short secrets such as a password, API token or symmetric key that only the private-key owner should read.
  • Hybrid encryption for anything longer: encrypt the data with AES-GCM (for example in the text encryption tool) and encrypt the random AES key with RSA.
  • Not for signatures: to prove who wrote a message, sign it (RSA-PSS or ECDSA) instead of "encrypting with the private key".
  • Use 2048-bit keys at minimum and 3072-bit keys for data that must stay secret beyond 2030, following NIST SP 800-57 guidance.

Frequently asked questions

How does RSA encryption work?

RSA uses a key pair. Anyone can encrypt with the public key, but only the holder of the private key can decrypt. Mathematically the message m becomes c = m^e mod n with the public exponent e and modulus n, and is recovered as m = c^d mod n with the private exponent d. OAEP padding adds randomness and integrity checks before that step.

Why is the ciphertext different every time?

RSA-OAEP mixes a fresh random seed into the padding for each encryption, so the same message and key give a different ciphertext every time. This is intentional: it stops an attacker from guessing the message by encrypting candidates and comparing. All versions decrypt to the same text.

How long can the message be?

One RSA-OAEP block holds at most k − 2h − 2 bytes, where k is the key size in bytes and h the hash length. A 2048-bit key with SHA-256 fits 190 bytes; with SHA-1 it fits 214 bytes. For longer data, encrypt it with AES and encrypt only the AES key with RSA (hybrid encryption).

Why does decryption fail with a message from OpenSSL or Java?

The most common cause is a hash mismatch. openssl pkeyutl with rsa_padding_mode:oaep and Java's RSA/ECB/OAEPPadding use SHA-1 by default, while this tool defaults to SHA-256. Switch the OAEP hash to SHA-1 and try again. A different OAEP label or the wrong private key also cause failures.

Does it support PKCS#1 v1.5 padding?

No. The Web Crypto API only offers RSA-OAEP for encryption, because the older PKCS#1 v1.5 encryption padding is vulnerable to padding-oracle attacks. RSA-OAEP is the recommended scheme in PKCS#1 v2.2 (RFC 8017).

Can I encrypt with the private key and decrypt with the public key?

Not with RSA encryption. Using the private key on data is signing, which proves who created it rather than hiding it. If you paste a private key into the public key box, this tool derives the public key from it and encrypts normally.

Are my keys and messages safe here?

Everything runs in your browser with Web Crypto; nothing is uploaded or stored. Even so, avoid pasting production private keys into any web page. Generated key pairs are fine for testing and learning.

Are all the tools on FreeToolCabin tested for quality and accuracy?

Yes! Every tool on our site undergoes automated Q/A testing in real browser environments to ensure high precision, correct output, and zero errors. If you happen to spot a bug or have a suggestion, please contact us at [email protected] and our team will review it right away.

Related tools

RSA Key GeneratorGenerate 2048, 3072 or 4096-bit RSA key pairs as PEM, PKCS#1, JWK or OpenSSH, locally.Text Encryption ToolEncrypt and decrypt text with a password using AES-256-GCM, entirely in your browser.PGP Encrypt / DecryptEncrypt, decrypt, sign and verify PGP messages with your armored keys, entirely offline.Base64 Encoder DecoderEncode or decode Base64 text and files, and make data URIs.Modular Exponentiation CalculatorCompute a^b mod m for huge numbers with square-and-multiply steps (BigInt).Modular Inverse CalculatorFind a⁻¹ mod m with the extended Euclidean algorithm, step by step, for huge numbers too.Password GeneratorCreate strong passwords and passphrases.Hash GeneratorGenerate MD5, SHA-1, SHA-256 and SHA-512 hashes of text or files.MD5 Hash GeneratorGenerate MD5 hashes of text, lines or files and verify checksums.SHA-256 Hash GeneratorSHA-256 and HMAC-SHA256 hashes of text, lines or files, in hex or Base64.URL Encoder DecoderPercent-encode or decode URLs, query strings and form data.HTML Entity Encoder / DecoderEscape and unescape HTML entities, named or numeric.Bcrypt Hash Generator & CheckerCreate bcrypt password hashes and check a password against a hash.Binary TranslatorConvert text to binary, hex, octal and back.HMAC GeneratorGenerate and verify HMAC signatures with SHA-256, SHA-512, SHA-1 or MD5.CRC32 Checksum CalculatorCalculate CRC-32, CRC-32C, CRC-16 and Adler-32 checksums of text or large files.JWT DecoderDecode JSON Web Tokens, read the claims and expiry, and verify HS256 signatures.JWT GeneratorCreate and sign HS256, HS384 or HS512 JSON Web Tokens in your browser and verify them.Password Strength CheckerSee how strong a password really is, how long it takes to crack and how to improve it.Caesar CipherEncode and decode Caesar shift ciphers and crack unknown shifts with a ranked brute force.Vigenère CipherEncrypt and decrypt Vigenère and Autokey ciphers, and crack unknown keys with frequency analysis.Atbash CipherEncode and decode Atbash ciphers (A↔Z, B↔Y) in Latin or Hebrew, with a live letter mapping table.ASCII TableFull ASCII code chart 0–255 in decimal, hex, octal, binary and HTML, with search and copy.Unicode Character LookupFind Unicode characters by name or code point and copy them with UTF-8, HTML and code escapes.Punycode ConverterConvert international domain names, emails and URLs between Unicode and xn-- Punycode, in bulk.JSON Escape / UnescapeEscape text for a JSON string, unescape \n and \" back to text, or stringify a whole object.Binary to HexConvert binary to hex instantly with steps and signed mode.Hex to BinaryConvert hex to binary instantly with steps and signed mode.Binary CalculatorAdd, subtract, multiply, divide, AND, OR, XOR and shift binary numbers with decimal values.Hex CalculatorHexadecimal + − × ÷ and AND, OR, XOR, NOT, shifts with decimal and binary equivalents.Base32 Encoder / DecoderEncode and decode Base32 (RFC 4648), Base32hex, Crockford and z-base-32 from text, hex or files.Base58 Encoder / DecoderEncode and decode Base58 and Base58Check (Bitcoin alphabet) from text or hex, with checksum verification.Unicode Escape / UnescapeConvert text to \uXXXX, \u{...}, \x, &#...; or CSS escapes and decode them back.File Hash CheckerGet MD5, SHA-1, SHA-256 and SHA-512 checksums of files and verify them against a hash.TOTP GeneratorGenerate 2FA one-time codes from a secret key, create otpauth QR codes and verify codes.SSL Certificate DecoderDecode PEM SSL/X.509 certificates: subject, issuer, expiry, SANs, key and fingerprints.Argon2 Hash GeneratorHash passwords with Argon2id, Argon2i or Argon2d and verify them against an encoded hash.Base64 to PDFDecode a Base64 string to a PDF with preview and download, or encode a PDF to Base64.Bitwise CalculatorCalculate AND, OR, XOR, NOT and bit shifts at 8–64 bits with a bit grid and all bases.CSR GeneratorCreate a certificate signing request (CSR) and private key with SANs, RSA or ECDSA, in your browser.MongoDB ObjectId to TimestampDecode a MongoDB ObjectId to its creation date, or build ObjectIds from dates for range queries.PGP Key GeneratorGenerate an OpenPGP key pair (Curve25519, NIST ECC or RSA) with passphrase and expiry, offline.Quoted-Printable Encoder / DecoderEncode or decode quoted-printable email text (MIME) with UTF-8 and 76-character soft line breaks.Self-Signed Certificate GeneratorCreate a self-signed SSL certificate and key for localhost or dev servers, as PEM or PFX.SHA-1 Hash GeneratorSHA-1 and HMAC-SHA1 of text or files in hex or Base64, plus Git blob hashes and verify.SHA-512 Hash GeneratorSHA-512 and SHA-384 hashes of text or files in hex or Base64, HMAC and hash verification.SRI Hash GeneratorCreate Subresource Integrity hashes (sha256/384/512) and ready <script> or <link> tags.SSH Key GeneratorGenerate Ed25519 or RSA SSH key pairs in your browser: OpenSSH public key plus private key.String Escape / UnescapeEscape or unescape strings for JavaScript, Java, C#, Python, C, SQL, regex, CSV and shell.UTF-8 Encoder / DecoderConvert text to UTF-8 bytes in hex, decimal, binary, \x or % and decode bytes back to text.UUID Decoder & ValidatorDecode any UUID: version, variant, v1/v6/v7 timestamp and MAC node, plus bulk validation.Base64 to FileDecode Base64 or a data URI to a downloadable file; detects the real file type and previews it.File Encryption ToolEncrypt and decrypt any file with a password using AES-256-GCM, entirely in your browser.Passphrase GeneratorMake strong, memorable diceware passphrases from a 7,776-word list, with entropy in bits.CSR DecoderDecode a PEM certificate signing request: subject, SANs, key size, signature and CA readiness checks.Enigma Machine SimulatorEncrypt and decrypt with a virtual Enigma I, M3 or M4: rotors, rings, plugboard and lampboard.Hex Opacity CalculatorConvert opacity percent to a 2-digit HEX alpha code and full #RRGGBBAA color, with a 0-100% table.Playfair CipherEncrypt and decrypt Playfair ciphers from a keyword, with the 5x5 key square and every digraph step.Pwned Password CheckerCheck if a password appeared in data breaches; only 5 characters of its SHA-1 hash are sent.SAML DecoderDecode SAMLRequest and SAMLResponse messages to readable XML, attributes and validity times.SSL Certificate ConverterConvert SSL certificates and keys between PEM, DER, PFX/P12 and P7B in your browser.Checksum CalculatorCompute 8-bit sum, two's complement LRC, XOR/BCC, NMEA, Fletcher and Internet checksums of bytes.PBKDF2 Hash GeneratorDerive PBKDF2 keys from a password, salt and iteration count with SHA-1, SHA-256 or SHA-512.Protobuf DecoderDecode raw Protocol Buffers hex or Base64 without a schema, or add a .proto for field names.XML Escape / UnescapeEscape & < > " ' for XML text and attributes, unescape entities back, or wrap text in CDATA.Binary Search Tree VisualizerInsert, delete and find in BST, AVL and red-black trees with animated rotations and traversals.
See all 65 Encoders, Hashes & Crypto →