图文彻底搞懂非对称加密(公钥密钥)

图文彻底搞懂非对称加密(公钥密钥)
最新回答
小棉袄

2026-05-07 00:43:06

图文彻底搞懂非对称加密(公钥密钥)

非对称加密,也称为公钥加密,是一种加密方式,其中加密和解密使用不同的密钥。

对称加密的缺点

在对称加密中,加密方和解密方需要持有相同的密钥。这看似完美,但存在一个关键问题:密钥配送问题。即如何安全地将密钥传递给对方。如果密钥在传递过程中被盗取,那么加密的信息就不再安全。

密钥配送问题的解决方案

为了解决密钥配送问题,有以下几种方案:

  • 事先共享密钥
  • 密钥分配中心
  • Diffie-Hellman密钥交换
  • 非对称加密

本文重点介绍非对称加密。

非对称加密的原理

非对称加密需要两对密钥:公钥和私钥。公钥是公开的,由信息接受方提供给信息发送方,用于加密信息。私钥由信息接受方保留,用于解密信息。

  • 公钥:用于加密信息,可以公开。
  • 私钥:用于解密信息,必须保密。

由于公钥是公开的,因此不存在密钥配送问题。

示例:

  1. 小明确定了自己的私钥 mPrivateKey 和公钥 mPublicKey,自己保留私钥,将公钥 mPublicKey 发给了小红。
  2. 小红确定了自己的私钥 hPrivateKey 和公钥 hPublicKey,自己保留私钥,将公钥 hPublicKey 发给了小明。
  3. 小明发送信息“周六早10点soho T1楼下见”,并用小红的公钥 hPublicKey 进行加密。
  4. 小红收到信息后,用自己的私钥 hPrivateKey 进行解密。然后回复“收到,不要迟到”,并用小明的公钥 mPublicKey 加密。
  5. 小明收到信息后,用自己的私钥 mPrivateKey 进行解密。
非对称加密的核心概念
  • 公钥只能用于数据加密。公钥加密的数据,只能用对应的私钥才能解密。

形象示例:

想象一个带两把锁的信箱:

  • 投递口有一把锁,钥匙(公钥)可以复制多份,发给想接受信件的人。这些人可以用这把钥匙打开寄信口,把信件投入。
  • 收信门是另外一把锁,只有自己有这把锁的钥匙(私钥),可以用这把钥匙打开信箱门,取出所有发给我的信件。

非对称加密算法:RSA

RSA 是现在使用最为广泛的非对称加密算法。

  • 密文 = 明文^E mod N
  • 明文 = 密文^D mod N

其中,N 是两个大质数 a 和 b 的乘积,E 是公钥,D 是私钥。

密钥生成过程:

  1. 求 N:准备两个很大的质数 a 和 b,N = a * b。
  2. 求 L:L 是 (a-1) 和 (b-1) 的最小公倍数,不参与加解密。
  3. 求 E(公钥):1 < E < L,且 E 和 L 的最大公约数为 1。
  4. 求 D(私钥):1 < D < L,且 E * D mod L = 1。
RSA的安全性
  • 暴力破解私钥(D):由于 N 很大(至少 2048 bit),暴力破解 D 非常困难。
  • 通过公钥(E、N)计算出私钥(D):需要先推算出 L,即需要知道质数 a 和 b。对 N 进行质因数分解非常困难,目前人类还未发现高效的方法。
  • 潜在的危险:如果伪随机数生成器的算法有问题,导致随机性很差或可以被推断出来,RSA 的安全性将被破坏。
  • 中间人攻击:攻击者可以篡改双方发送的公钥,用自己的公钥替换。要防范中间人攻击,需要使用公钥证书。
总结
  • 非对称加密解决了密码配送问题。
  • 非对称加密的处理速度较慢,不适合对很长的消息做加密。
  • 推荐使用至少 2048 bit 的 RSA。
  • RSA 还可以用于签名,私钥签名,公钥验签。

通过本文,希望你对非对称加密(公钥密钥)有了更深入的理解。