news 2026/5/15 2:54:57

系统架构设计师必知:数字签名、加密算法、公钥私钥详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
系统架构设计师必知:数字签名、加密算法、公钥私钥详解

一、先搞清楚三个基础概念

在进入“数字签名”之前,必须先理解加密哈希

1.1 加密(Encryption)

加密是将明文通过某种算法转换成密文的过程,目的是保密。只有拥有正确密钥的人才能解密还原明文。

  • 对称加密:加密和解密使用同一个密钥
    优点:速度快,适合大数据。
    缺点:密钥分发困难(如何把密钥安全给对方?)
    常见算法:AES、DES、SM4

  • 非对称加密:加密和解密使用一对密钥:公钥(Public Key)和私钥(Private Key)。
    公钥加密 → 私钥解密(用于保密)
    私钥加密 → 公钥解密(用于身份认证,即数字签名的原理)
    优点:解决了密钥分发问题。
    缺点:速度慢。
    常见算法:RSA、ECC、SM2

1.2 哈希(Hash / 散列)

哈希算法将任意长度的数据映射成固定长度的短字符串(哈希值 / 摘要)。

特点:

  • 单向性:无法从哈希值反推出原文。
  • 抗碰撞:很难找到两个不同输入产生相同哈希值。
  • 雪崩效应:原文改一点,哈希值完全改变。

常见算法:MD5(已不安全)、SHA-1(已弱化)、SHA-256、SM3

哈希本身不是加密,它不涉及密钥,也不能还原。哈希的作用是完整性校验生成数字签名的基础

二、数字签名:到底是什么?

数字签名(Digital Signature)是对电子数据的一种签名,用于确认:

  1. 身份认证:消息确实是声称的发送者发出的。
  2. 完整性:消息在传输过程中没有被篡改。
  3. 不可否认:发送者无法事后否认自己发过该消息。

2.1 数字签名的核心步骤

RSA为例,发送者 Alice 要签署消息并发送给 Bob:

1. Alice 对原文 M 计算哈希值 H = hash(M) 2. Alice 用她的私钥(唯一她能拥有的)对 H 进行加密,得到签名 S = Encrypt_private(H) 3. Alice 将 (M, S) 一起发送给 Bob 4. Bob 收到后: - 对 M 计算哈希值 H1 = hash(M) - 用 Alice 的公钥解密签名 S,得到 H2 = Decrypt_public(S) - 比较 H1 与 H2,若相等,则签名有效

关键点

  • 私钥用于签名(只有自己能做),公钥用于验证(任何人都能做)。
  • 签名是对哈希值加密,而不是对原文加密 —— 目的是缩短签名长度、提高效率。
  • 如果哈希值匹配,证明:消息未被修改(完整性),且是拥有私钥的人发出的(认证+不可否认)。

2.2 数字签名 ≠ 加密

很多人混淆:数字签名不是为了保密,而是为了认证和完整。签名的消息本身可以是明文(比如代码签名、合同PDF)。

加密数字签名
目的机密性(不让别人看到)认证、完整性、不可否认
使用的密钥公钥加密,私钥解密私钥签名,公钥验签
对谁可见只有收方(有私钥)能看到任何人都能验证签名,但未必能看到明文
典型场景发送机密文件、HTTPS握手软件签名、JWT、电子合同

实战中,两者经常结合使用:比如先签名再加密,既保证真实性又保证机密性。

三、公钥与私钥:一对奇妙的搭档

非对称加密的核心是密钥对

  • 公钥(Public Key):可以公开分发,任何人都能拿到。
  • 私钥(Private Key):必须严格保密,只能由所有者保管。

3.1 两种经典用法

用法操作解决问题
加密通信发送方用接收方的公钥加密 → 接收方用自己的私钥解密防止中间人窃听
数字签名发送方用自己的私钥签名 → 接收方用发送方的公钥验证确认发送者身份 + 数据未被篡改

3.2 一个生活化比喻

  • 公钥:像一把打开的锁,谁都可以拿来锁东西。
  • 私钥:像唯一的一把钥匙,只有主人能打开。

场景一(加密):你想寄秘密信给我,我先把锁(公钥)寄给你,你用锁把信锁进铁箱,寄给我,我用自己的钥匙(私钥)打开。

场景二(签名):你把一个包裹贴上你的专属印章(用你的私钥签名),我用你的公开印章图案(公钥)验证这个包裹确实是你寄的。

四、经典算法一览(考试常用)

4.1 对称加密算法

算法密钥长度特点
AES128/192/256 bit目前最常用,安全高效
DES56 bit已过时,可被暴力破解
3DES112/168 bit比DES安全但较慢,逐步被AES替代
SM4128 bit中国国密标准

4.2 非对称加密算法

算法常见用途特点
RSA加密、签名最经典,基于大数分解难题。1024/2048/4096位
ECC (椭圆曲线)加密、签名相同安全强度下密钥更短、性能更好
SM2加密、签名国密非对称算法
DSA仅数字签名不支持加密,只用于签名验证
ECDSA签名基于椭圆曲线的DSA变体

4.3 哈希算法(考试注意MD5/SHA-1已被攻破)

算法输出长度安全状态
MD5128 bit不安全,可碰撞
SHA-1160 bit已弱化,建议弃用
SHA-256256 bit安全,广泛使用
SM3256 bit国密哈希

五、实际应用场景(考试案例题常见)

5.1 HTTPS/TLS 如何综合运用?

  1. 服务器拥有公钥+私钥,并持有数字证书(CA签名)。
  2. 浏览器访问服务器,服务器返回证书(含公钥)。
  3. 浏览器验证证书(用CA公钥验证签名),确认服务器身份。
  4. 浏览器生成一个临时会话密钥(对称密钥),用服务器公钥加密后发送。
  5. 服务器用私钥解密得到会话密钥。
  6. 后续通信使用对称加密(AES),因为更快。

