1.介绍下如何实现 token 加密
MD5 + 盐
md5 是典型的信息摘要算法,需要获取一个随机长度的信息并产生一个 128 位二进制的信息摘要,转换成十六进制就是 32 位的字符串,这就是我们常见的 md5 算法的结果 — 数字指纹,一个 32 位的十六进制字符串
md5 值因为其信息摘要的特性,因此其生成的数字指纹是相同的,这就造成可能会被查字典的方式得到信息,这里可以通过加入随机值,再 md5 加密的方式,这样生成的散列值是不在字典里的。后续只要加入相同的随机值,生成 md5 散列,最后得到的和数据库中相同,就保存好了用户密码,不怕被查字典了
这里的随机值就加的“盐”
2.介绍下观察者模式和订阅-发布模式的区别,各自适用于什么场景
- 观察者模式:有观察者和被观察者
观察者通过代码观察被观察者,从而对被观察者的变化做出变化
- 订阅-发布模式:有订阅者和发布者
订阅者通过订阅发布者的消息,发布者发布消息后,订阅者随机得知,不用一直观察
二者的区别在于订阅-发布模式所有的操作需要经过事件总线
3.A、B 机器正常连接后,B 机器突然重启,问 A 此时处于 TCP 什么状态
A 处于重连状态