English 简体中文 Tiếng Việt 日本語 한국어 हिन्दी Español Français العربية বাংলা Português Русский اردو Bahasa Indonesia Deutsch Naijá मराठी తెలుగు Türkçe தமிழ்
// cryptographic tool v2.0

RSA Cipher

CLIENT-SIDE ONLY
WEB CRYPTO API
🔒 纯客户端运行 — 密钥与数据仅在你的浏览器内处理,从不上传至任何服务器。基于浏览器原生 Web Crypto API 实现。
Algorithm Configuration
🔑
Key Material
RSA-OAEP 加密使用公钥 — 对应私钥用于解密(4096-bit / SHA-256
松开以加载文件
PLAINTEXT / INPUT
CIPHERTEXT / OUTPUT
下载为 .txt
Base64/Hex 文本格式
可直接阅读或粘贴
加密完成 — 原始二进制字节,可上传至解密工具
将本次配置(Mode / Key Size / Key / IV)导出,在解密工具中直接使用
需要解密?
就绪 — 配置密钥后点击加密或解密
Algorithm
RSA
OAEP / SHA-256
Key Strength
4096
bits
Security Level
HIGH
Asymmetric
Processed
0
bytes this session
🔑
为什么 RSA 加密使用公钥?
RSA 是非对称加密算法,使用一对密钥:公钥用于加密,私钥用于解密。公钥可以公开分发给任何想向你发送加密数据的人,而私钥必须严格保密。

这种设计的优势在于:发送方无需事先与接收方共享任何秘密信息。只要持有私钥,就能解密任何用对应公钥加密的数据。私钥一旦丢失,加密数据将永久无法恢复。
📏
密钥长度(Key Size)如何选择?
RSA 密钥越长,安全性越高,但生成密钥和加解密速度越慢。

2048-bit:目前普遍认为安全,适合一般用途,速度最快。

3072-bit:提供更高安全余量,适合需要长期保密的场景(推荐)。

4096-bit:最高安全级别,适合对安全性要求极高的场景,生成速度较慢。

注意:RSA 单次可加密的明文大小有限制,2048-bit/SHA-256 约 190 字节,4096-bit 约 446 字节。超出限制请分块或改用混合加密。
⚙️
OAEP Hash 是什么?
RSA-OAEP(Optimal Asymmetric Encryption Padding)是目前推荐的 RSA 加密填充方案,使用哈希函数来增加随机性,防止选择明文攻击。

SHA-256(推荐):安全性强,广泛使用,兼容性好。
SHA-384 / SHA-512:更高安全余量,但会略微减少可加密的最大明文长度。
SHA-1:仅为兼容老系统保留,新应用不建议使用。

加密和解密时必须使用相同的 Hash 算法。
🔠
输出编码(Output Encoding)是什么?
RSA 加密的原始结果是二进制字节,不能直接作为文本传输或存储。Output Encoding 将这些字节转换为可打印的文本格式。

Base64:将每 3 字节编码为 4 个 ASCII 字符,输出体积约为原始的 1.33 倍。紧凑易传输,广泛用于 API、邮件和 JSON 场景。

Hex(十六进制):将每字节表示为 2 个十六进制字符,输出体积是原始的 2 倍。可读性强,便于调试和逐字节检查。
📄
PEM 格式详解

1️⃣ PEM 格式详细介绍
PEM(Privacy-Enhanced Mail)是一种存储和传输密钥、证书的文本格式。它将二进制数据(DER 格式)进行 Base64 编码,并在首尾添加类似 -----BEGIN <标签>----------END <标签>----- 的页眉页脚。常见标签有:PUBLIC KEYPRIVATE KEYCERTIFICATE 等。这种格式易于在文本环境中复制、粘贴和传输,是目前最通用的密钥交换格式。

2️⃣ 除了 PEM 还可以是哪些格式?
- DER:纯二进制格式,直接存储 ASN.1 结构,无法直接阅读,常见于 Java 平台。
- HEX:将 DER 二进制表示为十六进制字符串,便于调试或嵌入代码。
- Base64(无页眉):仅对 DER 进行 Base64 编码,不带 PEM 页眉,用于某些配置或紧凑表示(如 JWT)。
- PKCS#12 (PFX):一种包含公钥和私钥的二进制容器格式,通常带有密码保护,用于浏览器或 Windows 系统。

3️⃣ 什么时候用哪种格式?
- PEM:最通用,适用于 OpenSSL、Web 服务器(Nginx/Apache)、API 交换等场景。
- DER:常用于 Java 环境或需要严格二进制存储的场合。
- HEX:在调试、嵌入式系统或需要精确查看字节内容时使用。
- Base64(无页眉):当格式受限或需要紧凑表示时(如 JSON Web Token 的一部分)。
- PKCS#12:需要同时传输公钥和私钥并保护私钥时(通常带密码)。