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

2024-05-21 00:04:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个python程序来查找文件。该文件是由一个以哈希作为文件名的C++程序创建的(^ {< CD1> })。 我知道创建散列的字符串,但找不到一个python散列函数来生成相同的散列(我尝试了hash()hashlib)。 例如,字符串

file:///home/ubuntu/Untitled.skp

应该给出哈希值:

^{pr2}$ 遗憾的是,我没有控制C++程序,只对Python脚本(或者最终的Python扩展)有控制。 是否可以找到或实现C++使用的相同哈希函数?或者我应该尝试另一种方法吗?在


Tags: 文件函数字符串程序脚本home文件名ubuntu
3条回答

大部分是内部的hash函数,如C++中的^ {CD1>} Python哈希函数不是为外部使用而设计的。当你 设计这样的系统,严格规定使用的哈希函数,以及 在两个系统中实现它。在

如果为时已晚,并且您已经使用了std::hash,那么 你所能做的就是找到它的来源(这取决于 编译器,可能不可用),对它们进行反向工程以找到哈希 使用的算法,将其指定为哈希值,然后在任何情况下重新实现它 需要语言。(您需要在自己的代码中实现它,因为 它可能在编译器的下一个版本中发生更改。)

为了兼容,在两边都使用已知的散列,比如SHA-1。Python内置了它,如果c++没有内置它,那么有很多库都有。在

如果你对C++部分有控制,你可以确保在两边都使用相同的哈希算法。或者,您可以随时查看hash_fn的实现,并尝试在Python中重新实现相同的功能。在

否则,很难尝试匹配哈希函数。在

相关问题 更多 >