发布于 2026-01-06 17 阅读
0

为什么异或(XOR)在密码学中如此重要?

为什么异或(XOR)在密码学中如此重要?

如果你正在学习密码学,或者只是想了解一些基本原理,你可能已经注意到异或运算经常被使用,尤其是在密码中。

什么是 XOR ( )?

XOR,即“异或”运算,用于处理二进制数据。如果两个输入值互为相反数(一个为假,一个为真),则返回真;否则,返回假。

异或示例

用 Go 代码举例来说:

func exclusiveOr(a bool, b bool) bool {
    return a != b
}
Enter fullscreen mode Exit fullscreen mode

异或密码——完美的密码

异或运算可以用作一种简单的密码,用单个密钥对消息进行加密和解密。这被称为对称加密。

值得注意的是,如果:

  1. 密钥与消息大小相同
  2. 密钥严格保密,并且是完全随机生成的。

这样一来,这种密码就无法破解。这被称为一次性密码本。然而,由于密钥长度过长,不切实际,因此简单的异或运算不应在生产环境中使用。

密码示例

举个简单的例子,我们来加密单词“hi”。

  1. 将“hi”转换为二进制,这里有一个免费工具:https ://www.rapidtables.com/convert/number/ascii-to-binary.html
01101000 01101001
Enter fullscreen mode Exit fullscreen mode
  1. 创建一个长度相同的随机密钥:
01010010 01000101
Enter fullscreen mode Exit fullscreen mode
  1. 通过对消息和密钥进行异或运算来创建加密消息:
01101000 01101001 ("hi") XOR 01010010 01000101 (secret key) = 00111010 00101100 (encrypted message)
Enter fullscreen mode Exit fullscreen mode
  1. 使用密钥与加密消息再次进行异或运算来解密消息:
00111010 00101100 (encrypted message) XOR 01010010 01000101 (secret key) = 01101000 01101001 ("hi")
Enter fullscreen mode Exit fullscreen mode

为什么它有效?

异或运算之所以能用作密码,是因为它是自身的逆运算。

𝑎 = (𝑎 𝑏) 𝑏

正如我们在例子中所展示的那样:

加密后的消息 密钥

消息

=加密后的消息 密钥

XOR运算是否在生产环境中的密码算法中使用?

简单的异或密码在生产环境中并不常用,因为使用与消息体长度相同的密钥是不切实际的。然而,异或运算仍然非常有用。事实上,几乎所有对称加密算法都使用了异或运算。在AES-256算法的“加轮密钥”步骤中,异或运算是主要操作。DES密码也使用了异或运算。

感谢阅读

Lane 的推特账号:@wagslane

Dev.to 上的 Lane:wagslane

下载 Qvault:https://qvault.io

文章《为什么异或运算(XOR)在密码学中很重要?》最初发表于Qvault 网站

文章来源:https://dev.to/wagslane/why-is-exclusive-or-xor-important-in-cryptography-e7b