无需登录 数据私有 本地保存

数字签名在线验证 - JS Web Crypto 签名验签

14
0
0
0
1 生成密钥对

选择算法并生成非对称密钥对,用于数字签名与验证。所有操作在浏览器本地完成,密钥不会上传。

RSA-PSS
2048位 · SHA-256
推荐
RSA-PSS
3072位 · SHA-384
高安全
RSA-PSS
4096位 · SHA-512
最高安全
ECDSA
P-256 · SHA-256
快速
ECDSA
P-384 · SHA-384
均衡
ECDSA
P-521 · SHA-512
高安全
正在生成密钥对,请稍候...
密钥信息
未生成

点击左侧按钮生成密钥对

或导入已有密钥

请妥善保管

2 数字签名
私钥未就绪 — 请先在「密钥生成」中生成或导入私钥
0 字符
正在签名...
签名结果

签名结果将在此显示

3 签名验证
公钥未就绪 — 请先在「密钥生成」中生成或导入公钥
支持自动识别Base64和Hex格式
验证结果

验证结果将在此显示

常见问题与知识点
什么是数字签名?它有什么作用?

数字签名是一种基于非对称加密的电子签名技术,用于验证消息的完整性来源真实性。发送方使用私钥对消息生成签名,接收方使用对应的公钥验证签名。数字签名具有以下核心作用:

  • 身份认证:确认消息确实来自声称的发送方
  • 数据完整性:检测消息在传输过程中是否被篡改
  • 不可否认性:签名者无法否认自己签署过的内容

数字签名广泛应用于软件分发、SSL/TLS证书、区块链交易、电子合同等场景。

RSA-PSS 和 ECDSA 有什么区别?如何选择?

RSA-PSS(概率签名方案):

  • 基于RSA算法,使用PSS填充方案,安全性经过严格证明
  • 密钥长度:2048/3072/4096位,密钥越大越安全但越慢
  • 签名长度等于密钥长度(如2048位→256字节)
  • 广泛兼容,几乎所有系统都支持

ECDSA(椭圆曲线数字签名算法):

  • 基于椭圆曲线密码学,以更短的密钥提供同等级安全性
  • P-256提供的安全性约等于RSA-3072
  • 签名更短(P-256约70字节),生成速度更快
  • 移动设备和IoT场景的首选

选择建议:需要最大兼容性选RSA-PSS;追求性能和短签名选ECDSA。

数字签名和电子签名有什么区别?

电子签名是一个广义的法律概念,泛指以电子形式表示签署者意图的任何方式,包括手写签名的扫描件、点击"同意"按钮等。

数字签名是电子签名的一种技术实现,使用密码学算法确保签名的安全性和不可伪造性。数字签名提供了最高级别的安全保证,是电子签名中最可靠的形式。

在中国,《电子签名法》认可可靠的电子签名与手写签名具有同等法律效力,而数字签名是实现"可靠电子签名"的核心技术手段。

为什么所有操作都在浏览器本地完成?安全吗?

本工具使用 Web Crypto API——浏览器内置的密码学接口,所有密钥生成、签名和验证操作均在您的本地浏览器中执行。密钥和消息内容永远不会离开您的设备,不会上传到任何服务器。

这确保了最高级别的隐私和安全。但请注意:

  • 刷新页面后,内存中的密钥会丢失,请及时导出保存
  • 私钥请妥善保管,不要分享给任何人
  • 建议在可信的设备上使用本工具
导出的PEM格式密钥如何使用?

PEM(Privacy Enhanced Mail)是最通用的密钥编码格式,被OpenSSL、Node.js、Python等广泛支持:

  • 公钥:-----BEGIN PUBLIC KEY----- 开头,可分享给需要验证您签名的人
  • 私钥:-----BEGIN PRIVATE KEY----- 开头,必须保密,用于生成签名

您可以将PEM密钥用于服务器配置、代码签名、API认证等场景。本工具也支持导入PEM格式的密钥。

签名验证失败的可能原因有哪些?
  • 消息不匹配:验证时输入的消息与签名时的消息不完全一致(包括空格、换行等)
  • 公钥不匹配:使用的公钥与签名时使用的私钥不是同一密钥对
  • 签名格式错误:签名数据在复制粘贴时可能被截断或损坏
  • 算法不一致:签名和验证使用了不同的算法参数

请仔细检查以上各项,确保所有参数完全一致。