hash(散列)。hash函数的作用是将输入的任意数据转化成对应的某个输出结果,但是需要保证相同的输入能得到相同的结果,尽量避免不同的输入产生相同的结果。
本人粗糙的理解
今天为了实现一个hash的生成。但是又苦于没有现成的hash函数,于是只能为了实现目标胡乱折腾一个。
胡乱写的结果:
txt = input()
base58 = "3jAY5xzdMVBqrNK84aEwgHW6feyJbiGXhLuCvt7knSTsUmFQPRZo129pDc" # 任意的base均可
sum = 0
for i in txt:
sum = sum * 10 + ord(i)
ssum = str(sum**10)
hash = ""
# 1
sum = 0
for i in ssum:
sum += sum * 16 + int(i)
hash += base58[sum % 58]
# 2
sum = 0
for i in ssum:
sum += sum * 17 + int(i)
hash += base58[sum % 58]
# 3
sum = 0
for i in ssum:
sum += sum * 15 + int(i)
hash += base58[sum % 58]
# 4
sum = 0
for i in ssum:
sum += sum * 13 + int(i)
hash += base58[sum % 58]
# 5
sum = 0
for i in ssum:
sum += sum * 14 + int(i)
hash += base58[sum % 58]
# 6
sum = 0
for i in ssum:
sum += sum * 18 + int(i)
hash += base58[sum % 58]
print(hash)
上面的hash算法,目标是任意的输入转换成6位base58字符串。
这个代码虽然实现了hash的目标,但是和已有的标准hash函数有什么区别呢?
和专业的hash函数的区别:
- 散列的分散性得不到保证。(无法保证比较均匀的分散)
- 算法的性能不高。
- ……待补充
这就是hash算法所要追求的更高的目标。
声明:
本文采用
BY-NC-SA
协议进行授权,如无注明均为原创,转载请注明转自
1Inf0
本文地址: Hash函数的折腾记录。
本文地址: Hash函数的折腾记录。