RSA 加密与解密
用 RSA 公钥加密、私钥解密(OAEP 或 PKCS#1 v1.5)。
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 加密和解密
- 选择“加密”或“解密”,然后粘贴密钥或打开密钥文件:加密用公钥或证书,解密用私钥(PKCS#8 或 PKCS#1)。
- 选择填充方式:除非对方另有要求,否则选“OAEP · SHA-256”。
- 输入消息,或以 Base64 或 hex 粘贴密文。结果会随输入实时显示。
- 复制结果,或把密文下载为 .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 字节),如果更短,说明复制时被截断了。