Cryptology Academy · 课时

XOR 加密与一次一密

构建简单的 XOR 密码,并了解其具有完美保密性的变体

第 2 / 4 课13 个步骤

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

欢迎

XOR 加密很简单:密文 = 明文 XOR 密钥。当密钥真正随机且仅使用一次时,我们就得到了 OTP——唯一能够被证明无法破解的密码。

XOR 加密基础

key = bytes([0x5A, 0xF2, 0x3C, 0x11]) plaintext = bytes([0x48, 0x65, 0x6C, 0x6C]) # 'Hell' ciphertext = bytes(p^k for p,k in zip(plaintext,key)) # 结果:0x12 0x97 0x50 0x7D

XOR 自逆性质

解密与加密相同: plain = cipher XOR key 证明:(P XOR K) XOR K = P XOR (K XOR K) = P XOR 0 = P 因此,XOR 密码天然就是对称的。

一次一密概念

一次一密(OTP)使用与消息等长的随机密钥,并且密钥恰好使用一次。它在理论上无法破解:每个密文都能以相同概率解密为任意可能的明文。

香农完美保密性证明

Claude Shannon 于 1949 年证明:当且仅当密钥是随机的、长度至少与消息相同,并且最多使用一次时,密码才具有完美保密性。OTP 是唯一符合这些条件的实用密码。

OTP 的实际限制

密钥必须与消息等长。密钥必须安全地分发。密钥绝不能重复使用。这些限制使 OTP 不适用于大多数应用。

密钥重复使用攻击:多次一密

如果 C1 = P1 XOR K 且 C2 = P2 XOR K,那么 C1 XOR C2 = P1 XOR P2。密钥会相互抵消!攻击者拥有两个密文后,就能得到 P1 XOR P2,从而泄露其中的模式。

拖拽猜测攻击

如果攻击者猜中了 P1 的一部分(例如 ' the ' 这样的“猜测短语”),就可以在每个位置将它与 P1 XOR P2 进行 XOR,从而显示对应的 P2 文本。经过逐步推断,完整明文就会被恢复。

现实世界中的密钥重复使用失败

Venona 项目解密了数千条苏联一次一密消息,因为 KGB 特工在战争压力下重复使用了密钥纸带。密钥重复使用破坏了理论上完美的加密。

XOR 在流密码中的应用

现代流密码(ChaCha20、RC4)会生成伪随机密钥流,并将其与明文进行 XOR。它们近似实现了 OTP,但使用的是由 CSPRNG 扩展的短密钥。

XOR 加密 Python 演示

import os def otp_encrypt(plaintext: bytes) -> tuple: key = os.urandom(len(plaintext)) ciphertext = bytes(p^k for p,k in zip(plaintext,key)) return ciphertext, key ciphertext, key = otp_encrypt(b'Secret!')

快速检查

为什么重复使用一次一密的密钥会造成灾难性的安全问题?

回顾

XOR 和一次一密是密码学的基础。接下来我们将研究朴素的 XOR 方案为何在实践中会失败,以及哪些攻击会利用密钥重复使用。
免费开始

用 AI 导师学习 Cryptology Academy — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
67
课程
261

常见问题解答

「XOR 加密与一次一密」课时是免费的吗?

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

「XOR 加密与一次一密」这节课中我会学到什么?

构建简单的 XOR 密码,并了解其具有完美保密性的变体 你通过在浏览器中直接运行的动手代码来练习 Cryptology Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Cryptology Academy 需要有经验吗?

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

「XOR 加密与一次一密」课时需要多长时间?

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

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

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

此课程中的所有课时

  1. 位运算复习
  2. XOR 加密与一次一密
  3. 为什么单独使用 XOR 并不安全
  4. AES 与流密码中的 XOR
← 返回 Cryptology Academy