这个工具如何工作
编辑 JSON,并使用 HMAC、RSA、RSA-PSS 或 ECDSA 生成签名 JWT。
先使用测试样例了解输入格式和结果元数据,再替换成你自己的内容。
隐私与安全使用
所有处理都在当前浏览器标签页完成。特别大的内容仍可能占用较多设备内存。
不要把生产环境的密钥或私钥粘贴到浏览器工具中。生产环境应使用可靠的 JWT 库和受保护的服务端密钥存储。
这个工具会说明的常见错误
- 输入为空、已经损坏,或者不是这个工具要求的格式。
- 所选模式与 alphabet、文件类型或数据表示方式不匹配。
- 编码文本和解码字节同时存在时,超大内容可能耗尽内存。
- 转换成功不代表解码内容安全、可信或没有恶意代码。
等价命令
可以在已有的运行环境或 Shell 中完成相同操作。应验证不可信输入,避免把二进制数据直接输出到终端。
Python
import base64, hashlib, hmac, json
b64 = lambda value: base64.urlsafe_b64encode(value).rstrip(b'=').decode()
body = '.'.join([b64(json.dumps(header, separators=(',', ':')).encode()), b64(json.dumps(payload, separators=(',', ':')).encode())])
token = body + '.' + b64(hmac.new(secret, body.encode(), hashlib.sha256).digest())
JavaScript
import { createHmac } from 'node:crypto';
const b64 = value => Buffer.from(JSON.stringify(value)).toString('base64url');
const body = `${b64(header)}.${b64(payload)}`;
const token = `${body}.${createHmac('sha256', secret).update(body).digest('base64url')}`;
Shell
b64url() { openssl base64 -A | tr '+/' '-_' | tr -d '='; }
body="$(printf '%s' "$HEADER" | b64url).$(printf '%s' "$PAYLOAD" | b64url)"
sig=$(printf '%s' "$body" | openssl dgst -sha256 -mac HMAC -macopt "key:$SECRET" -binary | b64url)