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算法所要追求的更高的目标。

说点什么
支持Markdown语法
好耶,沙发还空着ヾ(≧▽≦*)o
Loading...