java 生成32 位token_JAVA生成JWT形式的Token

本文介绍了如何使用JWT生成32位Token,详细阐述了JWT的构成及安全性,并提供了HS256和RS256两种加密算法的Java代码实现。通过示例展示了JWT的生成和验证过程,强调了JWT在减少后端内存消耗和提高安全性方面的优势。
摘要由CSDN通过智能技术生成

1ac2e0c2d371376003a87c071b98b26a.png

开篇

实现 Token 的方式有很多,本篇介绍的是利用 JSON Web Token(JWT)生成的 Token.JWT 生成的 Token 有什么好处呢?

安全性比较高,加上密匙加密而且支持多种算法。

携带的信息是自定义的,而且可以做到验证 token 是否过期。

验证信息可以由前端保存,后端不需要为保存 token 消耗内存。

本篇分 3 部分进行讲解。

什么是 JWT

JWT 的代码实现

用 HS256 对称算法加密

用 RS256 非对称算法加密

总结

如果原理很难懂,没关系。可以直接看 JWT 的代码实现。代码已经上传 github。已经对代码进行封装成工具类。可以直接使用。

什么是 JWT

JSON Web Token 简称 JWT。

一个 JWT 实际上就是一个字符串,它由三部分组成,头部、载荷 与 签名。

JWT 生成的 token 是这样的

eyJpc3MiOiJKb2huI.eyJpc3MiOiJ.Kb2huIFd1IEp

生成的 token,是 3 段,用 . 连接。下面有解释。

头部

用于描述关于该 JWT 的最基本的信息,例如其类型以及签名所用的算法等。这也可以被表示成一个 JSON 对象。

例如:

{

"typ": "JWT",

"alg": "HS256"

}

载荷

其实就是自定义的数据,一般存储用户 Id,过期时间等信息。也就是 JWT 的核心所在,因为这些数据就是使后端知道此 token 是哪个用户已经登录的凭证。而且这些数据是存在 token 里面的,由前端携带,所以后端几乎不需要保存任何数据。

例如:

{

"uid": "xxxxidid", //用户id

"exp": "12121212" //过期时间

}

签名

签名其实就是:

1.头部和载荷 各自base64加密后用.连接起来,然后就形成了 xxx.xx 的前两段 token。

2.最后一段 token 的形成是,前两段加入一个密匙用 HS256 算法或者其他算法加密形成。

3. 所以 token3 段的形成就是在签名处形成的。

代码实现

1.看代码前一定要知道 JWT 是由 头部、载荷 与 签名 组成。

2.代码已上传 github,希望点个赞

3. 代码将 JWT 封装成两个工具类,可以直接调用。

需要下载的 jar 包

com.nimbusds

nimbus-jose-jwt

6.0

HS256 对称加密

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值