由一个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")
相关文章推荐
- 字符串生成Hash值后转换成Guid的若干方法和一个重要问题
- 编写多线程程序,模拟多个人通过一个山洞。这个山洞每次只能通过一个人,每个人通过山洞的时间为2秒(sleep)。随机生成10个人,都要通过此山洞,用随机值对应的字符串表示人名,打印输出每次通过山洞的人名
- 分享一个新的对字符串的哈希算法之FastHash
- Android中pull解析和生成xml数据到一个字符串中
- 设计一个函数,根据指定长度生成对应的验证码(由数字和大小写英文字母构成的随机字符串)
- 由一个任意长度字符串生成唯一的32位整数
- 一个字符串中包含另一个字符串所有字符的最短子串长度?——《编程之美》最短摘要的生成的简化
- 将一个以逗号分隔的字符串拆分单个记录,并生成插入sql语句
- 利用C实现:编写一个函数,它从一个字符串中提取一个子字符串。
- 指定一个字符串,生成n个连续的字符子串,用于生成密码字典
- 编写一个函数,从一个字符串中提取一个子字符串
- http_build_query()—使用给出的关联(或下标)数组生成一个经过 URL-encode 的请求字符串
- hash数组快速查找一个字符串中出现最多的字符,并统计出现的次数
- js判断一个字符串是否包含一个子串的方法
- python学习——Python中生成一个指定长度的随机字符串
- 【codeforces 519 D】【hash+dp】【给出一个字符串,给出每个字母的权值,求字符串的子串中首尾相等,除去首尾字母的权值和为0的数量。】
- 两个字符串hash问题:检查两个单词是否互为变位词和在一个字符串中第一个只出现一次的字符
- 用c语言实现 编写一个函数,它从一个字符串中提取一个子字符串
- 由一个任意长度字符串生成唯一的32位整数
- 写一个函数,用来把一个字符串用指定的字符作为分隔符分割成若干个子串输出 | 写一个函数,用来返回一个字符串中重复出现的最长字串的长度及其开始地址