AZ Tools

CBOR 解码器 (诊断表示法)

开发

CBOR(简明二进制对象表示,RFC 8949)是 WebAuthn/FIDO2、COSE、C509 证书工作与众多 IoT 协议使用的紧凑二进制数据格式 — 但作为原始字节无法阅读。将字节以 hex 或 base64 粘贴,本工具即把它解码为 CBOR 诊断表示法,即规范中标准的可读形式:整数与大数、h'…' 形式的字节字符串、文本字符串、嵌套的数组与映射、形如 0("2013-03-21T20:04:00Z") 的带标签值、简单值 false/true/null/undefined、half/single/double 浮点数,以及以 _ 标记书写的不定长字符串、数组与映射。它边解码边校验,并在输入被截断或首个数据项之后有多余字节时给出提示。该解码器已对照 RFC 8949 附录 A 的完整示例表验证。全部在本地运行;不上传任何内容。

输出为 RFC 8949 诊断表示法:h'…' 字节串、1 与 1.0、tag(内容),不定长项用 _。

使用方法

  1. 选择输入是 hex 还是 base64(也接受 base64url)。
  2. 粘贴 CBOR 字节。
  3. 查看解码后的诊断表示法并复制。

常见问题

什么是诊断表示法?
它是 RFC 8949 §8 定义的 CBOR 数据项的人类可读文本形式 — 类似 JSON,但能表达 CBOR 的全部:h'…' 字节字符串、整数与浮点的区分(1 与 1.0)、形如 数字(内容) 的标签、简单值 undefined 与 simple(n),以及用下划线书写的不定长项,如 [_ 1, 2]。这是展示 CBOR 数据内容的标准方式。
如何获得 CBOR 值的 hex?
任何输出 CBOR 的东西都会给你字节:WebAuthn 的 attestationObject、COSE_Key 或 COSE_Sign1、IoT 传感器帧等。捕获这些字节并以 hex(带或不带空格或 0x 前缀)或 base64 粘贴。工具会忽略空白并接受 base64url。
为何把 1 与 1.0 分开显示?
CBOR 在字节层面区分整数与浮点数,诊断表示法保留这一点:整数一是 1,而浮点一是 1.0。半精度(2 字节)、单精度(4)与双精度(8)浮点都解码为其精确值,包括 NaN 与 ±Infinity。
「多余字节」是什么意思?
一条 CBOR 消息是单个数据项。若首个完整项之后还有多余字节,工具会报告而非默默忽略 — 通常意味着输入是一串项、在项中途被截断,或格式(hex 还是 base64)选错了。

相关工具