CTF-Web jwt

本文介绍了JWT的基本概念,包括其结构和在各方间安全传输信息的方式。重点讲解了RS256(RSA-SHA256)和HS256(HMAC-SHA256)两种签名算法在JWT验证中的应用,以及它们在安全性上的区别。
摘要由CSDN通过智能技术生成

JWT全称是JSON Web Token。
通俗地说,JWT的本质就是一个字符串,它是将用户信息保存到一个Json字符串中,然后进行编码后得到一个JWT token,并且这个JWT token带有签名信息,接收后可以校验是否被篡改,所以可以用于在各方之间安全地将信息作为Json对象传输。

JWT由3部分组成:标头(Header)、有效载荷(Payload)和签名(Signature)。在传输的时候,会将JWT的3部分分别进行Base64编码后用.进行连接形成最终传输的字符串
JWTString = Base64(Header).Base64(Payload).HMACSHA256(base64UrlEncode(header) + “.” + base64UrlEncode(payload), secret)

这里只需要注意访问的是/admin/而不是/admin因为访问/admin表示访问admin.php而访问/admin/表示访问的是admin目录下默认的

在写到web349的时候有一个rsa-sha256加密

RS256和HS256是两种不同的签名算法,通常用于验证JSON Web Tokens(JWTs)的完整性和真实性。JWT是一种用于在网络应用程序之间安全传输信息的标准格式。

  1. RS256(RSA-SHA256):

    • RS256使用RSA非对称加密算法来创建和验证JWT的签名。
    • 这种算法使用一对公钥和私钥。私钥用于创建JWT的签名,而公钥用于验证签名。
    • 由于使用RSA,它提供了更高的安全性,因为私钥只保留在JWT的签发者一侧,只有签发者可以创建有效的签名。
    • RS256通常用于保护敏感信息,如身份验证令牌。

在 RS256 中:

  • 私钥由 JWT 的签发者(通常是服务器)持有,并用于创建 JWT 的数字签名。
  • 公钥由 JWT 的验证者(通常是客户端)持有,并用于验证 JWT 的数字签名的有效性。
  • 简而言之,RS256 主要用于验证 JWT 的完整性和真实性,而不是对 JWT 的内容进行加密

  1. HS256(HMAC-SHA256):

    • HS256使用HMAC(基于散列的消息认证码)和SHA-256散列函数来创建和验证JWT的签名。
    • 这种算法使用共享密钥(秘密密钥)来创建和验证签名,这意味着签发者和验证者都必须知道共享密钥。
    • 由于共享密钥的使用,HS256适用于只有一个实体(通常是服务器)签发和验证JWT的情况。
    • HS256通常用于保护不太敏感的信息,如会话令牌或API密钥。

总之,RS256和HS256都是JWT签名算法,但它们使用不同的加密机制。RS256更适合在多个实体之间传递JWT,并提供更高的安全性,而HS256适合在单一实体之间传递JWT,并提供足够的安全性来验证令牌的完整性。

参考博客:Ctfshow web入门 JWT篇 web345-web350 详细题解 全_Jay 17的博客-CSDN博客
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值