Использование хэш-суммы sha256 двоичного числа для создание сид фразы на python

Рейтинг: 0Ответов: 1Опубликовано: 04.06.2023

Для генерации сида (12 слов) надо взять хэш (sha256) 128-битного бинарного числа, но тут оно воспринимается как текст. Поэтому итоговая хэш сумма не та, что мне нужна. Как реализовать это на питоне? Например, хэш 101 как текста это 16dc368a89b428b2485484313ba67a3912ca03f2b2b42429174a4f8b3dc84e44. Но значение хэша для 101 как битовой величины это c19a797fa1fd590cd2e5b42d1cf5f246e29b91684e2f87404b81dc345c7a56a0, именно это значение мне и нужно получить с помощью кода.

import hashlib
def calculate_sha256_binary(binary_number):
    binary_string = str(binary_number)
    byte_data = binary_string.encode()
    sha256_hash = hashlib.sha256(byte_data).hexdigest()
    return sha256_hash
print(calculate_sha256_binary((101))) 

Увидеть это можно тут: https://cryptii.com : введите сюда описание изображения

Заранее спасибо

Ответы

▲ 0Принят

Прежде всего хочу уточнить один момент, многие могли подумать что 101 это 5 но, проведя экперимент с онлайн калькулятором я выяснил что это 160 т.е:

0b10100000

Далее обратившись к документации я нашел пример использования библиотеки:

import hashlib
m = hashlib.sha256()
m.update(b"Nobody inspects")
m.update(b" the spammish repetition")
m.digest()
b'\x03\x1e\xdd}Ae\x15\x93\xc5\xfe\\\x00o\xa5u+7\xfd\xdf\xf7\xbcN\x84:\xa6\xaf\x0c\x95\x0fK\x94\x06'
m.hexdigest()
'031edd7d41651593c5fe5c006fa5752b37fddff7bc4e843aa6af0c950f4b9406'

Таким образом можно написать код так:

import hashlib
m = hashlib.sha256()
m.update(bytes([160])) # 160 или int('10100000', 2)
print(m.hexdigest())

и мы получим то что требовалось:

c19a797fa1fd590cd2e5b42d1cf5f246e29b91684e2f87404b81dc345c7a56a0