37 条回复  ·  338 次点击
LaTero 小成 2024-9-21 10:32:30
@amiwrong123
“私钥加密,公钥解密”——软件的数字签名
“私钥签名,公钥验证”——httts 证书
就是同一个东西
churchmice 小成 2024-9-21 10:43:13
没有私钥加密,公钥解密这种说法
签名操作不是个加密,对于 rsa 这两操作看着像但是不能混成一谈
cxh116 小成 2024-9-21 10:54:17
linux 的包就是私钥签名,公钥验证,防止镜像站等中间人篡改,添加恶意代码。
leonshaw 小成 2024-9-21 11:00:45
非对称加密基本上不会直接对数据操作。消息加密是用对方公钥加密一个对称密钥,用对称密钥加密数据。签名是用自己的私钥加密消息内容的 digest 。 会话场景是用于密钥交换阶段。
seers 小成 2024-9-21 11:01:26
你做过逆向就知道,现在很多 app 就是带了一个 rsa 私钥,然后给 packet 签名发服务器,服务器用公钥验证,这个私钥会用各种方法隐藏起来,防止攻击者找到
Exxfire 小成 2024-9-21 11:01:35
数字签名的主要作用是保护信息的完整性和防止抵赖。
数字签名的过程:A ----> B 发送一条数据,数据和签名是分开发的。
1. A 先使用摘要算法算出摘要;
2. A 使用自己的私钥对摘要进行加密;
3. A 发送数据给 B ;
4. A 发送签名给 B ;
5. B 收到签名后先使用 A 的公钥进行解密;(体现了防止抵赖的特性)
6. B 收到数据后进行摘要计算,和签名解密出来的摘要进行对比;(验证数据的完整性)

需要注意的是,出于保密性需求,数据发送前也可以使用某种算法进行加密,密钥及算法协商涉及其它过程。
这是书本上学习理解到的知识,没有验证过。
iOCZS 小成 2024-9-21 11:09:18
取决于解密的数据给谁看,给别人看就公钥解密,给自己看就私钥解密
LemonNoCry 初学 2024-9-21 11:13:36
@R18 通俗易懂
LLaMA2 小成 2024-9-21 11:17:36
@amiwrong123

请务必牢记规则

公加私解
私签公验

很多系统中总会存在部分数据有客户端提供,此时客户端总是不可信的,于是我们将公共密钥一道提供给他,
他公加密,我私解密,这样保证数据传递过程中的安全

我私签名,签名内容由客户端自行决定,我签名后传回给客户端,客户端使用公验证签名和他提供的内容是否正确,使得客户端确认我(服务端)不是个冒牌的

总之,如果一个系统中存在 RSA 用于抵御伪造攻击
那么谁持有私钥就必然要证明自己的权威性,此时私签(对什么内容签名由客户端说了算),客户端公验,从而使得客户端确信这个持有私钥的人就是他要找的人

谁持有公钥的人在任何时候传递数据的都公加,公加后的结果连客户端自己都无法解密(实际上客户端不需要解密,因为数据都是自己提供的,他根本不需要解密,只是为了在传递过程中不让其他人解密而已),只有持有私钥的人才能顺利解密
Xheldon 小成 2024-9-21 11:23:07
典型的当然是产品激活验证码,我把公钥内置到产品里面用来验证购买的私钥加密的授权码是否可用。
返回顶部