关键词密码:编码、解码与字母映射

使用基于关键词的替换字母表加密和解密文本,查看字母映射,并结合频率模式辅助人工分析。

结果
0 字符
关键词:
选项:保留大小写

字母映射

标准字母表

A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
↓

密码字母表

A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
输入关键词后即可查看密码字母表

关于关键词密码的常见问题

什么是关键词密码?

关键词密码是一种单表替换密码,它用关键词生成自定义字母表。先放入关键词中不重复的字母,再按顺序补上剩余未使用的字母。

如何构造关键词密码字母表?

先写下关键词并去掉重复字母,然后把其余未出现过的字母按标准字母表顺序依次补齐,最终得到替换映射。

如何解密关键词密码?

如果已知关键词,可以重新生成密码字母表并反向映射;如果不知道关键词,则需要结合频率分析和模式识别来推测可能的映射关系。

什么样的关键词更好?

包含更多不重复字母、长度更长的关键词会打乱更多字母位置,因此更难猜测。应尽量避免过短或按字母顺序排列的单词。

关键词密码:古典替换加密 - 免费在线工具

关键词密码(Keyword Cipher),又称单表替换密码,是一种使用关键词创建唯一密码字母表的古典加密技术。与简单的位移密码不同,关键词密码提供可变的替换模式,使其对基本密码分析更具抵抗力,同时保持较好的教育可及性。

关键词密码的工作原理

关键词密码通过将选定的关键词置于密码字母表开头,后跟其余字母的标准字母顺序,来创建替换字母表。

算法流程
  1. 关键词准备:去除重复字母并转换为大写

    • 示例:"grandmother" → "GRANDMOTHE"
  2. 剩余字母:识别不在关键词中的字母

    • 剩余:BCFIJKLPQSUVWXYZ
  3. 密码字母表:合并关键词 + 剩余字母

    • 最终:GRANDMOTHEBCFIJKLPQSUVWXYZ
  4. 字母映射:创建替换表

    • 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"),重复词
  • 指标:词长、标点模式
  • 自动化:现代算法可处理数千种可能性

相关密码方法

探索这些相关的古典加密技术:

延伸阅读

探索关键词密码历史、高级密码分析和代码实现: