Elysia Tools

在一个清晰的工作台里浏览工具、案例、可视化和主题指南。

热门分类

专题

语言
ZHESPTRUFRDEEN

Elysia Tools

导航

Format Conversion

Web Push RFC 8030 请求 + VAPID + RFC 8291 负载加密编码器

· 最后更新:2026-09-23

编码完整的 Web Push 发送流程:RFC 8291 aes128gcm 负载加密、RFC 8292 VAPID ES256 JWT、RFC 8030 头部、APNs/FCM 头部对照与解密往返验证。

详情

这个工具可以帮你完成什么

加密严格遵循 RFC 8291:应用服务器临时密钥与订阅 p256dh 密钥做 P-256 ECDH,HKDF-SHA256 结合 auth secret("WebPush: info" 上下文),随机 16 字节盐,经 "Content-Encoding" 上下文派生 CEK/nonce,并用 RFC 8188 二进制头(盐 + 记录长度 + 密钥 ID)做 AES-128-GCM。实现逐字节复现 RFC 8291 §5 与 draft-ietf-webpush-encryption-04 的官方算例。

执行

运行这个工具

填写表单、运行工具,并在同一页面查看结果。

案例

与这个工具匹配的案例

相关内容

继续查看相关工具与专题

由 Elysia Tools 团队编写

工具使用指南

详细了解工具的适用范围、支持能力及用户案例。

关键事实

分类
Format Conversion
输入类型
textarea, select, text, number, checkbox
输出类型
html
案例覆盖
4
API 可用
是

概览

Web Push RFC 8030 请求与 RFC 8291 负载加密编码器可帮助开发者快速完成 Web 推送协议的全流程编排与调试。工具支持基于现行 RFC 8291(aes128gcm)和传统草案 draft-04(aesgcm)的负载端到端加密、RFC 8292 VAPID ES256 JWT 认证头生成、RFC 8030 标准协议头构造,并提供详细的密钥派生中间值跟踪与解密往返验证。

适用场景

  • 在开发或调试 Web 推送后端服务时,需要验证 ECDH P-256 与 HKDF-SHA256 密钥派生及 aes128gcm 密文计算的准确性。
  • 需要根据订阅端点生成符合 RFC 8292 标准的 VAPID Authorization 头并核对 ES256 JWT 签名与有效期声明。
  • 排查推送服务返回的 400 Bad Request、401 Unauthorized 或 413 Payload Too Large 等协议交互错误。

使用方式

  1. 1基于订阅端公钥(p256dh)与应用服务器临时私钥进行 P-256 ECDH 协商,结合 auth secret 经由 HKDF-SHA256 派生会话主密钥(IKM)。
  2. 2使用 16 字节随机盐与指定上下文标签派生内容加密密钥(CEK)与 Nonce,对明文负载执行 AES-128-GCM 加密并封装二进制头部(RFC 8188)或 HTTP 头字段。
  3. 3根据配置的 VAPID 私钥签发 ES256 JWT 令牌,并一并组装 TTL、Urgency、Topic 等 RFC 8030 请求头以及 FCM/APNs 协议映射表。

常见用途

  • 自研 Web Push 服务端推送信道时,比对标准 RFC 8291 §5 向量以保证加密库实现的逐字节兼容性。
  • 构造包含 VAPID 头和加密 Body 的完整 HTTP/2 POST 请求报文,用于 Postman 或 curl 联调推送网关。
  • 分析多端推送协议差异,快速对照 RFC 8030 与 APNs/FCM 特有头部(如 collapse_key 与 apns-priority)。

示例

1. 验证标准 RFC 8291 §5 官方加密向量

推送服务后端研发

背景

正在实现基于 Node.js/Go 的 Web Push 加密模块,需要使用 IETF 标准文档中的官方测试向量验证 ECDH 与 HKDF 算法实现的正确性。

问题

需要确保本地代码生成的 IKM、CEK、Nonce 和最终密文字节流与 RFC 8291 官方附录完全吻合。

如何使用

输入官方测试用明文、订阅公钥、auth 密钥、临时私钥和 16 字节盐,选择 aes128gcm 内容编码并提交计算。

payload: "When I grow up, I want to be a watermelon", encoding: "aes128gcm", uaPublicKey: "BCVxsr7N_eNgVRqvHtD0zTZsEc6-VV-JvLexhqUzORcxaOzi6-AYWXvTBHm4bjyPjs7Vd8pZGH6SRpkNtoIAiw4", authSecret: "BTBZMqHH6r4Tts7J_aSIgg", asPrivateKey: "yfWPiYE-n46HLnH0KqZOF1fJJU3MYrct3AELtAQ-oRw", saltB64: "DGv6ra1nlYgDCS1FRnbzlw"

结果

生成包含完整中间密钥派生轨迹(ecdh_secret、PRK_key、IKM、CEK、nonce)的报表,证实输出与官方 RFC §5 向量逐字节一致。

2. 调试生产环境 VAPID 请求与推送属性头

全栈开发工程师

背景

