Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Apache Thrift是否保证数据完整性?_C++_Thrift_Checksum_Data Integrity - Fatal编程技术网

C++ Apache Thrift是否保证数据完整性?

C++ Apache Thrift是否保证数据完整性?,c++,thrift,checksum,data-integrity,C++,Thrift,Checksum,Data Integrity,Apache Thrift是否有任何固有的数据完整性检查?它是否能保证数据始终保持不变?我正在通过Thrift服务发送大量二进制数据,我不确定是否需要实施任何额外的完整性验证,如MD5校验和。不,没有内置错误检测。该任务留给开发人员和/或通信堆栈的其他部分完成 首先要问的问题是,一个简单的CRC32是否足够,或者您是否需要更强大的工具,比如一些SHA。高端可能是一个成熟的加密基础设施,通过非对称密钥对消息进行签名和验证真实性 对于这些用例中的每一个,都有很好的可用库。正如其他人正确指出的那样,如

Apache Thrift是否有任何固有的数据完整性检查?它是否能保证数据始终保持不变?我正在通过Thrift服务发送大量二进制数据,我不确定是否需要实施任何额外的完整性验证,如MD5校验和。

不,没有内置错误检测。该任务留给开发人员和/或通信堆栈的其他部分完成

首先要问的问题是,一个简单的CRC32是否足够,或者您是否需要更强大的工具,比如一些SHA。高端可能是一个成熟的加密基础设施,通过非对称密钥对消息进行签名和验证真实性


对于这些用例中的每一个,都有很好的可用库。正如其他人正确指出的那样,如果传输依赖于TCP,甚至可能依赖于TLS/SSL,那么仅此一项就足够了。根本没有必要再发明那个轮子。而且,如上所述,如果确实需要,可以将任务作为“分层传输”轻松地委托给a,类似于
TFramedTransport
所做的工作

Apache Thrift的层是。这是一个合理的假设,错误可能只发生在传输层。如果您使用的是TCP或HTTP(基于TCP)传输接口,那么数据的传输将保持不变,因为这就是传输的方式


注意:我假设您不担心通信通道的安全性。如果这样做,TCP和校验和都不会保护您免受恶意数据更改。在这种情况下,您需要一个安全的通信隧道,如。请参阅:。

Thrift是在具有此类控制的正常网络层(TCP)上构建的。说实话,有时我实现“我的级别”CRC,但动机是捕捉逻辑错误。“节俭是建立在正常的网络层之上”——节俭不限于TCP。有些人将其用于消息总线系统,或者将日期序列化为文件。在这个问题的范围内可能是正确的,但不是一般性的说法。除非您发现自己面临MITM攻击,否则“数据将不作更改地交付”。然后,数据在TCP方面仍然没有改变,但是,最终结果可能仍然不是您想要的。这只是一个假设可能被打破的例子,这是一个很好的观点。这只是一个假设可能被打破的例子。还有其他的吗?如果我们想得够久,我们会想出一些的