jwt token太长了?自己实现序列化并缩短token长度

首先我们介绍一下工具 auth-java

auth-java 采用 tlv 序列化生成和jwt 一样的token ,但是auth-java 生成的token 长度可以比 jwt 长度缩小了一半

通过 tlv序列化即可以压缩数据,又可以去掉key的序列化

例如jwt 加密的内容 {“key1”:“value1”,“key2”:“value2”…} 然后把整个JSON字符串进行加密,从而导致整token长度变长

auth-java 采用 TLV 序列化 value1value2… 然后进行加密这种方式加密出来的数据 + 签名 比jwt 的token 长度减少一半

引入jar

maven jar
<dependency>
    <groupId>com.github.fashionbrot</groupId>
    <artifactId>auth-java</artifactId>
    <version>0.0.3</version>
</dependency>
gradle jar
implementation 'com.github.fashionbrot:auth-java:0.0.3'
示例代码:https://github.com/fashionbrot/auth/tree/master/auth-java-example

token 加密使用 com.github.fashionbrot.util.AuthUtil

权限认证 使用 com.github.fashionbrot.util.PermissionUtil

auth-java示例

public class HMAC256Test {
   

    private static final String secret = "+f+KCxF5UVl+O1a+sfafasfs/IDlfkadasfDfsuVXbMp5M8bOvqj1VEmGoB7IEn+";

    @Test
    public void test(){
   

        Date date=new Date();


        HMAC256Request auth = new HMAC256Request();
        auth.setIssuedAt(date);
        auth.setExpiresAt(addHours(date,1));
        auth.setUserId(12L);
        auth.setMobile("18888888888");


        String token = AuthUtil.encryptHMAC256(secret, auth);
        System.out.println("token:"+token);

        HMAC256Request verify = AuthUtil.decryptHMAC256(secret,HMAC256Request.class, token);
        System.out.println("result:"+verify.toString());

        //token:SAbhw6uMiDJIBuHmz4qIMkALMTg4ODg4ODg4ODgwAQw.C6TQ1q9-yRI9YLYvUesgsaYzZIW3kvjGxRHtVdPJdxc
        //result:HMAC256Request(userId=12, mobile=18888888888)
    }


    @Test
    public void test2(){
   

        Date date=new Date();


        HMAC256Request auth = new
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值