【发布时间】:2021-11-23 14:39:13
【问题描述】:
我有这个函数hash() 将给定的字符串加密为整数。
letters = 'weiojpknasdjhsuert'
def hash(string_input):
h = 3
for i in range(0, len(string_input)):
h = h * 43 + letters.index(string_input[i])
return h
所以如果我做print(hash('post')),我的输出是:11231443
如果输入只能是来自letters 的字符串,我如何才能找到我的输入才能获得像1509979332193868 这样的输出?循环体内有一个公式,但我不知道如何反转它。
【问题讨论】:
-
只是为了直截了当地使用的术语,请看Fundamental difference between Hashing and Encryption algorithms
-
我不认为公式是可逆的,甚至可能是多个字符串哈希到相同的值。
-
那么我怎样才能知道输入可以得到一个单一的输出呢?
-
@Barnar 如果它是一个完全由一系列字符中的字符组成的字符串怎么办?
-
@Mark 已修复。字母其实是
chars
标签: python algorithm encryption hash