为什么异或(XOR)在密码学中如此重要?
如果你正在学习密码学,或者只是想了解一些基本原理,你可能已经注意到异或运算经常被使用,尤其是在密码中。
什么是 XOR ( ⊕ )?
XOR,即“异或”运算,用于处理二进制数据。如果两个输入值互为相反数(一个为假,一个为真),则返回真;否则,返回假。
用 Go 代码举例来说:
func exclusiveOr(a bool, b bool) bool {
return a != b
}
异或密码——完美的密码
异或运算可以用作一种简单的密码,用单个密钥对消息进行加密和解密。这被称为对称加密。
值得注意的是,如果:
- 密钥与消息大小相同
- 密钥严格保密,并且是完全随机生成的。
这样一来,这种密码就无法破解。这被称为一次性密码本。然而,由于密钥长度过长,不切实际,因此简单的异或运算不应在生产环境中使用。
密码示例
举个简单的例子,我们来加密单词“hi”。
- 将“hi”转换为二进制,这里有一个免费工具:https ://www.rapidtables.com/convert/number/ascii-to-binary.html
01101000 01101001
- 创建一个长度相同的随机密钥:
01010010 01000101
- 通过对消息和密钥进行异或运算来创建加密消息:
01101000 01101001 ("hi") XOR 01010010 01000101 (secret key) = 00111010 00101100 (encrypted message)
- 使用密钥与加密消息再次进行异或运算来解密消息:
00111010 00101100 (encrypted message) XOR 01010010 01000101 (secret key) = 01101000 01101001 ("hi")
为什么它有效?
异或运算之所以能用作密码,是因为它是自身的逆运算。
𝑎 = (𝑎 ⊕ 𝑏) ⊕ 𝑏
正如我们在例子中所展示的那样:
加密后的消息⊕ 密钥 和
消息
=加密后的消息 ⊕ 密钥
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

