Всем привет,
Я пытаюсь пересчитать хэш, но я думаю, что я делаю где-то гигантская неразбериху.
Я прикрепил свой код, будет ли кто-нибудь хочет намекнуть меня в правильном направлении?
благодаря
<код>
импорт hashlib
Защиту i2w (целое число):
"""Преобразование целого числа в 4 байта слова в строке.
Поднимем исключение, если переполнение."""
работа = бен (целое число) [2 ::]. zfill (32)
если Len (работа) > 32:
поднять (OverflowError (целое число))
TMP = список ()
в то время как Len (работа) > 7:
часть = работа [8]
работа = работа [8:]
символ = CHR (интермедиат (часть 2))
tmp.append (символ)
Возвращение ( ''. присоединиться (TMP))
если __name__ == '__main__':
# Содержание генеза блока: http://blockexplorer.com/b/0
#"гашиш":"000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f",
#"вер": 1,
#"prev_block":"0000000000000000000000000000000000000000000000000000000000000000",
#"mrkl_root":"4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b",
#"время": 1231006505,
#"биты": 486604799,
#"данное время": 2083236893,
#
хэш = "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f"
# Попробуйте воспроизвести выше хэш с данными ниже
v = 1
р = "0000000000000000000000000000000000000000000000000000000000000000"
м = "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"
т = 1231006505
б = 486604799
п = 2083236893
TMP = i2w (по объему) + p.decode ( 'шестигранной') + m.decode ( 'шестигранной') + i2w (т) + i2w (б) + i2w (п)
один = hashlib.sha256 ()
one.update (TMP)
hash_one = one.digest ()
два = hashlib.sha256 ()
two.update (hash_one)
hash_two = two.digest ()
печать (хэш)
печать (hash_two.encode ( 'шестигранной'))
<вывод>
>>> 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
>>> f40519089bfd56ee63f6207f11e69707ac85e5ca20ab0e4aeaa468dbc72e7ae0