Jwt Token 加密

生成token

用户登录成功后,使用jwt创建一个token,并返回给用户,token格式如下

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.
eyJ1c2VyX2lkIjoyLCJ1c2VybmFtZSI6IjEzMTEyMzQ1Njc4IiwibW9iaWxlIjoiMTMxMTIzNDU2NzgifQ.
deszozd7ruo2YmW-ZhLmm45Di1S01-Abb-qeNKygy7k

token的第一段字符串:由下面的json数据通过base64(可逆)加密算法得到。

{
    'alg':HS256,
    'typ':JWT,
}

 token的第二段字符串:是由下面的payload信息通过base64(可逆)加密算法得到

{
    'uid':12,
    'username':张三,
    'exp':3000,
}

token的第三段字符串构成:
1.先将第一段和第二段的密文拼接起来
2.对拼接起来的密文字符串和自定义的盐进行 上边指定的HS256加密
3.对HS256加密后的密文再做base64加密

JWT(JSON Web Token)是一种用于身份验证的开放标准(RFC 7519)。它是基于JSON(JavaScript Object Notation)格式的数据结构,由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。 JWT加密/解密过程可以采用对称加密或非对称加密。对称加密使用同一个密钥进行加密和解密,而非对称加密使用公钥加密,私钥解密。 以下是JWT使用对称加密和非对称加密加密/解密过程: 1. 对称加密 加密过程: 1)将头部和载荷进行Base64编码,得到第一部分:Base64UrlEncode(header) + "." + Base64UrlEncode(payload)。 2)使用密钥对第一部分进行加密。 3)对加密后的结果进行Base64UrlEncode,得到第三部分:Base64UrlEncode(signature)。 解密过程: 1)将JWT字符串按照“.”分割成三部分。 2)使用密钥对第一部分进行解密。 3)对解密后的结果进行Base64解码,得到头部和载荷。 4)对解密后的结果和密钥进行签名验证。 2. 非对称加密 加密过程: 1)将头部和载荷进行Base64编码,得到第一部分:Base64UrlEncode(header) + "." + Base64UrlEncode(payload)。 2)使用私钥对第一部分进行签名。 3)对签名后的结果进行Base64UrlEncode,得到第三部分:Base64UrlEncode(signature)。 解密过程: 1)将JWT字符串按照“.”分割成三部分。 2)对第一部分和第三部分进行Base64解码,得到头部、载荷和签名。 3)使用公钥对签名进行验证。 4)验证通过后,得到解密后的头部和载荷。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值