关键词密码:编码、解码与字母映射
使用基于关键词的替换字母表加密和解密文本,查看字母映射,并结合频率模式辅助人工分析。
字母映射
标准字母表
密码字母表
关于关键词密码的常见问题
什么是关键词密码?
关键词密码是一种单表替换密码,它用关键词生成自定义字母表。先放入关键词中不重复的字母,再按顺序补上剩余未使用的字母。
如何构造关键词密码字母表?
先写下关键词并去掉重复字母,然后把其余未出现过的字母按标准字母表顺序依次补齐,最终得到替换映射。
如何解密关键词密码?
如果已知关键词,可以重新生成密码字母表并反向映射;如果不知道关键词,则需要结合频率分析和模式识别来推测可能的映射关系。
什么样的关键词更好?
包含更多不重复字母、长度更长的关键词会打乱更多字母位置,因此更难猜测。应尽量避免过短或按字母顺序排列的单词。
相关密码
关键词密码:古典替换加密 - 免费在线工具
关键词密码(Keyword Cipher),又称单表替换密码,是一种使用关键词创建唯一密码字母表的古典加密技术。与简单的位移密码不同,关键词密码提供可变的替换模式,使其对基本密码分析更具抵抗力,同时保持较好的教育可及性。
关键词密码的工作原理
关键词密码通过将选定的关键词置于密码字母表开头,后跟其余字母的标准字母顺序,来创建替换字母表。
算法流程
-
关键词准备:去除重复字母并转换为大写
- 示例:"grandmother" → "GRANDMOTHE"
-
剩余字母:识别不在关键词中的字母
- 剩余:BCFIJKLPQSUVWXYZ
-
密码字母表:合并关键词 + 剩余字母
- 最终:GRANDMOTHEBCFIJKLPQSUVWXYZ
-
字母映射:创建替换表
- A→G,B→R,C→A,D→N,E→D……
关键词密码示例
下面的例子都用本页的编码工具实际算过。加密时在上面一行找到明文字母,抄下它正下方的字母;解密时反过来查。
示例 1:关键词 ZEBRAS
关键词: ZEBRAS
标准: ABCDEFGHIJKLMNOPQRSTUVWXYZ
密码: ZEBRASCDFGHIJKLMNOPQTUVWXY
消息: MEET AT DAWN
加密: JAAQ ZQ RZVK
M 下面是 J,E 下面是 A,T 下面是 Q,依此类推。MEET 里的两个 E 加密后变成两个 A,单词的字母重复规律并没有被打乱。
示例 2:关键词里有重复字母
每个字母只保留第一次出现,所以 SECRET 会先缩成 SECRT,再接上字母表里剩下的字母:
关键词: SECRET → SECRT
标准: ABCDEFGHIJKLMNOPQRSTUVWXYZ
密码: SECRTABDFGHIJKLMNOPQUVWXYZ
消息: ATTACK AT MIDNIGHT
加密: SQQSCH SQ JFRKFBDQ
注意 U 到 Z 都映射回了自己。关键词如果只用到字母表前半段的字母,末尾那一截就会原封不动,这也是为什么更长、字母更分散的关键词更好。
示例 3:大小写混排的文本
默认开启"保留大小写",大写字母加密后仍是大写,小写仍是小写:
关键词: CIPHER
密码: CIPHERABDFGJKLMNOQSTUVWXYZ
消息: The Quick Brown Fox
加密: Tbe Oudpg Iqmwl Rmx
示例 4:已知关键词时解密
收到密文 "Tcr hrttrq ds hktr",并且知道关键词是 KANGAROO。先构造密码字母表(KANGRO 后面接上没用过的字母),再在下面一行找到每个密文字母,读出它正上方的字母:
标准: ABCDEFGHIJKLMNOPQRSTUVWXYZ
密码: KANGROBCDEFHIJLMPQSTUVWXYZ
密文: Tcr hrttrq ds hktr
明文: The letter is late
Python 实现
import string
def cipher_alphabet(keyword):
seen = []
for ch in keyword.upper() + string.ascii_uppercase:
if ch in string.ascii_uppercase and ch not in seen:
seen.append(ch)
return ''.join(seen)
def keyword_cipher(text, keyword, decrypt=False):
plain, cipher = string.ascii_uppercase, cipher_alphabet(keyword)
src, dst = (cipher, plain) if decrypt else (plain, cipher)
table = str.maketrans(src + src.lower(), dst + dst.lower())
return text.translate(table)
print(keyword_cipher("MEET AT DAWN", "ZEBRAS")) # JAAQ ZQ RZVK
print(keyword_cipher("JAAQ ZQ RZVK", "ZEBRAS", decrypt=True)) # MEET AT DAWN
免费在线关键词密码工具功能
我们的综合关键词密码工具包括:
- 双向处理:加密和解密模式
- 自定义关键词:使用任意关键词生成唯一密码字母表
- 大小写保留:保持原始文本格式的选项
- 字符集支持:适当处理空格和标点
- 字母映射可视化:查看字母变换方式
- 频率分析:内置统计分析工具
- 随机关键词生成器:自动生成安全关键词
安全分析与密码分析
尽管在历史上具有重要意义,关键词密码根本上容易受到现代密码分析技术的攻击:
频率分析脆弱性
- 方法:字母频率的统计分析
- 要求:约 27.6 个字母的密文
- 过程:将密码频率与预期英文频率比较(E=12.02%,T=9.06%,A=8.12%)
- 成功率:有足够文本时非常高
模式识别攻击
- 方法:识别常见词汇和模式
- 目标:冠词("THE"、"AND"),重复词
- 指标:词长、标点模式
- 自动化:现代算法可处理数千种可能性
相关密码方法
探索这些相关的古典加密技术:
延伸阅读
探索关键词密码历史、高级密码分析和代码实现:
- 关键词密码:历史、密码分析与实现指南 — 从古代外交加密到现代 MCMC 求解技术,含 Python 和 JavaScript 代码