繁体   English   中英

python <=> c ++跨语言哈希

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM