代码之家  ›  专栏  ›  技术社区  ›  Jesus Fernandez

使用SHA-256在Python中处理字节

  •  4
  • Jesus Fernandez  · 技术社区  · 9 年前

    因此,我想使用SHA-256解决一个特定的问题:从字节数组计算摘要,然后将得到的摘要连接到另一个字节块(对于这个问题,是1024字节块),并计算连接值的摘要。

    例如:

    下面是我的两个字节块:

    from hashlib import sha256
    rawhex4 = b'\x44'*773
    rawhex3 = b'\x33'*1024
    
    h = sha256()
    h.update(rawhex4)
    aux = h.digest()
    

    此十六进制摘要为:d8f8a9eadd284c4dbd94af448fefb24940251e75ca2943df31f7cfbb6a4f97ed

    然后我想将这个32字节的摘要连接到下一个块并对其进行散列,但我没有得到正确的答案。我执行以下操作:

    h.update(rawhex3 + aux)
    

    我知道哈希rawhex3+哈希(rawhex4)会给我这个摘要:

    26949e3320c315f179e2dfc95a4158dcf9a9f6ebf3dfc69252cd83ad274eeafa

    我会错过什么?我对Python很陌生

    2 回复  |  直到 9 年前
        1
  •  4
  •   Robᵩ    9 年前

    试试这个:

    from hashlib import sha256
    rawhex4 = b'\x44'*773
    rawhex3 = b'\x33'*1024
    
    h1 = sha256()
    h1.update(rawhex4)
    aux = h1.digest()
    
    h2 = sha256()
    h2.update(rawhex3 + aux)
    print h2.hexdigest()
    
        2
  •  3
  •   robyschek    9 年前

    您正在重用已包含位的哈希对象 rawhex4 . 如果你创建一个新的,你会得到 26..fa 后果