古典密码

明文 (plaintext) ---> 密文 (ciphertext)

单表密码

仿射密码

x=(y×k1+k2)%n
y=(xk2)×k1%n

多表密码

每个明文字母采用不同的单表替换(同一明文字母对应多个密文字符)

Vigenere Algorithm

明文: this cryptto system is not secure
密钥: cipher cipher cipher cipher cipher
密文: VPXZGIA...
t+c = v
t+p = i

Enigma

Date: 每一天的密码设计
Ringstellung (delta)添加增量
Steckerverbindungen: 十对字母的相互转化
Kenngrunppen: 和日期对应 方便情报归类

部件与概念

具体加密流程

plaintext -> wiring board 
          -> +delta1 -> rotor1 -> -delta1
		  -> +delta2 -> rotor2 -> -delta2
		  -> +delta3 -> rotor3 -> -delta3
		  -> reflactor 
		  -> +delta3 -> rotor3 -> -delta3
		  -> +delta2 -> rotor2 -> -delta2
		  -> +delta1 -> rotor3 -> -delta1 
		  -> wiring board 
		  						-> cripertext

同理可知加密、解密是完全可逆的过程

齿轮跳转规则

QEVJZ
RFWKA

  1. 常规跳转
    • 每按一下,齿轮 I 跳转一下
    • 当齿轮 I 从位置 Q 转到 R 时,齿轮Ⅱ被带动跳转一下
  2. double stepping
    • 当齿轮 I 从位置 Q 转到 R 时,齿轮Ⅱ被带动跳转
    • 若此时齿轮Ⅱ是从 D 跳转到 E,则下一次齿轮Ⅱ从 E 跳转到 F,并带动齿轮Ⅲ跳转
    • 可以理解为 I=Q,Ⅱ=D,Ⅲ=X -> I=R,Ⅱ=E,Ⅲ=X -> I=S,Ⅱ=F,Ⅲ=X+1