泽兴芝士网

一站式 IT 编程学习资源平台

Python高级教程 第17章:Python高级安全与加密编程

本章目标

通过本章学习,你将能够:

  • 理解常见的加密与安全编程原理
  • 掌握 Python 内置与第三方加密库的使用
  • 实现数据的对称加密、非对称加密与哈希
  • 学习常见的认证机制与安全传输方式
  • 构建安全的应用程序和数据处理流程

1. 哈希与摘要算法

哈希函数用于验证数据完整性。

import hashlib

msg = "hello world".encode()
md5_val = hashlib.md5(msg).hexdigest()
sha256_val = hashlib.sha256(msg).hexdigest()

print("MD5:", md5_val)
print("SHA256:", sha256_val)

应用场景:密码存储(需加盐)、数据校验。


2. 对称加密(AES)

使用 cryptography 库进行 AES 加密。

from cryptography.fernet import Fernet

key = Fernet.generate_key()
cipher = Fernet(key)

msg = b"secret data"
ct = cipher.encrypt(msg)
print("加密后:", ct)
print("解密后:", cipher.decrypt(ct))

应用场景:数据库字段加密、本地文件保护。


3. 非对称加密(RSA)

from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import hashes, serialization

# 生成密钥对
private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
public_key = private_key.public_key()

# 加密
msg = b"secret"
ct = public_key.encrypt(
    msg,
    padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None)
)

# 解密
dt = private_key.decrypt(
    ct,
    padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None)
)
print(dt)

应用场景:密钥交换、数字签名。


4. 数字签名

from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import padding

signature = private_key.sign(
    b"important data",
    padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH),
    hashes.SHA256()
)

# 验证签名
public_key.verify(
    signature,
    b"important data",
    padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH),
    hashes.SHA256()
)

应用场景:身份认证、防篡改。


5. 安全传输(TLS/SSL)

  • 使用 ssl 模块在 socket 上启用加密:
import ssl, socket

context = ssl.create_default_context()
with socket.create_connection(("example.com", 443)) as sock:
    with context.wrap_socket(sock, server_hostname="example.com") as ssock:
        print(ssock.version())

应用场景:HTTPS、加密通信。


6. 常见安全实践

  • 密码存储:使用 bcrypt 哈希 + 加盐
  • 输入校验:避免 SQL 注入与 XSS
  • 安全随机数:secrets 模块
import secrets
print(secrets.token_hex(16))

7. 安全架构设计

  • 分层:应用层 -> 加密层 -> 传输层
  • 日志:敏感信息脱敏存储
  • 审计:记录关键操作日志
  • 工具:结合 OpenSSL、Vault 管理密钥

8. 练习题

  1. 使用 hashlib 编写一个带盐的密码哈希函数。
  2. 使用 cryptography 实现 AES 文件加密与解密工具。
  3. 使用 RSA 实现一个简单的数字签名与验证程序。
  4. 使用 ssl 构建一个简单的 HTTPS 客户端。

小结

本章介绍了 Python 中的安全与加密编程技术,包括哈希、AES、RSA、数字签名、TLS 通信与安全实践。掌握这些技术,你可以为应用程序构建更强的安全保障。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言