1. 凯撒加密
加密方法:明文中的所有字母都在字母表上向后(或)向前按照一个固定的数目进行偏移。
例如,密钥为3的凯撒加密算法可以定义为这样:
凯撒加密的缺点:一个密文只有26个可能的密码,可以通过暴力破解。
升级:单表代换
例如:概念:不固定字母表,把所有字母彻底打乱进行一一对应。
但是这种方法也有缺点:破译者可以通过对字母出现的频率进行推测从而破解。
2. Playfair Cipher
加密方法:一次对多个字母进行加密。构造一个
5*5
的矩阵,首先选择一个关键字作为开头,关键字中没有出现的字母按照顺序填入矩阵,并利用该矩阵进行加密和解密。
加密和解密过程:
- 先选择一个关键字构造矩阵;
- 一次对明文的相邻两个字母进行加密,如果:
- 两个字母是相同的,那么选择指定的字母作为密文,例如 'X';
- 如果两个字母在矩阵的同一行,使用每个字母在矩阵中右边的字母替代该字母;
- 如果两个字母在矩阵的同一列,使用每个字母在矩阵中下面的字母替代该字母;
- 其他情况,以两个字母为对角,画一个矩形框,每个字母用另外同一行的对角的字母代替。
举个例子:
这种加密方法虽然大大改进了加密程度和可能的结果,但是仍然是可以破译的。
再升级:多表代替加密
概念:使用更多的字母表来提高密码分析的难度,使用一个关键字来决定使用哪个字母表加密明文,重复对应关键字和明文,按照顺序使用字母表直到关键字结束。
3. Vigenere Cipher
加密方法:使用最简单的多字母替换密码,即多个凯撒加密,构造一个从0到26的凯撒加密表:
- 写出要加密的明文,再选择一个keyword作为关键词,重复书写该关键词使得其组成的字符串和明文一一对应;
- 在上面的加密表中,以关键字作为横坐标,明文作为纵坐标,对应的交点即为该字符的密文。
举个例子:
4.置换加密
概念:置换加密通过重新排列字母顺序来隐藏消息,但不改变实际使用的字母,因此可以通过频率分布识别这些字母。
举个例子:Rail Fence cipher
通过把明文错位书写,重新打乱顺序进行排序:
升个级:Row Transposition Cipher
构造一个固定宽度矩阵,按照指定的列数将明文填入,然后根据key(乱序)重新排列,得到密文:
置换加密的具体应用:
- Rotor Machines 轮转机
- Steganography 隐写术(类似藏头诗)
- (*)Hill Cipher
5. Feistel Cipher Structure
概念:将输入的明文分组(L,R),对R进行加密,与L异或,得到新的R1,R0作为新的L1,从而进行多轮加密,最后将二者交换混合,得到密文。
对于Feistel Cipher
:
- 块长度:64,128
- 密钥长度:64,128
- 加密轮数:16
加密解密流程:
DES:Data Encryption Standard
S-盒:P盒是个置换表,也没搞懂是什么东西。。。
Triple DES:3DES使用三个密钥并且执行三次DES算法。(encrypt- decrypt-encrypt)
C=Ek3[Dk2[Ek1[p]]]
3DES的有效密钥长度为168bits
AES加密:
- 字节代换
- 行移位
- 列混淆
- 轮密钥加密
字节代换:使用一个简单的1616的表进行查询,其中包含256个八位的值,对于一个字节XY,用第X行第Y列的值代替它,完成字节代换。
行移位:第一行不动,第二行向左移动一位,第三行向左移动两位,以此类推。
列混淆:每一列拉出来和一个44的矩阵相乘,得到新的一列。
6. 分组加密
2-DES:
C = EK2(EK1(P))
其中K1,K2为两个关键字,密文被这两个关键字加密两次;3-DES:
- 使用两个key:
C = EK1(DK2(EK1(P)))
- 使用三个key:
C = EK3(DK2(EK1(P)))
分组加密:
- Electronic CodeBook(ECB)电码本模式
- Cipher Block Chaining(CBC)密文分组链接
- Cipher FeedBack(CFB)密文反馈
- Output FeedBack(OFB)输出反馈
- Counter(CTR)计数器
7. Public-Key Cryptography
概念:该加密方法为非对称加密。对于发送者和接收者都有两个密钥,分别是公钥和私钥。
加密方法:一次完整的加密过程如下
- A使用
A的私钥
对明文进行签名- A使用
B的公钥
对明文进行加密- B接受密文
- B使用
B的私钥
对密文进行解密- B使用
A的公钥
对该密文进行身份验证
单向陷门函数:
-
单向函数是一些易于计算但难于求逆的函数。
-
陷门单向函数就是在已知一些额外信息的情况下易于求逆的单向函数,这些额外信息就是所谓的陷门。
8.RSA⭐
大整数分解问题:任何一个整输都可以分解为素数的n次方相乘的形式。
RSA算法描述:
计算题解题过程:
例题:
练习:
例题中的应用:
9.公钥的分发
公钥分发的方法:
- public announcement公开发布
- publicly available directory公开可访问目录
- public-key authority公钥授权
- public-key certificates公钥证书
10. D-F密钥交换 Diffie-Hellman
操作:
例题:
CA:认证机构
安全协议:
- Secure Socket Layer (SSL)
- Transport Layer Security (TLS)
- Secure Electronic Transaction (SET)