Web 应用在向浏览器发送订单状态更新通知时,推送网关返回认证失败,需要排查 HTTP 头字段与 VAPID JWT 载荷设置。

问题

需要快速构造符合 RFC 8030 规范的高优先级、带 Topic 聚合的 POST 请求报文及合规的 VAPID Authorization 头。

如何使用

填写 JSON 通知内容,设置 Urgency 为 high,填写 Topic 为 order-update,启用 VAPID 并输入 contact 邮箱与 VAPID 私钥。

常见问题

现行 RFC 8291 与传统 aesgcm(draft-04)有什么区别?

RFC 8291(aes128gcm)将盐、记录长度与临时公钥统一封装在二进制负载头部;而 draft-04 则依赖 Encryption 与 Crypto-Key HTTP 头传递参数并使用不同的 HKDF 上下文字符串。

应用服务器私钥与 VAPID 私钥可以使用同一个吗?

不建议。RFC 8291 加密私钥应为每次推送生成的临时密钥,而 RFC 8292 VAPID 私钥是代表应用服务器身份的长期凭据。

为什么加密结果需要传入 16 字节的 Salt(盐)?

盐用于保证即使向同一订阅者发送相同明文,每次派生出的加密密钥和密文也完全不同,防止重放与已知明文分析。

接收端私钥(uaPrivateKey)是必须填写的吗?

非必填。仅当您需要执行解密往返验证以确认派生出的密文可被客户端成功还原时才需要提供。

Topic 请求头的作用是什么?

Topic 用于消息聚合与替换。在推送服务队列中,带有相同 Topic 的未送达旧消息会被新消息自动覆盖。

首页
工具3201
案例593
可视化465
文件查看器103
专题233
标签333
图像、音频与视频657

图像、音频、视频处理、转换与优化工具

数学、日期与金融644

计算器、数值计算、日期逻辑、统计与金融工具

设计与颜色297

颜色、版式、图形、视觉样式与设计辅助工具

文本与写作209

写作、清洗、格式化、提取与文本分析工具

开发与 Web193

开发者工具、网络处理、Web 调试与自动化辅助工具

转换与编码175

格式、文件、压缩包、单位与编码转换工具

FLAC/WAV 无损音源疑点筛查与证据交付
自托管抽奖组件配置复核、嵌入测试与上线交付
Stripe 优惠码候选批次审核与本地导入预检
批量照片技术初筛、近重复复核与修图候选交付
界面截图结构化、人工校对与开发交付

© 2026 Elysia Tools. 保留所有权利。

文档价格关于我们服务条款隐私政策Cookie 政策联系我们
Python

Web Python 图像处理示例

Web Python 图像处理示例,使用 PIL/Pillow 包括读取、保存、缩放和格式转换

Rust

Web Rust 图像处理示例

Web Rust 图像处理示例,包括图像读取保存、缩放和格式转换

TypeScript

Web TypeScript 图像处理示例

Web TypeScript 图像处理示例,包括图像读取保存、缩放和格式转换

Go

Web Go 文件操作示例

Web Go 文件操作示例,包括文本文件读写、文件复制移动、目录遍历和文件验证

Development

Data URI 生成器

将文件转换为 Data URI(Base64 或百分号编码),用于直接在 HTML、CSS 或 Markdown 中内联图片、字体等资源

Cryptography

哈希算法对比器

对同一输入同时用 MD5、SHA-1、SHA-256、SHA-512、BLAKE2b、BLAKE3 哈希并横向对比:输出长度、十六进制/Base64 摘要、安全状态(已破解/现代)以及相对速度基准。适合教学、选择哈希算法或核对校验和。

Security

RSA 加解密

用 RSA 公钥加密文本,或用匹配的私钥解密密文,使用 OAEP 填充(SHA-1 或 SHA-256)。支持长消息分段。密钥与数据均在本地,不外传。由于 Bleichenbacher 攻击,Node 已禁用 PKCS#1 v1.5 解密,故本工具不提供该选项。

Development

OpenTelemetry W3C traceparent / tracestate / baggage 与 OTLP 头传播验证器

按 W3C Trace Context ABNF 校验 traceparent(版本/16 字节 trace-id/8 字节 parent-id/1 字节 trace-flags,全零与 ff 版本拒绝、大写告警)、tracestate(≤32 个成员、simple 与 tenant@system 键、重复键告警)、baggage(百分号编码值 + 不透明属性);校验 OTLP 导出 Content-Type 与 gRPC grpc-trace-context-bin 的 25 字节二进制上下文往返一致性;并对两个独立 traceparent 做关联 round-trip(trace-id 稳定性 + 随机子 span-id 冲突检查),输出可直接重发的规范化头。

payload: "{\"type\":\"ORDER_SHIPPED\",\"orderId\":\"10086\"}", ttl: 60, urgency: "high", topic: "order-update", vapidSub: "mailto:[email protected]", vapidAud: "https://fcm.googleapis.com"

结果

输出完整的 HTTP/2 请求预览、ES256 签名后的 VAPID 授权头、加密后的 Body 字节以及对应的 FCM/APNs 头部对照映射。