目录
加密
非对称加密
使用场景
- 信息加密(A写数据,发送给B,信息只允许B读)
- 登录认证(客户端要登录连接服务器,向服务器请求个人数据)
- 数字签名(表明信息没有受到伪造,确实是信息拥有者发出来的,附在信息原文的后面)
RSA:用于非对称和数字签名 明文,密钥,密文都是数字
加密过程 密文 = 明文^E modN (E和N的组合就是公钥)
将明文自己做E次乘法,然后将其结果除以N求余数,这个余数就是密文
解密过程 明文 = 密文^D modN (D和N的组合就是私钥)
特点
数据的机密性只能单方向保证
加密效率低适合加密少量数据
加密强度高相对于对称加密
密钥对生成流程
私钥流程
生成私钥 序列化为字符串 将私钥加入pem格式块中 通过pem进行编码,加入磁盘
公钥流程
从得到的私钥对象取出公钥 x509标准序列化rsa公钥 将公钥设置到pem格式块 通过pem进行编码 写入磁盘
加解密
rsa加密
读公钥文件中的公钥 解码pem 使用x509解码公钥 使用得到的公钥通过rsa进行数据加密
rsa解密
- 将私钥文件中的私钥读出,得到使用pem编码的字符串
- 将得到的字符串解码
- 使用x509将编码之后的私钥解析出来
- 使用得到的公钥通过rsa进行数据加密
对称加密
特点
- 双方向保证机密性
- 加密效率高,适合加密大数据,大文件
- 相对于非对称加密加密强度不高
流程
使用非对称加密完成对称加密时的密钥分发
Aice和Bob通信,Aice给bob发送数据,使用对称加密的方式
bob生成一个非对称的秘钥对,
bob将公钥发送给 alice
alice生成一个用于对称加密的秘钥
alice使用bob的公钥就对称加密的秘钥进行加密,并且发送给bob
bob使用私钥就数据解密,得到对称加密的秘钥
通信的双方便用写好的秘钥进行对称加密数据加密
数据对谁更重要谁就拥有私钥
弊端
秘钥分发困难
DES
将64bit的明文加密成64Bit密文的对称密码算法
密钥长度实际为56bit 每隔7bit会设置一个用于错误检查的bit
实质上密钥长度64(56 + 8bit校验错误)bit 且des每次只能加密64bit的数据 要想加密长的明文 则需要对DES加密进行迭代
迭代的具体方式就叫做模式
3DES
分组密码 安全 将des重复3次得到的密码算法
明文->通过密钥1进行DES加密->密钥2进行解密->密钥3进行加密
加密->解密->加密的目的是什么?为了兼容des
密钥 24字节 会被平分为3个
3des分组的长度 8字节
AES
分组密码 安全 取代des成为新标准的对称密码算法 密钥长度128 192 256 bit3种 aes分组128bit
分组密码模式
ECB 电子密码本
8的整数倍
安全性较差
要进行明文填充 达到块大小的整倍数
CBC 密码块链模式
CFB 密码反馈模式
OFB 输出反馈模式
CTR 计数器模式
每次加密时都会生成一个不同的值( nonce)来作为计数器的初始值
小结: ECB: 容易破解 CBC:安全系数高 不需要初始化向量 需要初始化向量 明文分组需要填充 明文分组需要填充 CFB OFB CTR 需要初始化向量 需要初始化向量 不需要 明文都不需要填充
明文填充是和加密模式相关 而不是和加密算法相关
单向散列函数
也叫(消息摘要函数/hash函数)
单向散列函数的性质
- 根据任意长度的消息计算出固定的散列值 即无论输入(原像)多少 输出(消息摘要 指纹)都是固定长度的值
- 能够快速计算出散列值
- 消息不同散列值也不同
- 抗碰撞性
- 具备单向性
单向散列函数的应用
- 消息认证码
- 数字签名; 就是按个手印 进行hash散列 进行非对称加密 然后进行解密校验
- 伪随机数生成器
- 一次性口令