`
wisfly
  • 浏览: 62963 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

JWT类用于登陆人信息的加密解密

 
阅读更多

小伙伴们,我开了一家海淘护肤品淘宝店,搜索店铺“禾子蝶的海淘铺”,正品保证,欢迎进店选购哦。谢谢!

 

package com.cmcc.util;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.security.Key;
import java.util.Date;

import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.DatatypeConverter;

import net.sf.json.JSONObject;

//Sample method to construct a JWT
public class JWT {
    private final static String apiKey="cmcc#*1234";
    public static String createJWT(String id, String issuer, String subject,
            long ttlMillis) {

        // The JWT signature algorithm we will be using to sign the token
        SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;

        long nowMillis = System.currentTimeMillis();
        Date now = new Date(nowMillis);

        // We will sign our JWT with our ApiKey secret
//        byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary(apiKey
//                .getSecret());
        byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary(apiKey);
        Key signingKey = new SecretKeySpec(apiKeySecretBytes,
                signatureAlgorithm.getJcaName());

        // Let"s set the JWT Claims
        JwtBuilder builder = Jwts.builder().setId(id).setIssuedAt(now)
                .setSubject(subject).setIssuer(issuer)
                .signWith(signatureAlgorithm, signingKey);

        // if it has been specified, let"s add the expiration
        if (ttlMillis >= 0) {
            long expMillis = nowMillis + ttlMillis;
            Date exp = new Date(expMillis);
            builder.setExpiration(exp);
        }

        // Builds the JWT and serializes it to a compact, URL-safe string
        return builder.compact();
    }
    public static JSONObject parseJWT(String jwt) {
        //This line will throw an exception if it is not a signed JWS (as expected)
        JSONObject json=new JSONObject();
        json.put("success", true);
        try{
        Claims claims = Jwts.parser()        
           .setSigningKey(DatatypeConverter.parseBase64Binary(apiKey))
           .parseClaimsJws(jwt).getBody();
        String ID=claims.getId();
        String Subject=claims.getSubject();
        String Issuer=claims.getIssuer();
        Long Expiration=claims.getExpiration().getTime();
        json.put("code", "0");
        if(new Date().getTime()>Expiration){
            json.put("code", "1001");
            json.put("msg", "token过期");
        }else{
            json.put("id", ID);
            json.put("subject", Subject);
            json.put("user", Issuer);
        }
        return json;
        }catch(Exception e){
            json.put("code", "1002");
            json.put("msg", "token验证失败");
            return json;
        }
        }
    public static void main(String[]args){
//        user u=new user();
//        u.setName("admin");
//        u.setPassword("admin");
//        System.out.println(createJWT("admin",JSONObject.fromObject(u).toString(),"test",30000000));
//        System.out.println(parseJWT("eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJhZG1pbiIsImlhdCI6MTQzNjUwMzIyNywic3ViIjoidGVzdCIsImlzcyI6ImFkbWluIiwiZXhwIjoxNDM2NTA2MjI3fQ.hKWir-hr097SRJL3vBhx8FmIzZ2Bp7tEEopYO9drUBs"));
    }
}

 

例子:

@RequestMapping(value="mianLogin",method=RequestMethod.GET)
    public ResponseMessage mianLogin(HttpServletRequest req,HttpSession session) throws Exception{
        ResponseMessage rs=new ResponseMessage();
        try{
            TemplateUser user = sev.getMianLogin();
            String loginName = user.getLogin_name();
            String ip=Servlets.getRemoteHost(req);
            String token=JWT.createJWT(user.getUserid(),JacksonUtil.toJson(user),ip,3*24*3600*1000);
            session.setAttribute("token", token);
            session.setAttribute("tokenid", user.getUserid());
            JSONObject json=new JSONObject();
            json.put("loginName", loginName);
            json.put("userid", user.getUserid());
            rs.setData(json);
            rs.setCode(HttpStatus.OK.value());
        }catch(Exception e){
            rs.setCode(HttpStatus.INTERNAL_SERVER_ERROR.value());
        }
        return rs;
    }

 

net.sf.json.JSONObject rs = JWT.parseJWT(token);

 

小伙伴们,我开了一家海淘护肤品淘宝店,搜索店铺“禾子蝶的海淘铺”,正品保证,欢迎进店选购哦。谢谢!

分享到:
评论

相关推荐

    jwt在线解密网站,可用于jwt的解码

    JSON Web Token(JWT)是一种开放的标准(RFC 7519),定义了一种紧凑的、自包含的方式来安全地在各方之间传输信息作为一个JSON对象。这种信息可以被验证和信任,因为它是数字签名的。JWT被广泛用于身份验证和授权...

    JWT(json web token加密算法) for C# dll 文件,亲测可用

    JWT可用于身份验证、授权,以及在分布式系统中传递信息。 在C#开发环境中,JWT的实现通常依赖于第三方库。在这个情况下,提供的"JWT.dll"是一个预编译的C# DLL文件,可以直接在项目中引用,以利用JWT的功能。以下是...

    MVC中加密解密的方法

    在MVC(Model-View-Controller)架构中,加密解密是确保数据安全的重要环节,尤其是在处理用户敏感信息时,如密码、个人信息等。本文将深入探讨MVC中加密解密的方法,帮助开发者构建更加安全的Web应用。 一、加密的...

    JWT公钥私钥操作工具类

    JWT公钥私钥操作工具类

    服务器 客户端 aes 加密 解密

    3. **JWT(JSON Web Tokens)对比AES**:JWT是一种开放标准,用于在各方之间安全地传递信息作为JSON对象。它自身携带信息并可被验证和信任,因为它是数字签名的。然而,JWT内部信息是明文的,不适合传输敏感数据。...

    PHP与js同时加密解密

    标题"PHP与js同时加密解密"暗示了我们需要讨论的是如何在这两种语言之间进行安全的数据交换,特别是在涉及用户敏感信息时。描述中的"PHP与JS同时加密"进一步强调了这种双端加密的需求。 `PHP`通常用于处理服务器端...

    URL传递过程中的加密,解密

    在实际应用中,开发人员需要特别注意加密解密的实现细节,包括密钥管理、防止重放攻击、以及处理可能出现的编码问题。同时,为了保证用户体验,加密后的URL应尽可能简洁,避免过长导致的浏览器兼容性问题。 总的来...

    JWT 网关TOKEN 加密

    AES的加解密效率高,对于JWT这种通常包含大量信息的令牌,AES可以有效地进行加密,保护其中的数据。 相比之下,DES(Data Encryption Standard),尽管在密码学发展史上占有重要地位,但由于其较短的56位密钥长度,...

    前后端接口交互加密解密数据.zip

    在这个“前后端接口交互加密解密数据.zip”压缩包中,可能包含了实现这一目标的相关代码示例、配置文件或者文档,主要用于Java和JavaScript环境下的前后端加密解密实践。以下是关于这个主题的一些关键知识点: 1. *...

    【ASP.NET编程知识】.net core webapi jwt 更为清爽的认证详解.docx

    在这个类中,我们可以使用 System.IdentityModel.Tokens.Jwt NuGet 包来实现 JWT 的加密解密。 Token 的生成 在 Jwt 类中,GetToken 方法用来生成 Token。这个方法将 Claims_dictionary 转换为 Token。 Token 的...

    JWT的RS256和HS256签名算法Demo.zip

    JSON Web Token(JWT)是一种开放的标准(RFC 7519),定义了一种紧凑的、自包含的方式来安全地在各方之间传输信息作为一个JSON对象。这个信息可以被验证和信任,因为它是数字签名的。JWT通常用于认证和授权,例如...

    前台js数据加密,后台解密

    本案例“前后端加密解密JS v3.1.2”可能包含了实现这些功能的JavaScript库和示例代码,帮助开发者快速实现前后端加密解密流程,提高Web应用的安全性。通过学习和实践,开发者可以更好地理解和应用这些技术,构建更加...

    JWT handbook JWT手册

    JSON Web Tokens(JWT)是一种开放标准(RFC 7519),用于在网络应用环境间安全地传输信息。作为数字身份验证令牌,它被广泛用于Web应用的身份验证和信息交换。JWT技术涉及多个方面,如加密签名、加密算法、认证流程...

    CefSharp V63 内涵加密解密.rar

    在给定的“CefSharp V63 内涵加密解密.rar”压缩包中,似乎包含了一些关于如何在使用CefSharp V63时对视频内容进行加密和解密的信息。 视频加密是确保多媒体内容安全的重要步骤,特别是在网络传输和存储时。Cef...

    乐优商城中的jwt工具类.zip

    总结起来,乐优商城中的JWT工具类提供了一个完整的JWT操作框架,包括JWT的生成、解析、验证以及相关的RSA加密解密操作。`JwtUtils`是核心工具类,`RsaUtils`负责非对称加密,`ObjectUtils`辅助对象操作,而`...

    HTTP:URL加密解密.zip

    本资料包"HTTP:URL加密解密.zip"似乎包含了一些关于如何处理这种加密和解密过程的资源。 在C#编程环境中,处理HTTP URL的加密和解密通常涉及到以下知识点: 1. **Base64编码与解码**: - Base64是一种将任意二...

    JS-RSA加密解密

    JavaScript RSA 加密解密是一种在Web应用中实现数据安全传输的方法。RSA是一种非对称加密算法,由Ron Rivest、Adi Shamir和 Leonard Adleman 在1977年提出,因其发明者的名字首字母命名。在JavaScript环境中,我们...

    jwt-master.zip

    1. **JWT生成与解析**:源码可能包含了生成JWT令牌的类,比如使用`System.IdentityModel.Tokens.Jwt`库,以及解析JWT的函数,用于从令牌中提取信息。 2. **加密与解密**:JWT的签名过程涉及到加密和解密,压缩包...

    base64加密解密

    下面,我们将深入探讨Base64加密解密的原理和实现: 1. **Base64编码原理**:Base64编码将每3个字节的二进制数据(24位)转化为4个6位的二进制数,然后将这6位转换为对应的Base64字符。如果原始数据不是3的倍数,会...

Global site tag (gtag.js) - Google Analytics