Author

Topic: Question sur le padding des donnees dans la fonction de Hash pour miner. (Read 2612 times)

hero member
Activity: 800
Merit: 500
Je fais mes tests en python 3 et normalement les 2 méthodes devraient avoir des résultats identiques.

Tu ne peux pas trouver de valeurs identiques puisque tu hashes en définitif deux valeurs différentes. Donc tu auras systématiquement deux résultats différents.

En résumé tes deux appels de  fonction Dhash() peuvent s'écrire:


Dhash('0100000081cd02ab7e569e8bcd9317e2fe99f2de44d49ab2b8851ba4a308000000000000e320b6c 2fffc8d750423db8b1eb942ae710e951ed797f7affc8892b0f1fc122bc7f5d74df2b9441a42a146 95')

Dhash('0100000081cd02ab7e569e8bcd9317e2fe99f2de44d49ab2b8851ba4a308000000000000e320b6c 2fffc8d750423db8b1eb942ae710e951ed797f7affc8892b0f1fc122bc7f5d74df2b9441a42a146 9580000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000080020000')


Si tu modifies ta fonction de cette manière, tu auras le même résultat.

def Dhash(Data):
    import binascii
    import hashlib
    header_bin = binascii.unhexlify(Data[:160])
    hash = hashlib.sha256(hashlib.sha256(header_bin).digest()).digest()

    print("-" * 80)
    print( binascii.hexlify(hash))
    print(binascii.hexlify(hash[::-1]))
    print("-" * 80)




newbie
Activity: 10
Merit: 0
Bonjour

Je cherche a comprendre le fonctionnement et aussi a améliorer mes connaissances.

Je fais mes tests en python 3 et normalement les 2 méthodes devraient avoir des résultats identiques.

Mon problème et mes questions concernent le padding , j ai du faire une erreur mais je ne la trouve pas ou je n ai pas bien compris.

Y aurait une personne expérimentée pour me corriger ? Et éventuellement a qui je pourrais poser des question ?

1) Algo utilise

def Dhash(Data):
    import binascii
    import hashlib
    header_bin = binascii.unhexlify(Data)
    hash = hashlib.sha256(hashlib.sha256(header_bin).digest()).digest()

    print("-" * 80)
    print( binascii.hexlify(hash))
    print(binascii.hexlify(hash[::-1]))
    print("-" * 80)

def main():
    #-------------------------------------------------------------------
    # Block 125552
    #hashMid:   b'7efabb8b1edb35a50a5432415c71d67ba031a89f4edc1303b5e53c7cda54ab25'
    #hash:      b'1dbd981fe6985776b644b173a4d0385ddc1aa2a829688d1e0000000000000000'
    #hash-rev:  b'00000000000000001e8d6829a8a21adc5d38d0a473b144b6765798e61f98bd1d'
    #-------------------------------------------------------------------
    padding =       ("80000000"+"00000000"+"00000000"+"00000000"+
                     "00000000"+"00000000"+"00000000"+"00000000"+
                     "00000000"+"00000000"+"00000000"+"80020000")

    header_hex = (  "01000000"+
                    "81cd02ab7e569e8bcd9317e2fe99f2de44d49ab2b8851ba4a308000000000000" +
                    "e320b6c2fffc8d750423db8b1eb942ae710e951ed797f7affc8892b0f1fc122b" +
                               "c7f5d74d"+"f2b9441a"+"42a14695"+
                    padding)

    Dhash(header_hex[0:160])
    Dhash(header_hex)
Jump to: