Vernam密码:一次一密与异或运算的完美结合
理论上只有一种密码被证明是绝对不可破译的——一次一密One-Time Pad。而 Vernam 密码就是它的二进制实现版本核心只是 XOR 运算。1. 从字母到二进制Vernam 密码处理的是二进制流。首先将明文字母、数字、符号转换为二进制数字序列。2. 加密与解密公式设明文比特序列mi0或1密钥序列ki0或1完全随机且与明文等长。加密cimi⊕ki(XOR)解密mici⊕ki因为 XOR 满足a⊕b⊕ba。3. 为什么不可破译密钥必须真随机、与明文等长、只使用一次对于任意密文任何明文都可以通过某个密钥得到攻击者无法区分4. 实验模拟Pythonpythonimport osdef vernam_encrypt(plaintext_bytes, key_bytes):return bytes([p ^ k for p, k in zip(plaintext_bytes, key_bytes)])# 生成随机密钥plain bhello worldkey os.urandom(len(plain))cipher vernam_encrypt(plain, key)decrypted vernam_encrypt(cipher, key)print(decrypted plain)# True5. 现实中的限制密钥分发困难需要安全信道传送等长密钥密钥管理成本高因此一次一密主要用于极高级别保密场景日常通信使用它的变种如流密码Vernam 密码虽然简单却奠定了信息论安全的基础。XOR 运算也成为现代对称密码中最常用的操作之一。