Генератор ключей RSA
2048 / 3072 / 4096 бит · открытый ключ SPKI и закрытый PKCS#8 · JWK и отпечаток модуля в комплекте
私钥只存在于当前页面内存中:不写本地存储、不出现在任何网络请求里,刷新页面即消失。请妥善保管你复制/下载的内容。
—(对同一密钥对,指纹相同 = 同一把公钥,可用于核对)为什么私钥可以"只在你浏览器里"
密钥生成是纯数学运算。RSA 密钥对的生成只需要随机大数与模幂运算,这些运算现代浏览器的 Web Crypto 接口(背后常是操作系统/硬件的加密实现)都能直接完成。生成 2048 位密钥通常不到一秒,3072 / 4096 位也就多等几百毫秒——根本不需要把任何东西交给服务器。这也意味着:你的私钥从头到尾没有离开过这台设备,不存在"被服务器留存"的可能。
SPKI 与 PKCS#8 是两种标准容器。公钥按 SPKI(Subject Public Key Info)编码、私钥按 PKCS#8 编码,外面都包上 PEM 的 base64 与 BEGIN/END 头。这是目前最通用的两种格式:Nginx 的证书链、JWT 的 RS256 签名、OpenSSL 命令行都直接认。老式的 PKCS#1 私钥(BEGIN RSA PRIVATE KEY)本页不输出,需要时用 openssl pkey 转换即可。
模数指纹用来核对"是不是同一把公钥"。两把公钥是否相同,直接比文本容易看花眼;把公钥的模数(n)做 SHA-256 得到的短指纹则稳定可比。你在不同工具里生成或导入同一把公钥时,指纹一致就说明是同一条。
Частые вопросы
Да. Генерация идёт встроенной браузерной Web Crypto (RSASSA-PKCS1-v1_5 + SHA-256): открытый ключ - SPKI, закрытый - PKCS#8, оба стандартным PEM-текстом, хоть сейчас в Nginx, подписи JWT, OpenSSL и подобное; получишь - перепроверь через openssl pkey.
Нет. Генерация, экспорт и показ целиком в твоём браузере; закрытый ключ существует лишь в памяти этой страницы, в localStorage не пишется и ни в одном сетевом запросе не мелькает, а перезагрузка его стирает - endpoint загрузки на странице нет вовсе.
2048 бит отвечает нынешним требованиям безопасности и совместимее всех; 3072 (около 128 бит стойкости) годится для долгой службы; 4096 ещё надёжнее, но подпись и проверка заметно медленнее. Для обычной веба и подписи интерфейсов хватает 2048 или 3072.
SPKI везёт открытый ключ, PKCS#8 - закрытый (невзломанная, без шифрования версия). Страница не выдаёт старомодный PKCS#1 закрытым ключом; если принимающий требует PKCS#1, одна команда openssl pkey перельёт одну форму в другую.
Браузеры открывают API генерации ключей crypto.subtle только в безопасном контексте (https или localhost); откроешь страницу по http - она покажет подсказку и отключит кнопку генерации.