zoukankan      html  css  js  c++  java
  • 由一个hash字符串生成多个子hash字符串

    通过存储一个head hash,然后把子hash放到网络中
    当然,也可以像默克尔树那样的,生成多级的子hash ,可以通过规则配置不同的hash 生成方式。倒置的默克尔树

    1. 我有一个文件,然后我把她分隔成了5分
    2. 我先得到文件的hash值,然后把文件切割成5片,同时匹配每一个子hash值,当然,子hash也可以通过私钥加密一次
    3. 这样,我只需要保留一个根就好了,查找的时候,通过p2p网络的查找方式查找就可以了
    4. 如果我们需要更多的功能的话,那么,就需要对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)), "
    ")
        print(list(gen_muti_hash(k.hexdigest(), 3)), "
    ")
        print(list(gen_muti_hash(k.hexdigest(), 4)), "
    ")
        print(list(gen_muti_hash(k.hexdigest(), 5)), "
    ")
    
  • 相关阅读:
    javafx DragDropped file
    javafx style and cssFile
    javafx ComboBox Event and change cell color
    javafx clipboard
    javafx Cursor
    javafx DropShadow
    javafx checkbox
    javafx image button
    GNS3连接虚拟机
    cain使用教程
  • 原文地址:https://www.cnblogs.com/bergus/p/you-yi-gehash-zi-fu-chuan-sheng-cheng-duo-ge-zihas.html
Copyright © 2011-2022 走看看