hutool 使用RSA256实现JWT token签发与验证

后端 潘老师 1个月前 (03-14) 104 ℃ (0) 扫码查看

在使用JWT时,可以使用hutool工具包轻松实现,这里我们展示下使用 RSA256加解密,来实现JWT的签发与验证。

1.导入依赖

首先导入hutool的maven依赖:

<dependency>
        <groupId>cn.hutool</groupId>
        <artifactId>hutool-all</artifactId>
        <version>5.8.24</version>
</dependency>

2.生成RSA256公私钥对

我们先介绍下如何使用hutool生成RSA256公私钥对,代码如下:

 @Test
    public void generateKeyPair() {
        String id = "rs256";
        KeyPair keyPair = KeyUtil.generateKeyPair(AlgorithmUtil.getAlgorithm(id));
        System.out.println(Base64.getEncoder().encodeToString(keyPair.getPrivate().getEncoded()));//私钥
        System.out.println(Base64.getEncoder().encodeToString(keyPair.getPublic().getEncoded()));//公钥
    }

这里我们将生成的KeyPair分别使用了Base64编码处理了,这样便于我们存储。

3.实现JWT签发与验证

接下来我们用已经生成的RSA256公私钥对(Base64加密后的)来实现JWT的签发与验证,代码如下:

@Test
public void test() {
    String id = "rs256";
    String privateKey = "MIIC省略.....==";
    String publicKey = "MIG省略....";
    RSA rsa = SecureUtil.rsa(privateKey, publicKey);
    final JWTSigner signer = JWTSignerUtil.rs256(rsa.getPrivateKey());
    final JWTSigner signer2 = JWTSignerUtil.rs256(rsa.getPublicKey());
    // 生成token
    final String token = JWT.create()
            .setNotBefore(DateUtil.date())
            .sign(signer);
    System.out.println(token);

    // 验证算法
    JWTValidator.of(token).validateAlgorithm(signer2);
    // 解析token
    JWT jwt = JWTUtil.parseToken(token);
    System.out.println(jwt.getHeader());
    System.out.println(jwt.getPayload());
}

切记需要注意签名用privateKey(私钥),验证用publicKey(公钥),千万别搞反了,不然会报错的。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/back/12913.html
喜欢 (1)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】