2021-11-04 jjwt(获取密钥、加密、解密)

jjwt(获取密钥、加密、解密)

代码

package com.zsl.util;

import io.jsonwebtoken.*;
import io.jsonwebtoken.io.Decoders;
import io.jsonwebtoken.io.Encoders;
import io.jsonwebtoken.security.Keys;

import javax.crypto.SecretKey;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * @Author zsl
 * @Date 2021/11/4 21:49
 */
public class JwtUtil {

    private static String key = "l0UsM01W/W3s+o4o/j+DIdiK1uo+4CJ46blUXwg9Fis=";
    private static Long offset = 60 * 1000L;
    public static void main(String[] args) {
        HashMap<String, Object> map = new HashMap<>();
        map.put("username", "zsl");
        map.put("password", "xxxxx");

        String jwy = jwt(map);
        System.out.println(jwy);
//        eyJhbGciOiJIUzI1NiJ9.eyJwYXNzd29yZCI6Ijk5MDEyNiIsInVzZXJuYW1lIjoienNsIiwiaWF0IjoxNjM2MDM2NTg1LCJleHAiOjE2MzYwMzY2NDV9.T3W5Rk7pg3G-M46g7nJhPvybgFKwysALi-EEHHp9V1k
//        eyJhbGciOiJIUzI1NiJ9.eyJwYXNzd29yZCI6Ijk5MDEyNiIsInVzZXJuYW1lIjoienNsIiwiaWF0IjoxNjM2MDM2NjA4LCJleHAiOjE2MzYwMzY2Njh9.OQNLE36OSxeP_BsGfHr0WcN07FazzPjIVZIH3G2Kz3U
//        eyJhbGciOiJIUzI1NiJ9.eyJwYXNzd29yZCI6Ijk5MDEyNiIsInVzZXJuYW1lIjoienNsIiwiaWF0IjoxNjM2MDM2NjM5LCJleHAiOjE2MzYwMzY2OTl9.ZgjVpCxdWeOcQ5tBHp_n3sH84GpA6MFeP2-GFgQ65Cw

        System.out.println(parse("eyJhbGciOiJIUzI1NiJ9.eyJwYXNzd29yZCI6Ijk5MDEyNiIsInVzZXJuYW1lIjoienNsIiwiaWF0IjoxNjM2MDM2NjM5LCJleHAiOjE2MzYwMzY2OTl9.ZgjVpCxdWeOcQ5tBHp_n3sH84GpA6MFeP2-GFgQ65Cw"));
    }

    public static Claims parse(String jwt) {
        Jws<Claims> parse = Jwts.parserBuilder()
                .setSigningKey(key)
                .build().parseClaimsJws(jwt);

        return parse.getBody();
    }

    /**
     * 加密
     * 加密方式(header).内容、起始时间、失效时间(body).密钥(secret key)
     * @param map
     * @return
     */
    public static String jwt(Map map) {
        Date currentDate = new Date();
        Date invalidDate = new Date(currentDate.getTime() + offset);
        // 获取密钥
        SecretKey secretKey = Keys.hmacShaKeyFor(Decoders.BASE64.decode(key));
        String compact = Jwts.builder()
                .setClaims(map)     //自定义签名 eg:内容 设置的当前时间、失效时间也存放在这个map里
                .setIssuedAt(currentDate)   //当前时间
                .setExpiration(invalidDate)     //失效时间
                .signWith(secretKey)        //设置密钥
                .compact();
        return compact;
    }

    /**
     * 获取密钥 并以编码BASE64格式
     * @return
     */
    public static String generateSecretKey() {
        SecretKey secretKey = Keys.secretKeyFor(SignatureAlgorithm.HS256);
        String encode = Encoders.BASE64.encode(secretKey.getEncoded());
        return encode;
    }

}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值