Skip to content

对称加密与非对称加密

  • 定义
  • 对称加密:使用单一密钥进行加密和解密,加密方和解密方共享同一密钥。
  • 非对称加密:使用一对密钥(公钥和私钥),公钥加密的数据只能由对应的私钥解密,反之亦然。
  • 核心区别
  • 对称加密速度快但密钥分发困难;非对称加密安全但计算开销大。
  • 应用
  • 对称加密:数据传输(如 HTTPS 的会话数据)。
  • 非对称加密:密钥交换、数字签名(如 TLS 证书验证)。

核心点

  • 对称加密依赖共享密钥,适合大数据加密;非对称加密基于密钥对,适合安全分发和认证。

1. 对称加密与非对称加密的区别

以下从多个维度对比对称加密和非对称加密:

特性 对称加密 非对称加密
密钥数量 单一密钥(加密和解密相同) 一对密钥(公钥加密,私钥解密,或反之)
密钥管理 需安全分发密钥,易泄露 公钥公开,私钥保密,无需分发公钥
速度 快,适合大数据加密 慢,计算复杂,适合小数据或密钥交换
算法示例 AES、DES、3DES、ChaCha20 RSA、ECC、DSA、DH
安全性 依赖密钥保密,安全性较低 基于数学难题(如大整数分解),安全性较高
用途 数据传输、文件加密 密钥交换、数字签名、身份认证
计算开销 低,硬件加速支持(如 AES-NI) 高,涉及复杂运算(如模幂)
密钥长度 较短(如 AES-128、AES-256) 较长(如 RSA-2048、ECC-256)

2. 详细说明

(1) 对称加密

  • 工作原理
  • 使用同一密钥对明文加密生成密文,解密时用相同密钥还原。
  • 加密/解密算法高效,基于位运算或替换。
  • 优点
  • 速度快:算法简单,适合加密大文件或流数据。
  • 低开销:计算资源需求小,硬件优化普遍。
  • 缺点
  • 密钥分发问题:密钥需通过安全通道共享,易被拦截。
  • 密钥管理复杂:多方通信需为每对生成唯一密钥(n 方需 n*(n-1)/2 个密钥)。
  • 示例
// Java AES 加密示例
SecretKey key = new SecretKeySpec("16-byte-key".getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encrypted = cipher.doFinal("Hello".getBytes());
  • 场景
  • HTTPS 的会话数据加密。
  • 磁盘加密(如 BitLocker)。

(2) 非对称加密

  • 工作原理
  • 公钥和私钥成对生成,公钥加密的数据只能由私钥解密,私钥加密的数据只能由公钥解密。
  • 基于数学难题(如 RSA 的大整数分解,ECC 的椭圆曲线离散对数)。
  • 优点
  • 安全性高:公钥可公开,无需安全分发。
  • 支持认证:私钥签名,公钥验证(如数字签名)。
  • 缺点
  • 速度慢:算法复杂,加密大数据效率低。
  • 密钥长度长:如 RSA 2048 位,增加存储和计算成本。
  • 示例
// Java RSA 加密示例
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(2048);
KeyPair pair = keyGen.generateKeyPair();
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, pair.getPublic());
byte[] encrypted = cipher.doFinal("Hello".getBytes());
  • 场景
  • TLS 握手中的密钥交换。
  • SSH 认证、PGP 邮件加密。

3. 结合使用(混合加密)

  • 背景
  • 对称加密速度快但密钥分发不安全;非对称加密安全但速度慢。
  • 实际应用(如 HTTPS)结合两者,称为混合加密
  • 过程(以 HTTPS 为例):
  • 非对称加密交换密钥
    • 客户端用服务器公钥加密对称密钥(如 AES 密钥)。
    • 服务器用私钥解密获取对称密钥。
  • 对称加密传输数据
    • 双方使用对称密钥加密通信内容。
  • 优势
  • 结合对称加密的高效和非对称加密的安全性。
  • 示例
  • TLS 握手:客户端生成预主密钥,用 RSA 或 ECDH 交换,生成会话密钥(AES)。

4. 使用场景

  • 对称加密
  • 文件加密:如 AES 加密数据库备份。
  • 网络传输:HTTPS 的数据加密、VPN 隧道。
  • 非对称加密
  • 数字签名:验证软件包完整性(如 JAR 签名)。
  • 密钥交换:TLS 握手、SSH 登录。
  • 认证:X.509 证书验证服务器身份。

5. 面试角度

  • 问“区别”
  • 提密钥数量、速度、安全性、用途,表格对比。
  • 问“场景”
  • 对称:大数据加密;非对称:密钥交换、签名。
  • 问“混合加密”
  • 提 HTTPS 的 TLS 握手,结合对称和非对称。
  • 问“算法”
  • 对称:AES、ChaCha20;非对称:RSA、ECC。

6. 总结

对称加密使用单一密钥,速度快但密钥分发不安全,适合大数据加密(如 AES 加密 HTTPS 数据)。非对称加密使用公钥和私钥,安全性高但速度慢,适合密钥交换和认证(如 RSA 签名)。两者在 HTTPS 等场景中结合使用,通过非对称加密分发对称密钥,再用对称加密传输数据。面试可提对比表格、混合加密流程或代码示例,清晰展示理解。