维尔南密码(一次性密码本)是一种在三个条件下理论上不可破译的加密方法:密钥是随机的、与消息等长,并且只使用一次。
1 选择编码
消息中的字符会被转换成比特。可选编码:博多码(每字符 5 位)、ASCII 7/8 位、UTF-8(变长)。字符表会随之动态更新。能输入哪种语言取决于编码:博多码只支持英文字母、数字和部分标点;ASCII 7 只支持英文;ASCII 8 支持带重音的西欧字母(如西班牙文);中文、俄文以及任何其他语言请选择 UTF-8。
2 输入消息
文本按所选编码转换为比特序列。不支持的字符会以警告形式高亮显示。
3 生成密钥
密钥随机生成(0 和 1 出现的概率相等)。长度可选:64–2048 位,或“与消息等长”(真正的一次性密码本)。如果密钥比消息短,它会循环重复(安全性降低)。
4 加密(异或)
消息的每一位都与密钥的一位进行异或(XOR)运算:0⊕0=0, 0⊕1=1, 1⊕0=1, 1⊕1=0。模式:逐位(直观展示按位运算)或即时完成。
5 传输
爱丽丝发给鲍勃:
- 密钥——通过安全信道(动画:沿曲线运动的金色数据包)
- 密文——通过公开信道(动画:沿直线运动的蓝色数据包)
两个数据包都以
HEX 格式显示(比特每 8 位一组,转换为十六进制符号)。两者同步到达。
6 解密
鲍勃用同一个密钥对密文做异或:密文 ⊕ 密钥 = 原始消息。由于异或是可逆的,这一运算与加密完全相同。
7 反向解码
解密后的比特被转换回字符。用户选择解码所用的编码——系统会将结果与原始消息进行核对,并显示预览。
8 结果
最终对比:原始消息、密钥(HEX)、密文(HEX)、解密后的文本。成功匹配时会显示确认信息和统计数据。
图示说明:
● 消息 / 结果 | ● 密钥 | ● 密文 | ⊕ 异或运算
重要:在真实的密码学中,密钥必须真正随机、绝不重复使用,并通过安全信道传输。本演示是一个教学模型。