erlang Thrift Tserializer和TJSONProtocol

e37o9pze  于 2023-05-27  发布在  Erlang
关注(0)|答案(1)|浏览(109)

我有一个关于Tserializer和Thrift提供的TJSONProtocol的问题。我使用Thrift在服务器和客户端之间实现了一个用不同编程语言编写的RPC。我需要在我的系统中添加新的功能,对客户端和服务器之间交换的数据进行完整性检查。
其思想是将发送方和接收方之间交换的数据转换为字符串(在IDL thrift中定义),并将此字符串用作完整性计算算法的输入。对于结构化数据类型,我希望利用基于TJSONProtocol的Tserializer来获取JSON字符串(表示要保护的数据),以作为完整性计算算法的输入。
假设转换后的JSON字符串在不同的编程语言中总是相同的(假设具有相同的输入数据),这是正确的吗?我的意思是,我可以假设TSerializer(基于TJSONProtocol)的行为在不同编程语言可用的Thrift库的不同实现中是相同的吗?

anauzrmj

anauzrmj1#

TL、DR:否

有几个因素不能保证。仅作为一个示例,list<>的顺序被保留和保证,但对于set<>map<>容器不是这种情况。因此,即使序列化之前和反序列化之后的数据是相同的,但序列化的数据可能仅仅因为实现差异而不同。

相关问题