常用加密算法
一、对称加密
1.定义
需要加密大量数据
2.工作过程
3.常用的算法
DES
秘钥:8个字节
3DES
AES
https://blog.csdn.net/lrwwll/article/details/78069013
在实际开发过程中要注意的地方
- 服务端和客户端必须使用一样的秘钥和初始化向量(IV)
- 服务端和客户端必须使用一样的加密模式
- 服务端和客户端必须使用一样的padding模式
在python中使用
PyCrypto
PyCryptodome
https://pycryptodome.readthedocs.io/en/latest/src/introduction.html
二、非对称加密
1.定义
公钥,私钥 ssh
2.特点
不会用来加密大量数据,和对称加密结合,用来加密对称加密的秘钥
3.工作原理
4.常用算法
RSA
算法原理
RSA算法基于一个十分简单的数论事实,将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难。,因此,将乘积作为公开加密秘钥。
RSA的加密解密过程非常简单:
| 公钥 | (n,e) |
|---|---|
| 私钥 | (n,d) |
| 加密 | 密文 = (明文^e)%n |
| 解密 | 明文=(密文^d)%n |
秘钥的生成步骤
-
随机选择两个不想等的质数p和q
选择61,53 实际应用中,越大越好
-
计算p和n的乘积
n = 61*53=3233
n的长度就是秘钥的长度,实际应用RSA秘钥一般是1024位,重要场合2048位
-
计算n的欧拉函数φ(n)
φ(n) = (p-1)*(q-1) = 60 * 52=3120
-
随机选择一个整数e,条件是 1 < e < φ(n), 且 e与 φ(n) 互质
随机选了 17 ,实际应用中,常常选 65537
-
计算e对φ(n)的模反元素d
所谓的模反元素就是指有一个整数d,一是的ed被φ(n)*除,余数为1
e*d - 1 = k * φ(n)
e*x + φ(n) * y = 1
17x +3120y = 1
x = 2753
y = -15
d = 2753
计算完毕
-
将n和e封装成公钥,n和d封装是秘钥
100
在python中使用RSA
三、hash(摘要算法)复习
1.定义
不定长输入,定长输出
2. 特点
- 不可逆
- 定长输出
- 抗修改
- 强碰撞性
3.应用领域
- 一致性校验
- 数字签名
- 安全访问认证
4.常用算法
md5
sha家族
sha-1 sha-224 sha-256 sha -384 sha-512