是否可以使用mmh3在Python中反转哈希?

2024-10-05 18:27:10 发布

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

下面是murmer哈希的一个示例:

>>> import mmh3
>>> seq = "AGTCGCTGA"
>>> seq_hash = mmh3.hash64(seq, seed=0, signed=False)
>>> seq_hash
(12042475613054376161, 7271345330980536087)

我的主要问题是,是否可以反转mmh3散列以获得原始序列

我的第二个问题是输出的两个值之间有什么区别

是否可以从12042475613054376161返回AGTCGCTGA


Tags: importfalse示例序列hashseqseedsigned
2条回答

杂音散列不符合加密标准,可以将其反转(或者至少找到一个产生相同散列的序列-这可能不是最初产生散列的序列)。您可以找到一个C实现here。我不知道Python中存在任何公开可用的实现

输出的两个值是散列的两部分hash64使用128位版本的杂音散列,因此seq的整个散列是两个64位输出的串联

Is it possible to get back AGTCGCTGA from 12042475613054376161?

这在不到一秒钟的时间内完成:

from itertools import count, product
import mmh3

for length in count():
    for seq in map(''.join, product('ACGT', repeat=length)):
        seq_hash = mmh3.hash64(seq, seed=0, signed=False)
        if seq_hash[0] == 12042475613054376161:
            print(seq)

相关问题 更多 >