填补 JavaScript 中的 PASETO 空白:paseto-kit(支持 v3/v4 及完整 PASERK)

发布日期:2026-07-19 10:00:30   浏览量 :1
发布日期:2026-07-19 10:00:30  
1

差距

PASETO 是“JWT 的安全替代品”——没有算法混淆带来的隐患,采用版本化协议和合理的默认设置。在 Node.js 环境中,参考实现是 panva/paseto。它在 2025 年 3 月被归档为只读状态。目前仍在维护的库仅支持 v4 版本,且未实现 PASERK——这是用于序列化、封装和密封密钥的配套标准。

因此,当时没有一个正在维护的 JavaScript 库能同时涵盖 PASETO 完整的 PASERK 功能。这正是 paseto-kit 所填补的空白。

包含内容

  • PASETO v4 — XChaCha20 + BLAKE2b(本地模式),Ed25519(公共模式)
  • PASETO v3 — 符合 NIST/FIPS 标准的配置:P-384 / AES-256-CTR / HMAC-SHA384
  • 完整 PASERK(每个版本的所有 11 种类型):local/public/secret 序列化, lid/pid/sid 密钥标识符,local-wrap/secret-wrap,使用 Argon2id(v4) 和 PBKDF2(v3)进行密码封装,以及 seal(X25519 / P-384 ECDH)
  • 注册声明验证expnbfissaudsub),支持时钟容差
  • 运行时无关 — 为 Node.js、Deno、Bun、浏览器和边缘计算提供单一构建版本。无 node: 导入, 无 Buffer;仅使用 Uint8Array + WebCrypto 的加密安全伪随机数生成器,基于经过审计的 @noble/* 原语

使用方法

import { generateKeyPair, sign, verify } from 'paseto-kit';

const { secretKey, publicKey } = generateKeyPair();
const token = sign(secretKey, { role: 'admin' });
const { payload } = verify(publicKey, token);

需要 NIST 配置吗?所有内容都在 v3 命名空间下镜像,具有不同的密钥类型,因此 v4 密钥绝不可能用于 v3 令牌:

import { v3 } from 'paseto-kit';
const key = v3.generateLocalKey();
v3.decrypt(key, v3.encrypt(key, { data: 'hello' }));

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据