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