在网络上的不同平台上比较boost :: typeIndex type hash_code()是安全的吗?
Is it safe to compare boost::typeindex type hash_code() across different platforms over network?
是否可以肯定地说,使用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()的返回值是未指定的,除了等同的参数得出相同的结果。操作员()不得抛出异常
相关文章:
- 从不同线程使用int64的不同字节安全吗
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 虚拟决赛作为安全
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- 如何将元素添加到数组的线程安全函数?
- Visual Studio Code - C++ Debugger 無法啟動
- Visual Studio Code "undefined reference to `WinMain@16'"
- C++中的线程安全删除
- 通过网络、跨平台传递std::变体是否安全
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 使用VS Code和CMake Tools运行自定义命令
- 在std::thread中,joinable()然后join()线程安全吗
- 使用std::istream::peek()总是安全的吗
- 从值小于256的uint16到uint8的Endian安全转换
- 修改 VS Code 中的默认C++代码段
- 在c++队列中使用pop和visit实现线程安全
- 在类型和包装器之间reinterpret_cast是否安全<Type>?
- 以线程安全的方式调用"QQuickPaintedItem::updateImage(const QImage&image)"(no QThread)
- 全局变量 多读取器 一个写入器多线程安全?