加密算法

RSA

RSA介绍

什么是RSA

RSA是一种非对称加密算法,加密和解密使用的是使用的是一对密钥:公钥私钥,主要用于数据加密/解密、数字签名/验证,密钥交换。

密钥长度

RSA密钥长度有1024位(128Byte)、2048位(256Byte)、3072位(384Byte)、4096位(512Byte)。

密钥越长,运算越慢。

RSA数学基础

RSA数学基础:

  • 基于大数质因数分解困难问题。即:如果选取两个非常大的素数相乘,得到的结果很难被分解回原来的两个素数。
  • 密钥生成过程:随机选取两个大素数,计算它们的乘积和一些相关参数,得到公钥和私钥。

RSA几种使用方式

1.数据加密/解密

  • 加密:用公钥加密数据,只有持有私钥的人能解密。
  • 解密:只能使用私钥才能解密别人用公钥加密的数据

示例:

  • Alice公布自己的公钥,Bob用Alice的公钥加密消息,然后发送给Alice,只有Alice用自己的私钥解密才能看到数据内容

2.数字签名/验签

  • 签名:用私钥对数据生成签名,证明数据确实由私钥拥有者发出
  • 验证:任何人用公钥验证签名,确保数据未被篡改

示例:

  • Alice用自己的私钥对内容进行签名,任何人用Alice的公钥都能验证合同是Alice签发的

3.密钥交换

  • RSA常用于安全地进行交换对称密钥(AES),而不是直接加密数据
  • 过程:用接收方地公钥加密对称密钥,接收方用私钥解密,双方共享这个对称密钥进行后续通信

RSA优缺点

优点:

  • 安全性高(基于数学难题)
  • 支持身份认证和数字签名
  • 适合安全密钥交换

缺点:

  • 加密/解密速度慢(不适合大数据量直接加密)
  • 通常配合对称加密算法(如AES)用于实际数据加密

RSA加密

RSA数字签名

什么是数字签名?

​ 数字签名是一种利用非对称加密算法(如RSA)实现的数据完整性和身份认证机制。它确保数据来自于签名者本人且未被篡改。

RSA数字签名的流程

签名流程

1.消息摘要

  • 首先对原始消息使用哈希算法(SHA-256等),生成一个固定长度的摘要

2.私钥加密摘要

  • 用RSA私钥加密这个消息摘要,得到”数字签名”

3.将签名与原消息一起发送

  • 一般将原消息和数字签名一起发送给接收方

为什么需要对原消息进行哈希后再用RSA加密得到数字签名,而不是直接使用RSA私钥加密原始数据得到数字签名

1. 效率原因

  • RSA加密/解密速度慢
    • RSA是一种非对称加密算法,用于加密/解密的数据块有限制,而且运算速度远远慢于对称算法(AES)
  • 原数据可能很大
    • 如果使用RSA私钥加密原数据,数据越大,签名/验证速度越慢,甚至无法处理大文件(比如几十兆的数据,RSA直接加密会非常慢甚至不可行)

2. 摘要长度固定且小

  • 哈希算法(如SHA-256)能把任意长度的数据变成固定长度的消息摘要
    • 比如:无论原数据长度如何,用SHA256输出总是256位
  • 用RSA私钥加密这个摘要,数据量小,效率高
    • 这样签名只需要处理一个很短的哈希值,而不是整个文件

安全性原因:

  • 哈希算法具备抗碰撞性
    • 很难找到两份不同数据,经过哈希运算后, 得到相同的哈希值(摘要)
  • 签名只针对摘要,验证时只需比较摘要即可判断内容是否被篡改
    • 如果原数据有很小变化,哈希值变化巨大,签名验证会失败

验签流程

1.收到原消息和数字签名

2.对原消息进行哈希运算(SHA-256)

  • 得到本地消息摘要

3.用发送者的RSA公钥解密数字签名

  • 得到签名时的消息摘要。

4.比较两个摘要是否一致

  • 一致则验证通过,说明数据未被篡改且确实是私钥持有者签发。

流程图

RSA

AES

AES介绍

什么是AES

AES是一种广泛应用的对称加密算法,加密和解密用的是同一个密钥,用于替代DES。

AES算法基于分组加密(Block Cipher),每次加密固定长度的数据块(通常为128位)。

密钥长度和安全性

AES支持128位192位256位密钥长度,安全性随密钥长度提升。

AES算法原理

AES对输入数据进行多轮置换、替换、混合和密钥加操作,设计上防止常见密码攻击(如差分分析、线性分析)。

加密和解密过程类似,只是轮密钥顺序不同。

AES几种使用方式

1.数据加密/解密

  • 用同一个密钥对数据进行加密和解密,适合大量数据的高效加密。

  • 常见于文件加密、通信加密、数据库加密等。

AES加密模式

  • ECB(Electronic Codebook)模式:每个数据块独立地被加密,明文相同的块会被加密成相同的密文块。简单但不安全,数据块独立加密,容易暴露明文模式。
  • CBC(Cipher Block Chaining)模式:常用,每个明文块在加密前要与前一个密文块异或(XOR),第一个块用初始向量(IV)代替。,增强安全性。
  • CFB/CTR/GCM等模式:适合流加密、并行加密、认证加密等场景。

2.密钥管理

  • 密钥必须安全保存,泄露密钥意味着加密内容完全暴露。
  • 常与RSA等非对称加密算法配合,RSA用于安全分发AES密钥。

AES优缺点

优点:

  • 加密速度快,适合大数据量。
  • 算法公开、经过广泛验证,安全性高。
  • 易于硬件加速,实现方便。

缺点:

  • 密钥管理要求高,密钥泄露即失效。
  • 不支持身份认证和签名功能(需配合非对称加密实现)。

AES加密