### 加密算法
说明:这里为了方便介绍,引入发送方A和接收方B
#### 非对称加密算法(被加密数据的安全性)
`场景`:加密(RSA/DH/Elgamal/ECC)少量数据、数字签名(RSA/DSA/Elgamal)
`算法`:DH RSA DSA ECC(椭圆曲线算法) Elgamal Merkle-Hellman(背包算法) Miller-Rabin(素数测试算法)
加密/解密场景
```bash
发送方A
加密:DH/RSA/DSA公钥(接收方B)+对称加密的KEY-->密文KEY
接收方B
解密:DH/RSA/DSA私钥(接收方B)+密文KEY-->对称加密的KEY
```
数字签名/验签场景
```bash
发送方A
签名:
1.(SHA1/MD5+明文)->摘要1
2.摘要1+(RSA/Elgamal)私钥(发送方A)-->数字签名
接收方B
验签:
1. RSA公钥(发送方A)+数字签名-->摘要1(解密出来的)
2. SHA1/MD5+明文->摘要2(接收方B自己计算的)
3. 摘要1==摘要2 ?"成功":"失败" (对比摘要1和摘要2的值是否一致)
```
#### 对称加密算法
`场景`:适合加密大数据
`算法`:AES DES 3DES PBE RC5 Blowfish
加密/解密场景
```bash
加密过程:明文+AES/DES+对称加密的KEY->密文
解密过程:密文+AES/DES+对称加密的KEY->明文
```
AES加密算法的Counter模式
- ECB(电子密码本模式)
- CTR(计数器模式)
- GCM(CTR和GMAC结合)
#### AEAD加密方式(Authenticated Encryption with Associated Data (AEAD)
`介绍`:一种同时具备保密性,完整性和可认证性的加密形式
AEAD
- EtM方式:加密 then MAC
- MtE方式:MAC then 加密
- E&M方式:加密 and MAC
真正的AEAD
- GCM=(AES-CTR模式+GMAC结合)
- ChaCha20-IETF-Poly1305
- XChaCha20-IETF-Poly1305
#### 摘要算法
`算法` MD5 SHA1 MAC GMAC
```bash
摘要操作:MD5/SHA1+文本->固定长度的HASH值
```