令牌工具类(Jwt)和 Md5随机盐值加密

本文介绍了如何在Java中使用Jwt工具类生成和验证JWT令牌,以及使用MD5加密工具类生成随机盐值对密码进行加密。同时展示了JsonUtils类用于JSON操作的方法,如对象转JSON和JSON转对象。
摘要由CSDN通过智能技术生成

令牌工具类(Jwt)和 Md5随机盐值加密

public class JwtUtils {
    private static final long EXPIRE_DATE=30*60*1000;
    //token秘钥
    private static final String TOKEN_SECRET = "qianggezainaliwyywyasdaDQWCWQ%5ASAACACAssdsdsbalgda";

    /**
     * 生成token
     * @param username
     * @param userId
     * @return
     */
    public static String token (Integer userId,String username){

        String token = "";
        try {
            //过期时间
            Date date = new Date(System.currentTimeMillis()+EXPIRE_DATE);
            //秘钥及加密算法
            Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);
            //设置头部信息
            Map<String,Object> header = new HashMap<>();
            header.put("typ","JWT");
            header.put("alg","HS256");
            //携带username,password信息,生成签名
            token = JWT.create()
                    .withHeader(header)
                    .withClaim("username",username)
                    .withClaim("userId",userId)
                    .withExpiresAt(date)
                    .sign(algorithm);
        }catch (Exception e){
            e.printStackTrace();
            return  null;
        }
        return token;
    }

    /**
     * 校验
     * @param token
     * @return
     */
    public static boolean verify(String token){
        /**
         * @desc   验证token,通过返回true
         * @params [token]需要校验的串
         **/
        try {
            Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);
            JWTVerifier verifier = JWT.require(algorithm).build();
            DecodedJWT jwt = verifier.verify(token);
            return true;
        }catch (Exception e){
            e.printStackTrace();
            return  false;
        }
    }

    public static User parse(String token){
        DecodedJWT decodedJWT = JWT.decode(token);

        Map<String, Claim> claims = decodedJWT.getClaims();
        String username = claims.get("username").asString();
        Integer userId = claims.get("userId").asInt();

        User admin = new User();
        admin.setId(userId);
        admin.setUsername(username);

        return admin;

    }



    public static void main(String[] args) {

        String token = token(10,"zs");
        System.out.println(token);
//
//        //eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpbWFnZSI6IuayoeaciSIsInBob25lIjoiMTEwIiwiZXhwIjoxNjI1MDE4MTA5LCJ1c2VybmFtZSI6ImFsZyJ9.jMj6tR9h9QHxPEVQ23Ph3J1zLi7Fe3xcArAywee5EH0
//        System.out.println(token);
//
//        //验签
//        boolean isLogin= verify("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpbWFnZSI6IuayoeaciSIsInBob25lIjoiMTEwIiwiZXhwIjoxNjI1MDE4MTA5LCJ1c2VybmFtZSI6ImFsZyJ9.jMj6tR9h9QHxPEVQ23Ph3J1zLi7Fe3xcArAywee5EH0");
//
//        System.out.println(isLogin);

    }

}

MD5加密工具类

public class Md5Utils {
	
	
	
	/**
	 * 生成盐
	 * @return
	 */
	public static String crateSalt() {
		return UUID.randomUUID().toString();
	}
	
	/**
	 * 加密操作
	 * @param password 明文
	 * @param salt  调料
	 * @return 加密后的密码 
	 */
	public static String md5Password(String password,String salt) {
		
		try {
		
		//1.获取md5加密算法
		MessageDigest digest = MessageDigest.getInstance("md5");
		
		//2.加密密码 
		byte[] md5 = digest.digest((password+salt).getBytes());
		
		//3.Base64进行编码
		byte[] encoder = Base64.getEncoder().encode(md5);
		
		return new String(encoder);
		
		}catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException("加密失败!");
		}
	}

	public static void main(String[] args) {
		String salt = crateSalt();
		System.out.println(salt);
		String pwd = md5Password("ls", salt);
		System.out.println(pwd);

	}
	
}

json工具类(jackson依赖)

public class JsonUtils {

    // 定义jackson对象
    private static final ObjectMapper MAPPER = new ObjectMapper();

    /**
     * 将对象转换成json字符串。
     * <p>Title: pojoToJson</p>
     * <p>Description: </p>
     * @param data
     * @return
     */
    public static String objectToJson(Object data) {
    	try {
			String string = MAPPER.writeValueAsString(data);
			return string;
		} catch (JsonProcessingException e) {
			e.printStackTrace();
		}
    	return null;
    }
    
    /**
     * 将json结果集转化为对象
     * 
     * @param jsonData json数据
     * @param clazz 对象中的object类型
     * @return
     */
    public static <T> T jsonToPojo(String jsonData, Class<T> beanType) {
        try {
            T t = MAPPER.readValue(jsonData, beanType);
            return t;
        } catch (Exception e) {
        	e.printStackTrace();
        }
        return null;
    }
    
    /**
     * 将json数据转换成pojo对象list
     * <p>Title: jsonToList</p>
     * <p>Description: </p>
     * @param jsonData
     * @param beanType
     * @return
     */
    public static <T> List<T> jsonToList(String jsonData, Class<T> beanType) {
    	JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
    	try {
    		List<T> list = MAPPER.readValue(jsonData, javaType);
    		return list;
		} catch (Exception e) {
			e.printStackTrace();
		}
    	
    	return null;
    }


    public static void main(String[] args) {
        Result result = new Result();
        result.setCode(200);
        result.setMsg("成功了...");


        //转成json
//        String str = "{\"code\":200,\"msg\":\"成功了...\"}";

//        String str = "{\"code\":200,\"msg\":\"成功了...\",\"count\":null,\"data\":null}";
        //工具类专门转换
        String str = JsonUtils.objectToJson(result);
        System.out.println(str);
        Result re = JsonUtils.jsonToPojo(str, Result.class);
        System.out.println(re.getMsg());
    }
}
  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值