古典密码大都比较简单且容易破译,但其意义在于对理解现代密码学十分有益。
古典密码一般分为大的两种:置换密码和代替密码。
在密码算法设计中将古典密码用于线性变换用以增加算法的复杂度,和增加各个密文之间的联系,使得变换了一个明文会影响尽量多的密文。
置换密码
把字母的顺序重新排列,但字母本身保持不变,分组可能可以发生改变,如:
明文: I LOVE YOU
密文: U OYE VO LI
再经过一次置换就可以恢复成原本的字符,称为本次置换的逆置换
一般和其他的密码结合使用,既可以进行有效的加密
代替密码
首先要构造 明文-密文对应表 然后通过查表找到明文对应的密文(或者密文对应的明文)来进行 加(脱)密,单其字母的自身位置并没有发生改变。
单表代替密码(凯撒密码) 明文与密文进行一一对应
如在原字母的基础上每个字母进行自增固定的数字,如自增3,则A变为了D,B变为了E···依次类推,举个栗子:
自增数为:3
——————————
明文:G R E A T
密文:J U H D W
字母表一共有26个,故而自增量最多仅有25个,所以这种加密方式可以通过些许的密文(唯密文攻击)来进行穷举破解。
多表代替密码(维吉尼亚密码) 采用维吉尼亚方阵
横列对应明文,竖列对应字母序列的密钥;
在同一段字母中,一个密文可能对应着多种密文
每一行代表加对应的数字,如C代表加3,Z代表加25。
这种加密需要一组字母序列作为密钥,并进行循环,举个栗子:
如密钥字母序列是: a b c d e f g h i j k l
要加密的字母序列: q h y k s j u b f z b a
a行q列为密文的第一个字母:Q
b行h列为密文的第二个字母: I
c行y列为密文的第三个字母: A
···
最后得到的密文:Q I A N S O A I N I L L
对此仅使用唯密文攻击对该密码进行破解会比较困难,因此一般采用已知明文攻击。
这两种破解密码的方式(唯密文攻击和已知明文攻击)已在上一篇进行了说明