Хеширование простых чисел, по меньшей мере, неоднозначно.
Число должно быть преобразовано в байты перед передачей в алгоритм дайджеста. Первая проблема, с которой вы столкнетесь, состоит в том, какой размер байта занимает число, может быть 4 байта, 8 байтов или что-то еще. Затем наступает порядок байтов в памяти. Все это приведет к разным дайджестам для, казалось бы, одного и того же числа. (Для простоты я предположил, что число равно int)
>>> hashlib.md5(b'4').hexdigest()
'a87ff679a2f3e71d9181a67b7542122c'
>>> i = 4
>>> hashlib.md5(i.to_bytes(2, 'big')).hexdigest()
'c244b9cdf7853b5693a295e384c07367'
>>> hashlib.md5(i.to_bytes(4, 'big')).hexdigest()
'ea4959eb64a1f09be580d950964f3843'
>>> hashlib.md5(i.to_bytes(8, 'big')).hexdigest()
'59cff542fae7e0c4267e45740a12c9a0'
Итак, ваше решение - преобразовать int
в str
и закодировать его, чтобы получить из него дайджест.
# either this
>>> hashlib.md5(b'4').hexdigest()
# or
>>> hashlib.md5(str(4).encode()).hexdigest()
Надеюсь, это поможет.