无需登录 数据私有 本地保存

扑克牌接龙密码 - 手动流密码生成

11
0
0
0
扑克牌堆状态
54张牌 就绪
每张牌下方小字为牌值编号(1-54),用于算法计算
密钥流输出
已生成: 0 个
尚未生成密钥流...
字母格式 (A-Z),可直接用于加密/解密
加密明文
解密密文
操作日志
等待操作...
常见问题与知识点

扑克牌接龙密码是一种手动流密码,由密码学家Bruce Schneier设计,最初出现在小说《Cryptonomicon》中。它使用一副标准的54张扑克牌(含大小王)作为密钥源,通过一系列洗牌操作生成伪随机密钥流,实现无需计算机的加密通信。其安全性基于牌堆状态空间巨大(54! ≈ 2.3×10^71),暴力破解几乎不可能。

五步循环:
移动王牌A:找到小王(53),向下移动1张牌的位置。
移动王牌B:找到大王(54),向下移动2张牌的位置。
三重切牌:以两张王牌为界,交换顶部和底部的牌堆。
计数切牌:看底部牌的值v,将顶部v张牌移到底部牌之前。
输出密钥:看顶部牌值v,数v张牌后的那张牌值即为密钥流输出(王牌则跳过重来)。

如果双方使用相同的标准牌堆顺序,密钥流就是确定性的,任何知道算法的人都能解密。使用密码短语初始化牌堆后,牌堆的初始状态由密码决定,不同密码产生完全不同的密钥流。这相当于将密码"搅拌"进牌堆,确保只有知道密码的通信双方能生成相同的密钥流。

使用模26加法:将字母转换为数字(A=1, B=2, ..., Z=26),密钥流也是1-26的数字。
加密:密文数字 = (明文数字 + 密钥流数字) mod 26(结果为0则取26)。
解密:明文数字 = (密文数字 - 密钥流数字 + 26) mod 26(结果为0则取26)。
这是对称加密,加密和解密使用完全相同的密钥流。

Solitaire密码被设计为中等安全级别的手动密码。它的密钥空间巨大(54!),但存在一定的统计偏差——生成的密钥流并非完美均匀分布。对于日常非关键通信足够安全,但不建议用于高敏感信息。Bruce Schneier本人也指出,如果攻击者能获取大量密文,可能存在密码分析攻击的途径。实际使用中,建议定期更换密码短语

标准桥牌顺序:♣A=1, ♣2=2, ..., ♣K=13;♦A=14, ..., ♦K=26;♥A=27, ..., ♥K=39;♠A=40, ..., ♠K=52;小王=53(王牌A),大王=54(王牌B)。在算法中,王牌的值统一视为53。密钥流输出值若在27-52则减去26映射到1-26。