这一过程同时用到了:非对称加密(传递对称密钥+身份认证)、对称加密(数据加密)、数字签名(证书验证)。

5.2 软件数字签名

开发者对软件包计算哈希,再用私钥对哈希签名。用户下载软件和签名,用开发者公钥验证签名 —— 确保软件未被植入病毒且来自官方。

5.3 JWT (JSON Web Token) 的签名

JWT 可使用HS256(对称签名)或RS256(非对称签名)。RS256 中,认证服务器用私钥签发 Token,资源服务器用公钥验证 Token 合法性,无需共享密钥。

六、考试常见选择题与辨析

题目1:关于数字签名,说法正确的是?
A. 数字签名使用公钥进行签名,私钥进行验证
B. 数字签名可以保证消息的机密性
C. 数字签名通常先对消息计算哈希,再对哈希加密
D. 数字签名只能用RSA算法实现

答案:C。
A错:签名用私钥,验签用公钥。B错:签名不提供机密性,提供完整性和认证。D错:还有DSA、ECDSA等。

题目2:在非对称加密中,若希望保证只有接收方能够读取消息,应使用?
A. 发送方私钥加密
B. 发送方公钥加密
C. 接收方私钥加密
D. 接收方公钥加密

答案:D。保证机密性时,用接收方公钥加密。

题目3:关于哈希函数,错误的是?
A. 哈希函数是单向的
B. 不同输入可能产生相同哈希值(碰撞)
C. 可以通过哈希值反推原文
D. 哈希函数常用于数字签名

答案:C。哈希不可逆。

七、一张图总结:加密与数字签名全过程(文字描述)

发送方(Alice) 接收方(Bob) | | | 明文 M | | -- 1. 计算哈希 H = hash(M) | | -- 2. 用私钥加密H得到签名 S | | -- 3. (可选) 用Bob公钥加密(M+S)得到密文C | | ------ 发送 C (或直接 M+S) -----> | | | | 4. 若密文,先用自己私钥解密得到M+S | 5. 用Alice公钥解密S得到H2 | 6. 计算H1 = hash(M) | 7. 如果H1==H2,验证成功

图中第3步为“加密+签名”同时使用,保证机密性+认证性。

八、易错点+高频考点总结

易混淆点正确理解
“公钥加密,私钥解密” → 加密✅ 正确,用于机密性
“私钥加密,公钥解密” → 加密 ❌这不是加密,是签名(不保证机密性)
数字签名 = 对原文加密❌ 是对哈希值加密
哈希算法是加密算法的一种❌ 哈希不是加密,无密钥
越长密钥一定越安全❌ 还要看算法(ECC 256位 ≈ RSA 3072位)
公钥必须保密❌ 公钥就是公开的

九、备考建议

  1. 牢记两个“钥匙用途”口诀

    • 加密:公锁私开(别人用我公钥锁,我用私钥开)
    • 签名:私签公验(我私钥签名,大家公钥验)
  2. 理解HTTPS握手过程(案例题常考TLS四次握手如何混合使用对称+非对称+数字证书)

  3. 记住国密算法:SM2(非对称)、SM3(哈希)、SM4(对称) —— 近年考试有涉及国产化趋势。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/15 2:48:20

pico示波器采集软件SSL1000A在功率器件测试的应用

在新能源汽车电控体系里,IGBT、MOSFET 是电机控制器、OBC、DC-DC 等核心模块的 “功率开关”,它们的开关特性、瞬态响应、稳定可靠性直接影响整车效率与安全。功率器件测试看似简单,实则细节要求极高,因为器件在高频开关中产生的尖…

作者头像 李华
网站建设 2026/5/15 2:46:04

开源Reddit数据分析工具redditlens:模块化架构与社区洞察实践

1. 项目概述:一个开源的Reddit数据分析与洞察工具如果你经常在Reddit上冲浪,或者你的工作、研究需要从Reddit这个“互联网首页”中挖掘信息,那你一定遇到过这样的困境:面对一个拥有数百万成员、日活千万的Subreddit,如…

作者头像 李华
网站建设 2026/5/15 2:42:07

RF电感选型七大核心参数与工程实践指南

1. RF电感选型核心参数解析在射频电路设计中,电感器作为三大无源元件之一,其性能直接影响系统整体表现。与低频应用不同,RF电感的工作频率通常在MHz至GHz范围,这使得其参数特性和选型逻辑具有显著特殊性。以下是工程师在实际选型时…

作者头像 李华
网站建设 2026/5/15 2:41:39

低功耗AI加速器在智能听力设备中的关键技术突破

1. 无线可编程语音AI加速器在听力增强设备中的应用概述在听力辅助设备领域,传统方案面临一个根本性矛盾:高质量的语音增强算法需要强大的计算能力,而便携式设备的电池容量和体积限制又对功耗提出了严苛要求。这个矛盾在过去十年间一直制约着智…

作者头像 李华
网站建设 2026/5/15 2:41:13

深度实战:Python爬虫进阶指南——如何高效抓取网站ICP备案信息

目录 第一章:理论基础——ICP备案号的隐藏规律 1.1 什么是ICP备案号 1.2 常见的存放位置 1.3 为什么要单独写爬虫而不是用现成API 第二章:技术选型与项目初始化 2.1 为什么不用老牌组合 2.2 环境准备(基于Python 3.12+) 2.3 项目结构 第三章:编写核心爬取引擎 3…

作者头像 李华