如何Use RSA Encryption
加密 and decrypt data using RSA public-key cryptography, including key generation and padding.
问题
你需要加密数据具有公共键 所以该 仅 holder 的私有键 能够解密它.
前置条件
- Understanding 的公共-键 cryptography
- Knowledge 的键 sizes 和 padding
步骤
-
1. Generate or obtain a key pair
Generate an RSA key pair of at least 2048 bits; 3072 or 4096 bits are recommended for long-term security. The public key can be shared freely; the private key must be kept secret. Alternatively, obtain the recipient's public key.
输入key size: 4096输出public key + private key -
2. Encrypt with OAEP padding
Use OAEP (Optimal Asymmetric Encryption Padding) with a hash like SHA-256. Never use PKCS#1 v1.5 padding for encryption, as it is vulnerable to padding oracle attacks. RSA can only encrypt data smaller than the key size minus padding overhead.
输入small message + public key输出ciphertext -
3. Decrypt with the private key
The private key holder decrypts the ciphertext using OAEP with the same hash. For large data, encrypt a symmetric key with RSA and encrypt the data with AES (hybrid encryption). This is how TLS and PGP work.
输入ciphertext + private key输出original message
预期结果
Data encrypted 具有公共键 该仅 corresponding 私有键 能够解密.
常见错误
- Message is too long for RSA
- RSA can only encrypt data up to key_size - padding_overhead bytes. Use hybrid encryption: encrypt an AES key with RSA and the data with AES.
- Using PKCS#1 v1.5 padding
- PKCS#1 v1.5 is vulnerable to Bleichenbacher's padding oracle attack. Always use OAEP.
排障指引
- If decryption fails, verify the padding scheme and hash match on both sides.
- For large files, use hybrid encryption rather than chunking with RSA directly.
安全限制
- RSA key sizes below 2048 bits are considered insecure. Use 3072+ bits for new applications.
- All operations are local. Private keys never leave your machine.