密码学小记

消息摘要算法

MD5

MD5(Message Digest Algorithm 5)中文名为消息摘要算法第五版,是计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护

  • 输入任意长度信息,输出长度固定:
  • 散列后的密文不可逆
  • 散列后的结果唯一(但并不绝对可能产生哈希碰撞)
  • 哈希碰撞:原始数据与其MD5散列结果并非一一对应,存在多个原始数据的MD5结果相同的可能性
  • 一般用于校验数据完整性、签名sign

由于密文不可逆,所以服务端也无法解密,想要验证,就需要跟前端一样的方式去重新签名一遍,签名算法一般会把源数据和签名后的值一起提交到服务端,要保证在签名时候的数据和提交上去的源数据一致

Netty

概述

什么是 Netty

Netty 是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端

注意:netty的异步还是基于多路复用的,并没有实现真正意义上的异步IO

Netty 的优势

使用传统NIO,其工作量大,bug 多

  • 需要自己构建协议
  • 解决 TCP 传输问题,如粘包、半包
  • 因为bug的存在,epoll 空轮询导致 CPU 100%
  • 对 API 进行增强,使之更易用,如 FastThreadLocal => ThreadLocal,ByteBuf => ByteBuffer

《NIO》小记

前言

NIO 全名 non-blocking Io 也叫非阻塞IO

三大组件

Channel 和 Buffer

channel 有一点类似于 stream 流,它是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而之前的 stream 要么只能是输入,要么只能是输出,channel 比 stream 更为底层