正常来说,一般都是用公钥
加密然后私钥
解密。
然而也有私钥
签名公钥
验签的说法,这个过程:
MD5 、SHA 等
)-> 私钥加密MD5 、SHA 等
)这个过程为什么要叫私钥签名呢?不是很容易产生歧义么,这里面私钥的作用是加密,公钥的作用解密,为什么要叫私钥签名呢。
1
NessajCN 2023-06-16 13:38:28 +08:00 5
「私钥签名」这个名词用于描述「用私钥加密内容并允许公钥解密」这个行为的目的,
显然,由于公钥是公开的,你用私钥加密的内容本身并不会成为真正的密文, 而是通过这么个行为告诉别人:这段「用私钥加密的文本」是由我这个唯一拥有私钥的人发出的,别人都模仿不来。 于是就起到了类似「签名」的作用,防止其他人伪造「我发出」的文本。 |
2
cheng6563 2023-06-16 14:04:05 +08:00
签名和加密是 RSA 的两套用法
用做签名时,需要把用于解密的密钥公布出去,这便是公钥了。然后自己用私钥加密数据(的 HASH ),对方就能通过公钥判断数据是否被篡改。 用作加密时,获取对方的密钥也就是公钥,用这个公钥进行加密,这时只有对方能解密出内容了。 |
3
awesomePower OP |
4
hxysnail 2023-06-16 14:54:00 +08:00
加密和前面是非对称加密算法得两大应用场景:
- 加密:公钥加密,私钥解密,这个很好理解 - 签名:私钥签名,公钥验证,因为这个场景签名是可以公开的,但有预防防伪,就只能用私钥来签名了 我还写过一点笔记,关于数字证书的也有,有需要可以参考一下: https://fasionchan.com/network/cryptography/asymmetric-encryption/ |
5
zdking08135 2023-06-16 16:50:39 +08:00
数字证书是签名的一个应用,具体来讲:
我公司持有一个域名 A ,向 CA 申请证书,用于提供 https 访问。 CA 发给我一个关于 A 的 https 证书,证书内容包括 CA 的信息,我公司信息,A 域名,证书过期时间等等。 除了完整证书内容之外,为了保证证书真实性,CA 会对证书内容计算一个 hash (使用 sha256 等算法),然后对这个 hash 用 CA 的私钥做 RSA 加密(签名)。CA 会把证书和加密 hash 一起给我。 我针对 A 域名用 CA 给的证书部署了 https 服务。其他人访问 A 网站的时候,我的服务器会把 CA 给我的 https 证书(包括上面的证书信息和加密的 hash )给访问者。访问者可以拿 CA 的公钥对加密 hash 进行 RSA 解密,解密后,用和 CA 一样的方式计算证书内容的 hash 和解密出来的 hash 作对比,一致就认为安全性通过。 注意:RSA 加解密只作用于计算出来的 hash ,而不是证书内容。 上面的生成证书的加密 hash 的过程,是由 CA 来确认其内容真实的,类比合同中的签名。 而其他人拿到证书的过程,就是验证这个证书确实是由 CA 颁发的,所以是验证签名。 |
7
awesomePower OP |