RSA签名验签工具

使用 RSA 私钥对文本消息生成 RSASSA-PKCS1-v1_5 数字签名,或用公钥验证 Base64 签名是否匹配。支持 SHA-256、SHA-384、SHA-512 与 PKCS#8、PKCS#1 格式的 PEM 密钥,全部运算在浏览器本地完成,密钥不会上传。

免费在线工具
Loading…

使用说明

在「签名」和「验签」两个模式之间切换,选择哈希算法后填写对应的密钥与消息。

  1. 选择模式:签名模式需要私钥,验签模式需要公钥与 Base64 签名。
  2. 选择哈希算法(SHA-256 / SHA-384 / SHA-512)。签名与验签必须使用同一个算法。
  3. 粘贴 PEM 密钥:私钥支持 PKCS#8(BEGIN PRIVATE KEY)与 PKCS#1(BEGIN RSA PRIVATE KEY);公钥支持 SPKI(BEGIN PUBLIC KEY)与 PKCS#1(BEGIN RSA PUBLIC KEY)。
  4. 输入消息;验签时还要粘贴签名(Base64,可包含换行)。
  5. 点击「签名」或「验签」。签名结果可点「复制签名」;验签会直接显示通过或失败。
  6. 可点「加载示例数据」用内置演示密钥完成一次签名,或点「生成新密钥对」生成 2048 位 RSA 密钥(仅存在于当前页面)。

注意:加密私钥(BEGIN ENCRYPTED PRIVATE KEY)不受支持,需先解密;本工具只处理 RSA 密钥,且要求消息非空。

功能介绍

  • 两种工作模式:用私钥签名、用公钥验签,签名结果为 Base64 文本。
  • 支持 SHA-256、SHA-384、SHA-512 三种哈希算法,签名与验签需保持一致。
  • 私钥兼容 PKCS#8 与 PKCS#1 PEM,公钥兼容 SPKI 与 PKCS#1 PEM,导入时会校验算法 OID 必须为 RSA。
  • 使用 WebCrypto 的 RSASSA-PKCS1-v1_5 方案(不是 RSA-PSS),适合与常见的 OpenSSL、Java、Node.js 签名接口对接。
  • 内置「生成新密钥对」,可生成 2048 位 RSA 公私钥 PEM,仅保存在当前页面内存中。
  • 「加载示例数据」会填入内置演示密钥并立即签名,便于快速验证工具是否正常。
  • 所有密钥与消息只在浏览器本地处理,不上传服务器。

使用场景

对接第三方接口时验证签名逻辑
用对方提供的公钥验证回调消息的 Base64 签名,或用测试私钥生成签名,快速确认签名算法与哈希是否一致。
排查签名结果不一致问题
把同一段消息分别用本工具和 OpenSSL、Java 或 Node.js 签名,对比结果,定位是哈希算法、密钥格式还是签名方案(PKCS#1 v1.5 与 PSS)不一致。
生成临时测试密钥对
在浏览器中生成 2048 位 RSA 公私钥 PEM,用于本地联调或单元测试,无需安装 OpenSSL。
教学演示数字签名流程
切换签名与验签模式,直观展示私钥签名、公钥验签,以及消息被篡改后验签失败的过程。

常见问题

签名使用的是什么算法?
使用 WebCrypto 的 RSASSA-PKCS1-v1_5(PKCS#1 v1.5)签名方案,配合 SHA-256、SHA-384 或 SHA-512 哈希。它不是 RSA-PSS;如果对方要求 PSS,本工具生成的签名无法直接通过验证。
为什么提示不支持加密私钥?
工具只接受未加密的 PKCS#8(BEGIN PRIVATE KEY)或 PKCS#1(BEGIN RSA PRIVATE KEY)私钥。遇到 BEGIN ENCRYPTED PRIVATE KEY 时,需要先用 OpenSSL 等工具解密并导出为未加密 PKCS#8,再粘贴进来。
签名和验签的哈希算法必须一致吗?
必须一致。签名时用 SHA-256,验签时也要选 SHA-256;算法不一致会得到“验签失败”。签名和验签页面共享同一个哈希选择。
支持哪些密钥格式?
私钥:PKCS#8(BEGIN PRIVATE KEY)、PKCS#1(BEGIN RSA PRIVATE KEY)。公钥:SPKI(BEGIN PUBLIC KEY)、PKCS#1(BEGIN RSA PUBLIC KEY)。非 RSA 密钥(如 EC)会被拒绝。
密钥会被上传或保存吗?
不会。签名、验签与密钥生成都通过浏览器 WebCrypto 在本地完成,密钥不会发送到任何服务器,也不会写入本地存储;刷新或关闭页面后即丢失。
生成的密钥有多少位?示例密钥能用于生产吗?
「生成新密钥对」固定生成 2048 位 RSA 密钥,仅存在于当前页面。「加载示例数据」使用的是内置演示密钥,只用于试用,不要用于生产环境。