验证 protobuf 消息定义

Verify protobuf message definition

是否可以获取 protobuf 消息定义的哈希值?散列应该在 消息定义本身 上,而不取决于其中的任何数据。我正在使用 protobuf 跨机器传输数据,我想确保它们是根据 消息结构 .

的完全相同的定义编译的

您可以使用google::protobuf::Message::GetDescriptor()接口获取消息描述符。使用 Descriptor::CopyTo() 方法,您可以将其转换为 DescriptorProto,其中包含有关以 protobuf 格式存储的 protobuf 消息的所有信息。然后你可以用任何你想要的方式序列化和散列。

但我同意 whrrgarbl 的评论,即 protobuf 已经具有非常好的向前和向后兼容性。因此,除非您有非常特殊的原因,否则这种散列似乎是不必要的,只会使您的代码的未来维护更加困难。