编码,加密,Hash,序列化,字符集
Hash算法
Hash是对数据形成一种提取,不可逆,可以快速验证,你是不是你,就像是在人这个物体里把指纹提取出来,通过两个人的指纹判断,这两个人是不是同一个人,但是我们不能通过指纹在茫茫人海中找出你
常见的Hash算法有MD5,SHA等
可用于数据签名,系统登录密码数据库统计
通常的网站都会有登录这个功能,验证你有没有权限看里面的东西
但是网站,数据库被盗取,也是一种微妙的可能,假如你使用的某个软件被别人脱库,坏人很可能拿着你的密码四处去试其他平台,谋取利益,Hash在这场防御战中立了功
注册后,开发者会通过hash你的密码,存一下你的hash值到数据库
就算被脱库了,别人也没办法破解你的密码,看不懂
但是黑客有一种彩虹表的东西,记录了通用密码,与通用密码的hash值,通过hash值反查你的密码
于是开发者又出了加盐的方式防御彩虹表,在你的密码里按照规律加入字符,让你的密码不通用,就算被黑客反查出不通用的密码,也看不懂你的密码到底是什么,也无法用这个密码登录
1.对称加密:
加密:使用A秘钥与加密算法对数据进行加密
解密:使用A秘钥与解密算法对数据进行解密
2.非对称加密
加密:使用A秘钥与加密算法对数据进行加密
解密:使用B秘钥与加密算法对数据进行解密
在非对称加密中,通常对数据进行加密的叫公钥,对数据进行解密的叫私钥
场景:网络通信+数字签名
在网络里,A节点与B节点通信,路程上会有无数个中间节点帮忙转发,这就会造成数据泄露,被中间节点进行数据撰改,数据重放等问题
单用对称加密,是行不通的,秘钥会被截获,加密算法,解密算法一般是通用的
非对称加密一般可以抵抗一下
1.A生成一对公钥,私钥,B生成一对公钥,私钥
2.A与B相互传递自己的公钥给对方
3.A使用B的公钥加密数据传输给B,B使用自己的私钥对数据进行解密
4.B使用A的公钥加密数据传输给A,A使用自己的私钥对数据进行解密
假设中间节点拿到AB的公钥和数据,但是没办法解密数据,数据是安全的,但是有个问题,中间节点可以使用A的公钥,对数据进行伪造发送给A,造成攻击
此时,防御此攻击的方法就为,数据签名
1A对原数据进行hash提取指纹
2.把指纹进行数字签名
3.将原数据和指纹打包使用B的公钥加密发给B
4.B用自己秘钥进行解密,使用A的公钥解密指纹,确定数据的身份,使用hash算法对原数据hash,判断指纹是否相等,确定数据是否正确
数据签名
A使用自己的私钥,对数据进行加密,其他人可以通过A的公钥解密,来确认这份数据是A发过来的
序列化
把内存中的对象转化为二进制数据进行通信,存储或者网络上传
字符集
将字符进行编号
比如ASCCI码 将65 代表A,66代表B
评论区