在网络上的不同平台上比较boost :: typeIndex type hash_code()是安全的吗?

Is it safe to compare boost::typeindex type hash_code() across different platforms over network?

本文关键字:code 安全 hash typeIndex 网络 平台 比较 boost type      更新时间:2023-10-16

是否可以肯定地说,使用boost typeIndex hash_code在机器A中计算类型的哈希,然后将此哈希通过网络发送到机器B,然后在机器B中,使用此功能哈希发现机器A正在"谈论"的类型。

归结为boost :: typeIndex :: hash_code交叉平台的结果?我可以在" PlayStation 4"中计算此哈希,然后在运行Linux的PC和另一个PC中检查此哈希,并在运行Xbox中的另一个PC?

中检查此哈希

我已经很长时间了,我一直在寻找这个答案,而且我不能100%确保这是可以保证的。如果不能保证这一点,我将如何实施此类事情?

谢谢!

是boost :: TypeIndex :: Hash_code交叉平台的结果?

绝对不是。

hash_code甚至不需要为程序的两个连续构建产生相同的值。它绝不应在运行程序之外的任何地方存储或传达。

我将如何实施此类事情?

您需要确定性的"类型名称"的确定性哈希。您将需要提供自己的协议来生成"类型名称"(例如,一种产生字符串的静态方法),然后您需要使用众所周知的算法(例如SHA1)哈希。/p>

在任何人争论之前...

任何反对意见,无论仔细地措辞是错误的。BOOST :: HASH基于图书馆扩展技术报告N1836(您可以在此处找到)

第6.3.3(2)节说:

operator()的返回值是未指定的,除了等同的参数得出相同的结果。操作员()不得抛出异常