首页程序设计CBOR Encoder

CBOR Encoder 在线编码工具

JSON → CBOR (Hex/Base64)

什么是 CBOR?

CBOR (Concise Binary Object Representation) 是一种二进制数据序列化格式,由 IETF 在 RFC 8949 中标准化。它设计用于在资源受限的环境中高效传输数据,兼具 JSON 的灵活性和二进制的高效性。

CBOR 基于 JSON 的数据模型(数字、字符串、数组、映射等),但采用二进制编码,因此体积更小、解析更快,特别适合物联网、WebAuthn、COSE 等场景。

CBOR vs JSON:关键差异

特性CBORJSON
数据格式二进制文本 (UTF-8)
体积大小通常更小(节省 20%~50% 空间)较大(冗余的括号、引号)
解析速度快速(二进制原生解析)较慢(需要文本解析)
数据类型支持更多类型(如字节串、简单值、时间戳)仅字符串、数字、布尔、null、对象、数组
可读性不可直接阅读(需工具转换)人类可读
应用场景物联网、加密消息、高效存储Web API、配置文件

CBOR vs Protocol Buffers (Protobuf)

CBOR 和 Protobuf 都是高效的二进制序列化格式,但设计理念不同:

  • 模式定义:Protobuf 需要预先定义 .proto 文件,强类型;CBOR 是自描述的,无需模式。
  • 灵活性:CBOR 更灵活,可任意扩展字段;Protobuf 需要版本兼容性设计。
  • 体积:Protobuf 通常更小(因使用 varint 和预定义字段编号),但 CBOR 在小型数据上也有优势。
  • 使用场景:CBOR 适合 WebAuthn、COSE(加密对象签名);Protobuf 常用于微服务 RPC 通信。

简单来说:CBOR = JSON 的二进制版 + 扩展类型,无需 Schema;Protobuf = 高性能 RPC 标准,需要 Schema

使用场景

WebAuthn / FIDO2

WebAuthn 规范使用 CBOR 编码认证数据(Authenticator Data),例如公钥凭证、客户端数据。

物联网 (IoT)

在低带宽、低功耗设备间传输传感器数据,CBOR 的紧凑性极具优势。

COSE (CBOR Object Signing and Encryption)

COSE 是 IETF 标准,用于对 CBOR 数据进行签名和加密,广泛应用于 JWT 替代方案。

高效存储与传输

需要存储大量结构化数据时,CBOR 比 JSON 节省磁盘空间,且解析速度更快。

常见问题 (FAQ)

CBOR 与 MessagePack 有什么区别?

两者都是二进制 JSON 替代品,但 CBOR 是 IETF 标准(RFC 8949),包含更多内置类型(如字节串、简单值),且支持确定性编码;MessagePack 则更早出现,社区支持广泛。

CBOR 支持哪些编程语言?

几乎所有主流语言都有 CBOR 实现:PHP (2tvenom/cborencode), Python (cbor2), JavaScript (cbor-js), Go (fxamacker/cbor), Rust (ciborium) 等。

CBOR 编码后的数据比 JSON 小多少?

对于典型对象,CBOR 通常比 JSON 小 20%~40%;对于数字和二进制数据,优势更明显。

如何将 CBOR 解码回 JSON?

您可以使用本站的 CBOR Decoder 工具 进行反向转换。