您的位置:首页 > 其它

由一个hash字符串生成多个子hash字符串

2018-01-16 15:09 218 查看

通过存储一个head hash,然后把子hash放到网络中

当然,也可以像默克尔树那样的,生成多级的子hash ,可以通过规则配置不同的hash 生成方式。倒置的默克尔树



我有一个文件,然后我把她分隔成了5分

我先得到文件的hash值,然后把文件切割成5片,同时匹配每一个子hash值,当然,子hash也可以通过私钥加密一次

这样,我只需要保留一个根就好了,查找的时候,通过p2p网络的查找方式查找就可以了

如果我们需要更多的功能的话,那么,就需要对hash进行配置,比如数据块的长度,数据块的是否又进行了分片

import sha3

def gen_muti_hash(h_str, count):
h_l = int(len(h_str) / count)

for i in range(1, count):
h_str1 = str(i) + h_str[0:h_l]

k = sha3.keccak_256()
k.update(h_str1.encode("utf-8"))
yield k.hexdigest()

h_str = h_str[h_l:]

k = sha3.keccak_256()
h_str = str(count) + h_str
k.update(h_str.encode("utf-8"))
yield k.hexdigest()

if __name__ == '__main__':
a = "hello world 素数"
k = sha3.keccak_256()
k.update(a.encode("utf-8"))

print(list(gen_muti_hash(k.hexdigest(), 2)), "\n")
print(list(gen_muti_hash(k.hexdigest(), 3)), "\n")
print(list(gen_muti_hash(k.hexdigest(), 4)), "\n")
print(list(gen_muti_hash(k.hexdigest(), 5)), "\n")
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