数字签名
客户端发送的信息包含3类型:
数据报文 + HASH值 + 签名
。
数据报文
:明文信息进行加密(对称或非对称)之后的数据。
HASH值
:数据报文进行hash。
签名
:HASH值进行REA加密。
服务端收到信息后,对数据报文
进行hash,和收到的签名
做RSA解密之后的数据做对比,一样的话,说明数据没有被改过。然后就放心把数据报文
解密得到明文数据。
常见对称
AES
常见非对称
RSA
公钥
用户得到的加密解密用的一串字符。
私钥
服务端自己加密解密用的。
身为服务端给用户提供一个公钥。用户用这个公钥进行加密解密就行。
服务端对应的会有2个私钥,一个是加密用,一个是解密用。
散列算法
md5
结果是定长为32位16进制。
加盐
主要用在数据库存储上,即时破解了数据库,也不知道存的明文是啥。
明文不安全,怎么也得乱搞下,之前我们存的的就是md5
,其实很不安全。要对信息乱搞,但是又不能太乱,太乱自己都不知道自己整的啥可就搞笑了。
可以加个随机字符串查到明文里,然后进行md5
。
结果收到的了md5之后的数据,暴力破解了,结果是{"data":"abc", value:"123@#@12SD#$sdf"}
。这一看明文就是{"data":"abc", value:"123"}
还是搞的不够乱。
可以再对md5进行乱序,类似把32位分成几块儿,顺序乱一下。这样破解了数据库,也是不对的。
类似的还有多次md5,加时间戳。
https://www.jianshu.com/p/9000a0386e70
Json Web Tokens
JWT是无状态的,JWT不用在内存或DB里维持session的状态,直接拿到token解析就可以了。
那种jwt+服务端维持session状态的 用法是乱用。。
经典用法:一个api 分享出去,然后带上这个jwt生成的token,然后这个token维持着过期。
http://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html
https://zhuanlan.zhihu.com/p/100620273
https://www.cnblogs.com/kklldog/p/should-we-need-jwt-always.html
网友评论