凯撒密码与栅栏密码
一:凯撒密码的加密原理
(1)基本原理
- 凯撒密码属于替换密码(Substitution Cipher)的一种,其核心思想是通过将明文中的每个字母按照一定的规律进行替换,从而生成密文,达到隐藏明文信息的目的。
(2)具体替换原理
- 它是基于字母表的移位操作来实现加密的。通常规定,将明文中的每个字母在字母表中按照固定的位数进行移动。例如,假设移动的位数为 3(这是最常见的示例设定,但实际使用中可以设定为任意整数)。
- 字母表顺序为: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”,按照向右移动 3 位的规则,它就会被替换为 “D”;同理,“B” 会被替换为 “E”,“C” 会被替换为 “F” 等等。
- 当移动到字母表末尾时,会循环回到字母表开头继续移位。比如,“X” 向右移动 3 位,就会变成 “A”(因为 “X”“Y”“Z” 之后循环到 “A”“B”“C”),“Y” 会变成 “B”,“Z” 会变成 “C”。
(3)数学表述
- 可以用数学公式来简单表示凯撒密码的加密过程。设明文的字母用小写字母表示,其在字母表中的位置序号为
x
x
x(假设
a
=
0
a=0
a=0 ,
b
=
1
b=1
b=1,
c
=
2
c=2
c=2,以此类推,
z
=
25
z=25
z=25),设定的移位位数为
k
k
k ,那么加密后得到的密文字母在字母表中的位置序号
y
y
y 可以通过以下公式计算:
y = ( x + k ) m o d 26 y=(x+k)mod26 y=(x+k)mod26
这里的 “ m o d mod mod” 是取模运算,也就是求除法的余数。通过这个公式算出 y y y 后,再根据 y y y 的值找到对应的字母就是密文了。
二:凯撒密码的解密原理:
(1)解密过程:
- 解密过程就是加密过程的逆操作。同样根据上述的移位规则,只是将密文的字母按照相反的方向移动相同的位数,就能还原出明文。从数学公式角度来看,已知密文字母在字母表中的位置序号 y y y 和移位位数 k k k ,要得到明文字母在字母表中的位置序号 x x x,可以使用以下公式:
- x = ( y − k ) m o d 26 x=(y-k)mod26 x=(y−k)mod26
二:栅栏密码的加密原理:
(1)基本思路:
- 栅栏密码的核心思想是通过将明文按照特定的排列方式写在所谓的 “栅栏” 上,然后按特定顺序读取这些字符来生成密文,从而实现对明文信息的隐藏。
(2)具体加密步骤:
-
确定栅栏数(行数):
- 首先需要确定要使用的栅栏数,也就是要把明文排列成几行。这个栅栏数通常是事先约定好的一个整数,设为 n n n(一般 n > = 2 n>=2 n>=2 )。
-
按行排列明文:
- 将明文字符依次按照从上到下、从左到右的顺序排列在 n n n 行的 “栅栏” 上。例如,明文是 “HELLOWORLD”,若设定栅栏数 n = 3 n=3 n=3 ,则排列如下:
- 第一行:H L O L
- 第二行:E W R D
- 第三行:L O
-
生成密文:按照特定的顺序读取这些排列好的字符来形成密文。对于上述 n = 3 n=3 n=3 的例子,常见的读取顺序是先从上到下读取每列的字符(也可以有其他约定的读取顺序)。按照先列后行的顺序读取得到的密文就是:“HLELOWRDLD”。
三:一般情况的数学表述:
- 设明文为 P = p 1 ∗ p 2 ∗ p 3 . . . p m P=p_1*p_2*p_3...p_m P=p1∗p2∗p3...pm (其中 p i p_i pi 表示明文中的第 i i i 个字符, m m m 为明文长度),设定的栅栏数为 n n n。
- 我们可以将明文按照栅栏数 n n n 排列成一个类似矩阵的形式(不一定是完整的矩形矩阵,可能最后一行字符数会少于前面的行)。
- 然后按照约定的读取顺序(如先列后行)来生成密文 C = c 1 ∗ c 2 ∗ c 3 . . . . c m C=c_1*c_2*c_3....c_m C=c1∗c2∗c3....cm ,其中 c j c_j cj 是按照读取顺序选取的字符