跳到主要内容

JWT 解码 — 解析头部与载荷、检查过期时间、验证 HS256 签名

粘贴 JWT 即可把头部和载荷解析为 JSON,并把 exp、iat 等时间转换成可读日期。可用密钥验证 HS256、HS384、HS512 签名,令牌与密钥都不会发送到服务器。

JSON 格式化与校验

粘贴 JSON 即可立即校验,出错时会标出所在的行和列。支持缩进格式化、压缩成一行、转换为 YAML 与树形查看,大数字和键的顺序都原样保留。

结果
在左侧粘贴 JSON,结果会显示在这里。第一次使用可以先点上方的“示例”按钮。
等待输入。

正则测试

输入模式与标志后,会为测试字符串中的每个匹配着色,并显示捕获组与替换结果。直接使用浏览器的 JavaScript 正则引擎运行。

请输入模式。
匹配列表

没有匹配。

$1、$2 表示编号分组,$<名称> 表示命名分组,$& 表示整个匹配。留空则不替换。

Cron 表达式解析

把 cron 表达式翻译成易读的句子,并按所选时区计算接下来 5 次执行时间。采用分、时、日、月、周五个字段的标准 crontab 格式。

逐字段解析
下次执行时间

    服务器上的 cron 通常按服务器所在时区运行。GitHub Actions 的 schedule 和许多云端调度器使用 UTC,若要对应北京时间(UTC+8)需要减去 8 小时再写。

    JWT 解码

    粘贴 JWT 即可解析头部与载荷,并把过期(exp)、签发(iat)、生效(nbf)时间转换为日期。可以用密钥验证 HS256、HS384、HS512 签名,令牌与密钥都不会离开本浏览器。

    等待令牌。
    头部
    
                    
    载荷
    
                    
    时间声明

    没有 exp、iat、nbf 声明。

    输入密钥即可验证签名。

    Base64·URL 编码

    把文本或文件转换为 Base64,或把 Base64 还原为文本。也能读取 URL 安全字母表、缺少填充的值与 data: URL。URL(百分号)编码也在这里完成,统一按 UTF-8 处理。

    结果
    
                    
    等待输入。

    Unix 时间戳转换

    把 Unix 时间戳转换为日期,或把日期转换为时间戳。按位数自动区分秒、毫秒、微秒与纳秒,没有时区的日期按所选时区的时间读取。

    现在
    毫秒
    请输入时间戳或日期。
    转换结果

    没有写时区的日期(如 2026-09-24 09:30)按上方所选时区读取;末尾带 Z 或 +09:00 时按该时区。点击数值即可复制。

    哈希生成

    一次计算文本或文件的 MD5、SHA-1、SHA-256、SHA-384、SHA-512。粘贴拿到的哈希值即可显示与哪一个一致。文件在本浏览器中计算,不会上传。

    等待输入。

    MD5 与 SHA-1 已有公开的碰撞攻击方法,不能用于签名、密码等安全用途。确认下载的文件是否与原文件一致时,请使用 SHA-256。点击数值即可复制。

    常见问题

    粘贴的 JSON 或测试字符串会发送到服务器吗?
    不会。校验、转换、匹配与计算全部在本浏览器内完成,输入的内容不会发送到任何地方,也不会保存。可以放心粘贴 API 响应或配置文件等敏感内容。本浏览器只会记住最后打开的标签与缩进等显示设置。
    格式化后数字或键的顺序会变吗?
    不会。本工具不经过 JavaScript 的 JSON.parse,而是自行解析,因此超过 2 的 53 次方的大整数(如推特、Discord 的 ID)以及 1.0 这样的数字写法都会按原文保留。像 "10"、"2" 这样的数字键也不会被提到前面。同一个键出现两次时会同时保留并给出警告。
    带注释或末尾逗号的 JSON 可以吗?
    JSON 标准不允许注释、最后一项后的逗号以及单引号字符串,因此会显示为错误。不过这些都是常见失误,提示会指出具体问题,例如“末尾多了一个逗号”“不能使用单引号”,并标出位置,只需修改那一处即可。
    正则表达式遵循哪种语言的语法?
    直接使用浏览器的 JavaScript(ECMAScript)正则引擎运行。可以使用命名分组、后行断言(lookbehind)以及 Unicode 属性(在 u 标志下使用 \p{L} 等)。PCRE、Python 独有的占有量词、原子分组、\A·\Z 等语法不受支持,若模式要用于其他语言,请先确认语法差异。
    “1.5 秒内未完成”是什么意思?
    像 (a+)+$ 这样量词嵌套的模式,在不匹配的输入上会因回溯的组合数爆炸而卡住好几分钟(灾难性回溯)。本页面在独立的工作线程中运行正则,超过 1.5 秒就会中止,因此页面不会卡死。出现这条提示意味着实际服务中同样的输入也可能让服务器卡住,请拆开嵌套的量词。
    在 cron 中同时指定日期和星期会怎样?
    标准 crontab 中,如果两个字段都不是星号,只要其中之一符合就会执行。例如 0 9 1 * 1 会在每月 1 日以及每周一的上午 9 点运行。星期字段中 0 和 7 都表示星期日,也可以使用 MON、JAN 等英文缩写。不支持带秒字段的 6 字段格式(Quartz、Spring)以及 L、W、# 等扩展语法。
    输入 JWT 密钥安全吗?
    令牌与密钥不会发送到服务器,签名验证只用浏览器内置的 Web Crypto 计算,也不会保存到任何地方。不过原则上,生产环境的真实密钥不应输入到任何网页工具中,请使用开发或测试用密钥。RS256、ES256 等用公钥验证的令牌只做解码。另外请记住,JWT 的载荷只是编码而非加密,任何人都能解开查看。
    可以用 MD5 或 SHA-256 保存密码吗?
    不可以。MD5 与 SHA-1 已有构造两个哈希相同输入的方法,SHA-256 计算又太快,像密码这样的短值很快就会被暴力破解。密码应使用 bcrypt、scrypt、Argon2 这类刻意放慢的函数并加盐保存。本工具的哈希请用于确认下载的文件是否与原文件一致。
    如何区分时间戳是秒还是毫秒?
    按位数区分。以当前时间计,秒是 10 位,毫秒 13 位,微秒 16 位,纳秒 19 位。因此 11 位以内按秒、14 位以内按毫秒、17 位以内按微秒、更长的按纳秒读取,并在结果上方注明按哪种单位读取。JavaScript 的 Date.now() 是毫秒,Unix 命令 date +%s 和大多数服务器语言使用秒。

    相关工具