1.首先让我们来看看凯撒密码

这张图,是不是很清晰明了,凯撒密码的本质就是将字母移位,形成新的密文

我们可以举个例子

明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ

密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC

使用时,加密者查找明文字母表中需要加密的消息中的每一个字母所在位置,并且写下密文字母表中对应的字母。
需要解密的人则根据事先已知的密钥反过来操作,得到原来的明文。例如:

明文:HEETIAN LAB

密文:KHHWLDQ ODE

凯撒密码的加密、解密方法还能够通过同余的数学方法进行计算。

2.栅栏密码

栅栏密码属于古典密码中最经典的移项式密码,同之前讲到的凯撒密码等替换式密码代表了密码学中最重要的两个概念(扩散和混淆)

我们以2栏栅栏密码为例来讲解它的加密和解密过程。

加密过程:

明文:THERE_IS_A_CIPHER_

两个一组,得到:(TH) (ER) (E_) (IS) (_A) (_C) (IP) (HE) (R_)

先每组中取出第一个字母:TEEI__IHR

再从每组中取出第二个字母:HR_SACPE_

连在一起得到密文:TEEI__IHRHR_SACPE_

解密过程:

而解密的时候,我们先把密文从中间分开,变为两行:

TEEI__IHR

HR_SACPE_

再按上下上下的顺序组合起来:

THERE_IS_A_CIPHER_

那么如何将2栏密码扩展到多栏呢?在之前的明文中,CIPHER这个单词之后加了一个下划线,
目的就是为了让明文字符串的长度是2的倍数,
栅栏密码的分栏的一个前提就是分的栏数需是明文长度的因数,这样才会使得分出来的每个栏长度都一样。

对于多栏,我们还是用上面的例子来讲解。

上面的明文字符串(THERE_IS_A_CIPHER_)的长度是18

所以我们可以把它分为2,3,4,6,9栏,这里我们以6栏为例。

以每个元素相隔6个字符分割出栅栏。

第一栏:TII

第二栏:HSP

第三栏:E_H

第四栏:RAE

第五栏:E_R

第六栏:_C_

连接在一起得到密文:TIIHSPE_HRAEE_R_C_

3.埃特巴什码

埃特巴什码

埃特巴什码

埃特巴什码

重要的事情说三遍!

这个古典密码CTF经常考!

Atbash密码是一种替换密码,具有特定的密钥,其中字母表中的字母是颠倒的

对应关系如下:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ZYXWVUTSRQPONMLKJIHGFEDCBA