当前位置: 首页 > backend >正文

安全性(二):数字签名

数字签名(Digital Signature)是利用非对称加密算法哈希算法结合的一种数据安全机制,能实现:

  • 数据完整性校验
  • 身份认证(确认来源)
  • 抗否认性(防止抵赖)

详细流程

发送端:生成签名

  1. 消息摘要
    对原始数据 M 使用哈希算法(如 SHA-256)生成消息摘要 H(M)
  2. 签名生成
    使用发送者的私钥 SK 对摘要 H(M) 进行加密,生成数字签名 S = Encrypt(SK, H(M))
  3. 发送数据
    将原始数据 M 和签名 S 一起发送给接收者。
原始消息 M ───► Hash ───► H(M)│Encrypt(SK, H(M)) ───► 数字签名 S
发送: M + S

接收端:验证签名

  1. 消息摘要
    对收到的原始数据 M 重新使用同样的哈希算法,得到 H'(M)
  2. 签名解密
    使用发送者的公钥 PK 解密签名 S,得到 H(M)
  3. 比对摘要
    比较 H'(M) 与解密后的 H(M),若一致,说明:
    • 消息未被篡改(完整性)
    • 签名者为私钥持有者(身份认证)
收到:M + S
→ Hash(M) = H'(M)
→ Decrypt(PK, S) = H(M)
→ H'(M) == H(M)? → 是则验证通过 ✅

流程简表总结

步骤发送方操作接收方操作
哈希处理使用哈希算法生成 H(M)使用哈希算法生成 H'(M)
加/解密处理用私钥加密 H(M),生成签名 S用公钥解密签名 S,还原出 H(M)
验证签名——对比 H'(M)H(M) 是否一致

技术要素

技术用途
哈希算法生成摘要,确保数据完整性
非对称加密私钥签名、公钥验签
私钥(发送者持有)生成签名(加密摘要)
公钥(公开)验证签名(解密摘要)

应用场景

应用场景描述
邮件签名保证邮件内容未被篡改,并确认发件人身份
软件发布签名确保下载的软件包来源可信、未被植入病毒
数字证书(如 SSL)浏览器用服务器公钥验证签名,确保安全通信
区块链交易签名用钱包私钥签署交易,确保不可否认与唯一性

数字签名与加密的区别

项目数字签名加密(对称/非对称)
目的验证身份、防抵赖、校验完整性保密传输、避免泄露
使用密钥私钥签名,公钥验签对称用相同密钥,非对称用公私钥
作用对象对数据的摘要加密对完整数据加密
可逆性是(验签过程是还原摘要)是(加密后可解密)
http://www.xdnf.cn/news/6948.html

相关文章:

  • MoveIt Setup Assistant 在导入urdf文件的时候报错
  • 中国电力行业CCUS多目标优化模型分析
  • 数据结构与算法-线性表-循环链表(Circular Linked List)
  • 1.Hello Python!
  • Git 项目切换到新的远程仓库地址
  • STM32外设DA实战-DAC + DMA 输出正弦波
  • 文字溢出省略号显示
  • 一、电机篇
  • 降维,流行学习,度量学习
  • Redis的发布订阅模型是什么,有哪些缺点?
  • Doris bitmap原理
  • 阿里通义千问 Qwen3 系列模型正式发布,该模型有哪些技术亮点?
  • pytorch小记(二十一):PyTorch 中的 torch.randn 全面指南
  • WebAuthn开发常见问题及解决方案汇总:多语言支持、依赖管理与安全验证实践
  • Android同屏采集并推送RTMP和启动轻量级RTSP服务技术实践
  • QT之LayOut布局
  • SVGPlay:一次 CodeBuddy 主动构建的动画工具之旅
  • GO语言学习(三)
  • 项目管理学习-CSPM-4考试总结
  • VC++6.0分步执行常见问题及解决方案
  • 阿里云国际站与国内站的核心布局与本土化服务的选择
  • Linux中的进程
  • 提示词工程框架:CoT、ToT、GoT、PoT( 链式提示)
  • MySQL 索引优化以及慢查询优化
  • Linux面试题集合(2)
  • 20250517 我设想一个空间,无限大,空间不与其中物质进行任何作用,甚至这个空间能容纳可以伸缩的空间
  • 【技巧】GoogleChrome浏览器开发者模式查看dify接口
  • Day119 | 灵神 | 二叉树 | 二叉树的最近共公共祖先
  • C43-指针与数组
  • [已解决] LaTeX “Unicode character“ 报错 (中文字符处理)