Toolonit
  1. 首页
  2. 加密
  3. RSA 加密 / 解密

RSA 加密与解密

用 RSA 公钥加密、私钥解密(OAEP 或 PKCS#1 v1.5)。

填充方式

解密时要使用与加密时相同的填充方式。OAEP + SHA-256 是现在的默认选择;PKCS#1 v1.5 仅用于旧系统。

输出格式
用 OpenSSL 解密(.bin 文件):
openssl pkeyutl -decrypt -inkey private.pem -in ciphertext.bin -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256

用对方的 RSA 公钥(或证书)加密一段简短的机密信息,使只有私钥持有人才能读取;或者用你的私钥解密密文。可选 OAEP + SHA-256(推荐)、OAEP + SHA-1 或 PKCS#1 v1.5;结果为 Base64 或 hex,可与 OpenSSL 互通。一切都在浏览器中运行,密钥和消息不会离开你的设备;免费,无需注册。

如何用 RSA 加密和解密

  1. 选择“加密”或“解密”,然后粘贴密钥或打开密钥文件:加密用公钥或证书,解密用私钥(PKCS#8 或 PKCS#1)。
  2. 选择填充方式:除非对方另有要求,否则选“OAEP · SHA-256”。
  3. 输入消息,或以 Base64 或 hex 粘贴密文。结果会随输入实时显示。
  4. 复制结果,或把密文下载为 .bin 文件,供 OpenSSL 使用。

功能

  • 可用公钥、证书或私钥中的公钥部分加密;用私钥解密
  • OAEP + SHA-256(默认)、OAEP + SHA-1 或 PKCS#1 v1.5
  • 支持 PEM 或 DER 格式的密钥:SPKI、PKCS#1、PKCS#8 和 X.509 证书,最高 16384 位
  • 密文可为 Base64、hex 或 .bin 文件;可解密粘贴的 Base64 或 hex,或打开的 .bin 文件
  • 显示当前密钥和填充方式最多能加密多少字节,并给出对应的 openssl pkeyutl 命令
  • 在浏览器的 WebAssembly Worker 中运行

隐私安全吗?

是的。加密和解密都在浏览器的 WebAssembly Worker 中进行;密钥、消息和密文都不会上传或保存。

常见问题

消息最长可以有多长?

RSA 只加密一个数据块。使用 2048 位密钥时,OAEP SHA-256 最多 190 字节,OAEP SHA-1 最多 214 字节,PKCS#1 v1.5 最多 245 字节;密钥越长,上限越高。更长的内容,请用对称密码加密数据,或使用“文件加密”。

为什么每次的密文都不一样?

每种填充方式都会在加密前加入随机字节,所以同一条消息每次都会得到新的密文。这是有意设计的,每个密文都能解密出同一条消息。

能和 OpenSSL 配合使用吗?

能。在这里生成的密文可以用 openssl pkeyutl -decrypt -inkey private.pem -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256(或 rsa_padding_mode:pkcs1)解密,用 openssl pkeyutl -encrypt 生成的密文也能在这里解密。两边要使用相同的填充方式。

可以使用哪些密钥格式?

PEM 公钥(BEGIN PUBLIC KEY 或 BEGIN RSA PUBLIC KEY)、证书,以及未加密的 PKCS#8(BEGIN PRIVATE KEY)或 PKCS#1(BEGIN RSA PRIVATE KEY)私钥,它们的 DER 文件也可以。有密码保护的密钥和 OpenSSH 密钥需要先转换,工具会告诉你怎么做。

为什么解密失败?

通常是填充方式或密钥的问题。解密时要使用与加密时相同的填充方式,以及与所用公钥配对的私钥;工具有意不区分这两种情况,所以请逐一尝试其他填充方式。密文总是与密钥一样长(2048 位密钥为 256 字节),如果更短,说明复制时被截断了。

相关工具