Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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
序列化数据:如何检查字节数组是Qt还是Boost_Qt_Serialization_Boost_Bytearray_Archive - Fatal编程技术网

序列化数据:如何检查字节数组是Qt还是Boost

序列化数据:如何检查字节数组是Qt还是Boost,qt,serialization,boost,bytearray,archive,Qt,Serialization,Boost,Bytearray,Archive,我收到的原始数据块没有关于序列化数据源的头信息。我所掌握的唯一信息是以下信息之一:序列化的QtByteArray或Boost归档。有没有办法检查签名或类似签名 谢谢 尝试先使用一个反序列化,然后使用另一个反序列化,如果操作成功,则假定它是有效数据。它不容易出错,但您可以假设某些原始数据对这两种数据都有效的概率很小。即使在这种情况下,您也必须尝试按特定顺序反序列化。把最可能的放在第一位。TL;医生:否。 其他答案相当危险。如果不向序列化数据中添加一些描述所用序列化类型的信息,则无法完成您希望执行的

我收到的原始数据块没有关于序列化数据源的头信息。我所掌握的唯一信息是以下信息之一:序列化的QtByteArray或Boost归档。有没有办法检查签名或类似签名


谢谢

尝试先使用一个反序列化,然后使用另一个反序列化,如果操作成功,则假定它是有效数据。它不容易出错,但您可以假设某些原始数据对这两种数据都有效的概率很小。即使在这种情况下,您也必须尝试按特定顺序反序列化。把最可能的放在第一位。

TL;医生:否。

其他答案相当危险。如果不向序列化数据中添加一些描述所用序列化类型的信息,则无法完成您希望执行的操作。请记住,Qt和Boost的序列化都不是为抵御恶意数据流而设计的

Qt对'QByteArray'的序列化只是一个32位字节计数,后跟数据。没有类型信息或类似信息。boost归档文件包含更多的信息,但仍然不能保证它会在相当于随机字节流的情况下正常失败。例如,它可能会因耗尽内存而失败