0Pricing
Cryptology Academy · 课时

使用 AES 实际加密文件

使用 OpenSSL 和 Python 对真实文件进行 AES 加密和解密

使用 AES 实际加密文件 是 CoddyKit 上的免费 Cryptology Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cryptology Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cryptology Academy 课程共包含 4 节课。

欢迎

理论与实践相结合。在本课中,我们将在 Python 中使用 AES-GCM 加密和解密真实文件。AES-GCM 是推荐的认证加密模式。

为什么选择 AES-GCM?

AES-GCM 提供带附加数据的认证加密(AEAD)。它不仅会加密,还会生成一个 16 字节的认证标签。任何篡改行为都会在解密前被检测到。

AES-GCM 的组成部分

输入:32 字节密钥、12 字节随机数、明文,以及可选的关联数据(AAD)。输出:密文和 16 字节的认证标签。每次加密使用的随机数都必须唯一。

安装加密库

pip install cryptography PyCA 提供的 Python 加密库是推荐使用的加密库。它封装了 OpenSSL,并同时提供高级配方和底层 hazmat 原语。

在 Python 中使用 AES-GCM 加密

from cryptography.hazmat.primitives.ciphers.aead import AESGCM import os key = AESGCM.generate_key(bit_length=256) nonce = os.urandom(12) aad = b'file_version_1' aesgcm = AESGCM(key) ciphertext = aesgcm.encrypt(nonce, plaintext, aad)

在 Python 中使用 AES-GCM 解密

try: plaintext = aesgcm.decrypt(nonce, ciphertext, aad) except Exception: print('Decryption failed — tampered or wrong key') 如果标签验证失败,decrypt() 会引发异常。绝不要忽略这个异常。

文件加密流程

with open('input.bin', 'rb') as f: plaintext = f.read() ciphertext_with_tag = aesgcm.encrypt(nonce, plaintext, None) # Store: nonce (12 bytes) + ciphertext_with_tag with open('output.enc', 'wb') as f: f.write(nonce + ciphertext_with_tag)

文件解密流程

with open('output.enc', 'rb') as f: data = f.read() nonce = data[:12] ciphertext_with_tag = data[12:] plaintext = aesgcm.decrypt(nonce, ciphertext_with_tag, None)

随机数管理

使用 AES-GCM 时,12 字节随机数在同一密钥下最多可安全用于 2^32 次加密;超过这个数量后,碰撞概率将变得不可忽略。之后请轮换密钥。

在命令行中使用 OpenSSL

# Encrypt: openssl enc -aes-256-cbc -pbkdf2 -in plain.txt -out encrypted.bin # Decrypt: openssl enc -d -aes-256-cbc -pbkdf2 -in encrypted.bin -out plain.txt 注意:这是 CBC 模式——在较新版本的 OpenSSL 中添加 -GCM 标志,以使用认证加密。

密钥存储最佳实践

绝不要将密钥硬编码在源代码中。请使用环境变量、AWS KMS、HashiCorp Vault 或 OS 密钥链。定期轮换密钥。相关人员离职时,请撤销其密钥。

快速检查

当 AES-GCM 检测到密文遭到篡改时,会发生什么?

回顾

现在,您已经能够在 Python 中使用 AES-GCM 加密文件。接下来,我们将学习非对称加密,并从基础开始了解 RSA。

常见问题解答

「使用 AES 实际加密文件」课时是免费的吗?

是的 — 「使用 AES 实际加密文件」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cryptology Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cryptology Academy 课程共包含 4 节课。

「使用 AES 实际加密文件」这节课中我会学到什么?

使用 OpenSSL 和 Python 对真实文件进行 AES 加密和解密 你通过在浏览器中直接运行的动手代码来练习 Cryptology Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Cryptology Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Cryptology Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「使用 AES 实际加密文件」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Cryptology Academy 课中编写并运行代码吗?

能。每节 Cryptology Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 对称加密概念
  2. AES 结构:轮与状态矩阵
  3. AES 密钥扩展与密钥长度
  4. 使用 AES 实际加密文件
← 返回 Cryptology Academy