我正在编写一个python程序来查找文件。该文件是由一个以哈希作为文件名的C++程序创建的(^ {< CD1> })。
我知道创建散列的字符串,但找不到一个python散列函数来生成相同的散列(我尝试了hash()
和hashlib
)。
例如,字符串
file:///home/ubuntu/Untitled.skp
应该给出哈希值:
^{pr2}$
遗憾的是,我没有控制C++程序,只对Python脚本(或者最终的Python扩展)有控制。
是否可以找到或实现C++使用的相同哈希函数?或者我应该尝试另一种方法吗?在
Tags:
大部分是内部的hash函数,如C++中的^ {CD1>} Python哈希函数不是为外部使用而设计的。当你 设计这样的系统,严格规定使用的哈希函数,以及 在两个系统中实现它。在
如果为时已晚,并且您已经使用了
std::hash
,那么 你所能做的就是找到它的来源(这取决于 编译器,可能不可用),对它们进行反向工程以找到哈希 使用的算法,将其指定为哈希值,然后在任何情况下重新实现它 需要语言。(您需要在自己的代码中实现它,因为 它可能在编译器的下一个版本中发生更改。)为了兼容,在两边都使用已知的散列,比如SHA-1。Python内置了它,如果c++没有内置它,那么有很多库都有。在
如果你对C++部分有控制,你可以确保在两边都使用相同的哈希算法。或者,您可以随时查看
hash_fn
的实现,并尝试在Python中重新实现相同的功能。在否则,很难尝试匹配哈希函数。在
相关问题 更多 >
编程相关推荐