Proto3 发行说明指出:
然而,确定性序列化不是跨语言规范的。由于未知字段,它在不同的构建中也不稳定,架构更改。需要规范序列化的用户,例如规范形式的持久存储、指纹识别等,应定义自己的规范化规范并使用反射 API 实现序列化程序,而不是依赖此 API。
我想要实现的是对 protobuf 消息进行确定性序列化,以携带加密签名。据我了解,由于序列化程序的差异,二进制数据可能会有所不同,并且签名将变得无效。
package Something
message Request {
Payload payload = 1;
// signature of serialised payload
bytes signature = 2;
message Payload {
string user_id_from = 1;
uint64 amount = 2;
string user_id_to = 3;
}
}
使用 protobuf 反射的方法是什么?