RSA Encryption Learning

Message Encryption in RSA

Step 8 of 9

Learn how to encrypt messages using the RSA algorithm, convert text to numbers, and understand the mathematical principles behind secure encryption.

Understanding RSA Encryption

RSA encryption allows us to securely transmit messages by transforming plaintext into ciphertext using the recipient's public key. This process ensures that only the intended recipient with the corresponding private key can decrypt the message.

Formula: To encrypt a message M using the public key (n, e), we calculate:

C = Me mod n

Where C is the encrypted ciphertext, M is the numerical representation of the plaintext message, e is the public exponent, and n is the modulus.

Security Principles

The security of RSA encryption relies on the computational difficulty of factoring large numbers. Even if an attacker knows the public key (n, e) and the ciphertext C, they cannot easily determine the original message M without the private key.

Message Representation

Before encryption, text messages must be converted to numerical values. This is typically done by encoding the text using schemes like ASCII or UTF-8, and then converting the encoded bytes to integers.

Converting Text to Numbers

To encrypt a text message using RSA, we first need to convert the text into numerical values. This is typically done by encoding each character using ASCII or UTF-8, and then combining these values to form larger integers.

Example: Converting "HELLO" to a number

Using ASCII encoding:

Character ASCII Value Hexadecimal
H 72 48
E 69 45
L 76 4C
L 76 4C
O 79 4F

Combined as a hexadecimal number: 48454C4C4F

Converted to decimal: 310939249775

Note: In practice, long messages are typically broken into smaller blocks before encryption, as the message value M must be less than the modulus n.

The Encryption Process

RSA encryption involves several steps to transform a plaintext message into encrypted ciphertext using the recipient's public key.

1

Convert to Numbers

Transform the plaintext message into numerical values using a standardized encoding scheme like ASCII or UTF-8.

2

Break into Blocks

Divide the numerical message into blocks smaller than the modulus n to ensure proper encryption.

3

Apply Formula

For each block M, calculate C = Me mod n using the recipient's public key (n, e).

Step-by-Step Example

Example: Encrypting a Message

Let's encrypt the message "HI" using a simple RSA key pair:

  • Public key: n = 3233 (product of primes 61 and 53), e = 17
  • Convert "HI" to a number: H (72) and I (73) → 7273
  • Check if the message is smaller than n: 7273 > 3233, so we need to split it
  • Encrypt each character separately:
    • For "H" (72): C1 = 7217 mod 3233 = 855
    • For "I" (73): C2 = 7317 mod 3233 = 2698
  • The encrypted message is the pair (855, 2698)

Mathematical Detail:

To calculate 7217 mod 3233 efficiently, we use the "square and multiply" algorithm:

  • 721 = 72 mod 3233
  • 722 = 5184 mod 3233 = 1951
  • 724 = 19512 mod 3233 = 2804
  • 728 = 28042 mod 3233 = 2046
  • 7216 = 20462 mod 3233 = 1189
  • 7217 = 7216 × 721 mod 3233 = 1189 × 72 mod 3233 = 855

Encryption Visualization

RSA Encryption Calculator

Important Guidelines

  • Modulus (n) must be a product of two prime numbers (e.g., 3233 = 61 × 53)
  • Public exponent (e) must be coprime to φ(n) and typically a small prime number (common values: 3, 17, 65537)
  • Message value must be smaller than the modulus (n) to ensure correct encryption

Use this calculator to encrypt a message using RSA. You can enter either text or a numerical value to encrypt.

Must be a product of two prime numbers. Example: 3233 (61 × 53)
Common values: 3, 17, or 65537. Must be coprime to φ(n)

Enter either text or numbers - both will be encrypted automatically

Enter values to encrypt a message

Text to Number Converter

This tool helps you understand how text messages are converted to numerical values for RSA encryption.

Enter text to see its numerical representation

Practical Considerations for RSA Encryption

When implementing RSA encryption in real-world applications, several important considerations must be taken into account.

Message Size Limitations

The plaintext message (M) must be less than the modulus (n). For longer messages:

  • Break the message into smaller blocks
  • Encrypt each block separately
  • Combine the encrypted blocks to form the complete ciphertext

The maximum block size (in bytes) can be calculated as: ⌊log256(n)⌋

Padding Schemes

Simple RSA encryption (textbook RSA) is vulnerable to certain attacks. In practice, padding schemes are used to enhance security:

  • PKCS#1 v1.5: Adds structured padding to the message
  • OAEP (Optimal Asymmetric Encryption Padding): Uses random data and hash functions to pad the message

Padding prevents attacks like chosen-ciphertext attacks and provides semantic security.

Performance Considerations

RSA operations are computationally expensive, especially for large key sizes:

  • RSA is typically used to encrypt small pieces of data, such as symmetric keys
  • For larger messages, a hybrid approach is common: encrypt a random symmetric key with RSA, then encrypt the actual message with a faster symmetric algorithm (like AES)
  • The "square and multiply" algorithm is used for efficient modular exponentiation

Hybrid Encryption Example:

  1. Generate a random 256-bit AES key
  2. Encrypt the AES key using the recipient's RSA public key
  3. Encrypt the actual message using the AES key
  4. Send both the RSA-encrypted AES key and the AES-encrypted message

Practice Exercises

Test your understanding of RSA encryption with these exercises.

Exercise 1: Basic Encryption

Given the public key (n = 3337, e = 7), encrypt the message M = 42.

Exercise 2: Text Encryption

Using the public key (n = 2773, e = 17), encrypt the letter "A" (ASCII value 65).

Exercise 3: Understanding Block Size

For an RSA system with n = 3233, what is the maximum message value that can be encrypted?

Knowledge Check

1. What is the formula used for RSA encryption?

2. Why must the message M be less than the modulus n in RSA encryption?

3. Which of the following is a common approach for encrypting large messages with RSA?