![](/img/trans.png)
[英]Which logging library to use for cross-language (Java, C++, Python) system
[英]python <=> c++ cross-language hash
我正在编写一个python程序来查找文件。 该文件由C ++程序创建,其哈希为文件名( std::hash<std::string> hash_fn
)。 我知道创建哈希的字符串,但我找不到生成相同哈希的python哈希函数(我尝试了hash()
和hashlib
所有hashlib
)。 作为一个例子,字符串
file:///home/ubuntu/Untitled.skp
应该给哈希:
3133433022
不幸的是,我无法控制C ++程序,只关于python脚本(或最终的python扩展)。 是否有可能找到或实现C ++使用的相同哈希函数? 或者我应该尝试另一种方法?
在大多数情况下,内部散列函数(如C ++中的std::hash
或Python散列函数不是为外部使用而设计的。 在设计此类系统时,请严格指定所使用的哈希函数,并在两个系统中实现它。
如果现在为时已晚,并且您已经使用了std::hash
,那么您所能做的就是找到它的源代码(取决于编译器,可能不可用),重新设计它们以找到散列使用的算法,将其指定为您的哈希值,并以所需的任何语言重新实现它。 (您需要在自己的代码中实现它,因为它可能会在下一版本的编译器中发生变化。)
要兼容,请在SHA-1两侧使用已知的哈希值。 Python内置了它,如果c ++没有内置,那么有很多库可以做到。
如果您可以控制C ++部分,则可以确保在两侧使用相同的散列算法。 或者,您可以随时查看hash_fn
的实现,并尝试在Python中重新实现相同的功能。
否则,尝试匹配散列功能可能会非常困难。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.