问题描述
我有一个给定的字符串,比如说'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文章,它有很好的记录。