加密算法

加密算法
THEDIRSA
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.比较两个摘要是否一致
- 一致则验证通过,说明数据未被篡改且确实是私钥持有者签发。
流程图
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优缺点
优点:
- 加密速度快,适合大数据量。
- 算法公开、经过广泛验证,安全性高。
- 易于硬件加速,实现方便。
缺点:
- 密钥管理要求高,密钥泄露即失效。
- 不支持身份认证和签名功能(需配合非对称加密实现)。