免费注册

RSA 加密解密与密钥生成

生成 RSA 公钥私钥,加密解密短消息,签名和验签,全部在浏览器里完成。

关于RSA 加密解密与密钥生成

RSA 加密解密常见于登录密码加密传输、支付回调验签、软件授权校验这些对接场景。这里可以生成 2048、3072 或 4096 位的密钥对,PEM 格式,私钥是 PKCS#8,公钥是 SPKI;老的 PKCS#1 格式密钥(以 BEGIN RSA PRIVATE KEY 开头)也能直接用。

加密解密支持 RSA-OAEP(SHA-256 或 SHA-1)和 PKCS#1 v1.5,后者和前端常用的 jsencrypt、PHP 的 openssl_public_encrypt 默认设置一致,登录页用 jsencrypt 加密的密码,可以拿私钥在这里解开核对。签名和验签使用 SHA-256,填充可选 PKCS#1 v1.5 或 PSS。密文和签名以 Base64 输出。一次能加密的内容很短,长数据要配合 AES 使用。密钥在浏览器里生成,不会发送到任何地方。用 RS256 签名的 JWT,可以拿公钥在JWT 解析里验签。

RSA 加密解密与密钥生成怎么用

  1. 1
    生成或粘贴密钥

    生成 2048、3072 或 4096 位密钥对,或粘贴自己的 PEM 密钥。

  2. 2
    选操作

    加密、解密、签名或验签。

  3. 3
    选填充方式

    加解密选 RSA-OAEP(SHA-256 或 SHA-1)或 PKCS#1 v1.5,签名选 PKCS#1 v1.5 或 PSS。

  4. 4
    复制结果

    密文和签名都是 Base64,复制即可。

为什么用熊仔工匠

  • 最长 4096 位

    PEM 格式,私钥 PKCS#8,公钥 SPKI,也能读 PKCS#1。

  • 兼容常用代码

    PKCS#1 v1.5 和 jsencrypt、PHP openssl_public_encrypt 的默认设置一致。

  • 签名验签

    SHA-256 签名,填充可选 PKCS#1 v1.5 或 PSS。

  • 私钥不外传

    在浏览器里生成和使用,不上传。

常见问题

RSA 加密解密与密钥生成常见问题

在线生成 RSA 密钥安全吗?
这里的密钥对是在你的浏览器里生成的,不会发送到任何地方。正式环境要用的密钥,可以打开页面后断开网络再生成。
RSA 一次能加密多长的内容?
很短。2048 位密钥用 PKCS#1 v1.5 最多 245 字节,用 OAEP(SHA-256)最多 190 字节,一个汉字按 UTF-8 占 3 字节。更长的数据先用 AES 加密,再用 RSA 加密 AES 密钥。AES 这一步可以用AES 加密解密完成。
同样的内容为什么每次加密结果都不一样?
RSA 的填充里带随机数,所以每次密文都不同,但用私钥都能解出同样的原文。
PKCS#1 和 PKCS#8 格式的私钥有什么区别?
是同一把密钥的两种包装。PKCS#1 以 BEGIN RSA PRIVATE KEY 开头,PKCS#8 以 BEGIN PRIVATE KEY 开头。这里生成 PKCS#8,两种都能读。
该选 OAEP 还是 PKCS#1 v1.5?
新项目用 OAEP(SHA-256)。对方用 jsencrypt 或 PHP openssl_public_encrypt 的默认设置时,选 PKCS#1 v1.5。
把RSA 加密解密与密钥生成分享给朋友打开浏览器就能用,对方不注册也能先试。

相关工具

HASH 哈希加密 MD5 / SHA一次算出文字的 MD5、SHA-1、SHA-256、SHA-512 和 SM3。
TIME Unix 时间戳转换Unix 时间戳与日期时间互转,同时显示本地时间和 UTC。
U+UNI Unicode 编码转换文字与 \u 转义、&#; 编码、U+ 码点、UTF-8 字节互转。
AES AES 加密解密用 AES(GCM、CBC、CTR 模式)加密或解密文字。
&;HTML HTML 实体编码转换把文字转成 HTML 实体,或把实体还原成文字。
JWT JWT 解析解析 JWT 的头部和载荷,检查过期时间和签名。
01BIN 进制转换数字在二进制、八进制、十进制、十六进制等进制之间转换。
BASE Base32 / Base58 编码Base32、Base58、Base85、Base16 的编码与解码。