JWT 介绍

什么是 JWT?

JWT (JSON Web Token) 是目前最流行的跨域认证解决方案,是一种基于 Token 的认证授权机制。 从 JWT 的全称可以看出,JWT 本身也是 Token,一种规范化之后的 JSON 结构的 Token。

JWT 自身包含了身份验证所需要的所有信息,因此,我们的服务器不需要存储 Session 信息。这显然增加了系统的可用性和伸缩性,大大减轻了服务端的压力。

可以看出,JWT 更符合设计 RESTful API 时的「Stateless(无状态)」原则

阅读更多

加密哈希函数 BCrypt

bcrypt 是由 Niels Provos 和 David Mazières 设计的密码散列函数,基于 Blowfish 密码,于 1999 年在 USENIX 上提出。 除了加入盐来防止彩虹表攻击外,bcrypt 还是一种自适应函数:随着时间的推移,计算机硬件的计算能力会越来越高,它可以通过增加迭代计数使其计算过程变慢,以此抵消硬件性能的提升,使其仍然可以抵抗暴力搜索破解攻击。

bcrypt 函数是 OpenBSD的默认密码哈希算法,也是某些 Linux 发行版(例如 SUSE Linux)的默认算法,在绝大部分流行的编程语言中,都有具体实现。

背景

Blowfish算法 在分组密码中因其昂贵的密钥设置阶段而引人注目。它首先使用标准状态的子密钥,然后使用该状态的一部分密钥执行块加密,并使用该加密的结果(更准确地说是散列)来替换一些子密钥。然后它使用这种修改后的状态来加密密钥的另一部分,并使用结果替换更多的子密钥。它以这种方式进行,使用逐渐修改的状态来散列密钥并替换状态位,直到设置所有子密钥为止。

阅读更多