从远古到1949期间使用的密码都叫古典密码
分类:
根据密钥的个数分为单表代换密码和多表代换密码
单个密钥为单表代换密码
多个密钥为多表代换密码
根据明文和密文的值域分为置换密码和代换密码。
值域相同为置换密码
值域不同为代换密码
1.置换密码:
置换密码又叫换位密码(Transposition Cipher)
定义:把明文中各字符的位置次序重新排列得到密文。特点:字符不变只是打乱了位置和次序。
在有限集X上的运算σ: X→X,σ是一个一一映射函数,那么称σ为一个置换。 若σ是一个置换,∀x∈X,存在唯一的x使得σ(x)= x'。同理可以定义逆置换σ-1: X→X,σ-1也是双射函数,并且σ-1的定义域和值域相同,即∀x′∈X,存在唯一的x∈X使得σ-1(x ′)=x。
置换函数=(x,y,z)(p)(x1,x2) 求逆置换只需要第一个不动后面倒叙就行了
M,C,K分别为明文空间,密文空间和密钥空间。
1.列置换密码(按列换位&按列独处明文序列得到密文):
将明文以设定的固定分组宽度m写出,不足的用约定的方式填充
2.周期置换函数:
将明文按固定长度m分组,然后对每组字符串按置换函数重新排列得到密文
2.代换密码(代替密码,位置不变更改字符)
放射密码:
将26个英文字母分别对应(0, 1, 2, …, 25) 加密变换:c=Ea,b(m)≡am+b (mod 26) 解密变换:m=Da,b(c)≡a-1(c-b) (mod 26) 其中,a、b 是密钥,为满足0≦a,b≦25和gcd(a, 26)=1的整数,gcd(a, 26)表示a和26的最大公因子, gcd(a, 26)=1 表示a和26是互素的;a-1表示a的逆元,即a-1∙a=1mod26。
3.单表代换密码:
只有一个密钥
代表:
1.凯撒加密:
加密:看作英文字母表循环左移三个
解密:右移即可
用数学表达式处理:将字母表和0-25一一对应,然后mod(26)来处理:
加密函数:E(m)=(m+k)(mod26)
解密函数:D(m)=(m-k)(mod26)
2.放射密码:
跟凯撒密码类似,只是对于K是自己取。
4.多表代换密码
有多个密钥控制:
代表:
1.维吉尼亚密码:
输入字符串或者数字作为密钥,输入的如果是字符串就替换为0-25对应的英文字母表。
根据秘钥的个数将明文分类加密,分别一一将明文分组后根据对应的密钥,一一相加后mod(26)加密对换
解密就反着。
其实就是凯撒密码将密钥变为多个分组后一个一个加密。
2.Playfair密码。
首先一个5x5的表格,然后确定密钥后根据从左往右,从上往下的顺序填入,I和J填入一个空格,剩下的按英文字母按照顺序填入。然后根据表格两两一起加密,如果有单个就约定一个填入。
加密:
1.p和q同行,就变为右边的数
2.同列就变为下面的数
3.不同行不同列就变为表格对顶数。
解密相反