Jwt和Rsa使用

1.jwt和使用Rsa加密:
        JWT的token包含三部分数据:
            Header:头部,通常头部有两部分信息:

                  - 声明类型type,这里是JWT(type=jwt)

                  - 加密算法,自定义(rs256/base64/hs256)

                    我们会对头部进行base64加密(可解密),得到第一部分数据

            Payload:载荷,就是有效数据,一般包含下面信息:

                - 用户身份信息-userid,username(注意,这里因为采用base64加密,可解密,因此不要存放敏感信息)

                - 注册声明:如token的签发时间,过期时间,签发人等

                  这部分也会采用base64加密,得到第二部分数据

            Signature:base64加密,签名,是整个数据的认证信息。一般根据前两步的数据,再加上服务的的密钥(secret,盐)(不要泄漏,最好周期性更换),通过加密算法生成。用于验证整个数据完整和可靠性

        使用:
            1.1.导入依赖:
                    <properties>
                       <jjwt.version>0.7.0</jjwt.version>
                       <joda-time.version>2.9.6</joda-time.version>
                   </properties>
                   
                   <dependencies>
                       <dependency>
                           <groupId>io.jsonwebtoken</groupId>
                           <artifactId>jjwt</artifactId>
                           <version>${jjwt.version}</version>
                       </dependency>
                       <!-- https://mvnrepository.com/artifact/joda-time/joda-time -->
                       <dependency>
                           <groupId>joda-time</groupId>
                           <artifactId>joda-time</artifactId>
                           <version>${joda-time.version}</version>
                       </dependency>
                   </dependencies>
            1.2.导入JwtUtil和JwtConstans
                public abstract class JwtConstans {
                    public static final String JWT_KEY_ID = "id";
                    public static final String JWT_KEY_USER_NAME = "username";
                }
                public class JwtUtils {
                /**
                 * 私钥加密token
                 *
                 * @param userInfo      载荷中的数据
                 * @param privateKey    私钥
                 * @param expireMinutes 过期时间,单位秒
                 * @return
                 * @throws Exception
                 */
                public static String generateToken(UserInfo userInfo, PrivateKey privateKey, int expireMinutes) throws Exception {
                    return Jwts.builder()
                            .claim(JwtConstans.JWT_KEY_ID, userInfo.getId())
                            .claim(JwtConstans.JWT_KEY_USER_NAME, userInfo.getUsername())
                            .setExpiration(DateTime.now().plusMinutes(expireMinutes).toDate())
                            .signWi

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值