【Python学习笔记】:Python 加密算法全景指南:原理、对比与工程化选型

Python 加密算法全景指南:原理、对比与工程化选型

在 Python 后端、数据安全、AI 系统工程中,"加密 "几乎是绕不开的基础能力:

数据库字段要不要加密?接口怎么防止被窃听?配置文件如何安全落盘?

这篇文章用工程视角 系统梳理 Python 常见加密算法 ,对比它们的原理、优缺点和适用场景 ,并给出可直接落地的示例代码


一、先把概念拎清:什么是"加密"

加密(Encryption) 的核心目标只有一个:

让"非授权的人"无法读懂数据,但"授权的人"可以还原原文。

它和哈希最大的区别在于:

  • 加密是可逆的
  • 哈希是不可逆的

二、加密算法的三大分类

1️⃣ 对称加密(Symmetric Encryption)

加密和解密使用同一把密钥

典型算法

  • AES(最主流)
  • DES / 3DES(已过时,不推荐)
特点
  • 🚀 速度快
  • 🔐 安全性高(前提是密钥安全)
  • 😖 密钥分发是最大难点

2️⃣ 非对称加密(Asymmetric Encryption)

公钥加密,私钥解密

典型算法

  • RSA
  • ECC(椭圆曲线,加密/签名)
特点
  • 🔑 密钥分离(公钥可公开)
  • 🐢 速度慢
  • 📦 常用于密钥交换 / 签名,而非大数据加密

3️⃣ 混合加密(工程实践中的标准方案)

非对称加密 + 对称加密

text 复制代码
RSA / ECC  →  交换 AES 密钥
AES        →  加密真实数据

HTTPS、TLS、主流 API 通信全是这套逻辑。


三、Python 中最常用的加密算法详解

实战中,推荐使用 cryptography 库(工业标准)

bash 复制代码
pip install cryptography

四、AES:对称加密的绝对主力

1️⃣ AES 是什么?

  • 高级加密标准(Advanced Encryption Standard)
  • 支持 128 / 192 / 256 位密钥
  • 目前没有被实用破解

2️⃣ Python 中的 AES(示例)

AES-GCM(强烈推荐) 为例:

python 复制代码
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
import os

key = AESGCM.generate_key(bit_length=256)
aesgcm = AESGCM(key)

nonce = os.urandom(12)
data = b"secret data"
aad = b"header"

ciphertext = aesgcm.encrypt(nonce, data, aad)
plaintext = aesgcm.decrypt(nonce, ciphertext, aad)

print(plaintext)

3️⃣ 为什么推荐 AES-GCM?

  • 同时提供:
    • 机密性(Encryption)
    • 完整性(Authentication)
  • 避免 ECB / CBC 常见安全坑

4️⃣ AES 适用场景

场景 是否适合
数据库存储敏感字段
文件 / 配置加密
服务间通信
大数据量加密

五、RSA:非对称加密的经典方案

1️⃣ RSA 的定位

  • 不适合直接加密大数据
  • 非常适合:
    • 密钥交换
    • 数字签名

2️⃣ Python 中的 RSA 示例

python 复制代码
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import hashes

private_key = rsa.generate_private_key(
    public_exponent=65537,
    key_size=2048,
)

public_key = private_key.public_key()

ciphertext = public_key.encrypt(
    b"secret",
    padding.OAEP(
        mgf=padding.MGF1(hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    )
)

plaintext = private_key.decrypt(
    ciphertext,
    padding.OAEP(
        mgf=padding.MGF1(hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    )
)

print(plaintext)

3️⃣ RSA 适用场景

场景 是否适合
HTTPS / TLS
API 密钥交换
数字签名
大文件加密

六、ECC:更现代的非对称加密

为什么越来越多系统用 ECC?

  • 同等安全强度下:
    • 密钥更短
    • 速度更快
  • 移动端、云原生系统非常友好
常见用途
  • ECDH(密钥交换)
  • ECDSA / EdDSA(签名)

如果你不是做底层密码系统,直接用 TLS / HTTPS 即可,ECC 已被内置使用


七、算法对比速览表

算法 类型 速度 典型用途
AES-GCM 对称 ⭐⭐⭐⭐⭐ 数据加密
RSA 非对称 ⭐⭐ 密钥交换
ECC 非对称 ⭐⭐⭐ 签名 / 交换
混合加密 组合 ⭐⭐⭐⭐ 网络通信

八、工程选型建议(很重要)

✅ 正确姿势

  • 存数据 → AES
  • 传数据 → HTTPS(混合加密)
  • 接口验签 → RSA / ECC
  • 密钥管理 → KMS / 环境变量 / 硬件

❌ 常见错误

  • ❌ 用 RSA 直接加密文件
  • ❌ 自己实现 AES 填充、模式
  • ❌ 用 ECB 模式
  • ❌ 把密钥写进代码仓库

九、一句话总结

AES 是干活的,RSA/ECC 是交换钥匙的。
真实世界里,加密从来不是单算法,而是"组合拳"。

相关推荐
时代的凡人5 小时前
0208晨间笔记
笔记
YJlio5 小时前
1.7 通过 Sysinternals Live 在线运行工具:不下载也能用的“云端工具箱”
c语言·网络·python·数码相机·ios·django·iphone
l1t5 小时前
在wsl的python 3.14.3容器中使用databend包
开发语言·数据库·python·databend
今天只学一颗糖5 小时前
1、《深入理解计算机系统》--计算机系统介绍
linux·笔记·学习·系统架构
testpassportcn6 小时前
AWS DOP-C02 認證完整解析|AWS DevOps Engineer Professional 考試
网络·学习·改行学it
山塘小鱼儿6 小时前
本地Ollama+Agent+LangGraph+LangSmith运行
python·langchain·ollama·langgraph·langsimth
码说AI7 小时前
python快速绘制走势图对比曲线
开发语言·python
wait_luky7 小时前
python作业3
开发语言·python
Python大数据分析@8 小时前
tkinter可以做出多复杂的界面?
python·microsoft