使用给定字符串

问题描述

我有一个给定的字符串,比如说'test123' 我使用计算字符串的sha1哈希值,并采用前5个字符:

sha1(teststring.encode("utf-8")).hexdigest()[:5]

现在我想生成一个随机字符串,该字符串具有相同的前5个sha1哈希字符

''.join(random.choice(string.ascii_letters + string.digits + string.punctuation) for _ in range(16))

我有一个可行的解决方案,我只是生成随机字符串并对其进行哈希处理,直到找到匹配的字符串为止。

有没有更快的方法实现这一目标?

解决方法

除了蛮力外没有其他东西。

SHA-1是一种加密哈希函数,您的问题与发现冲突的问题非常接近。

找到一种比蛮力更快的方法会破坏SHA-1的目的。看看Wikipedia文章,它有很好的记录。