The term endianness describes the order in which computer memory stores a sequence of bytes. Little endian means the lower significant bytes get the lower addresses. Big endian means the other way around. For example, with value = -12, Little endian, in memory , would be:
000000: F4
000001: FF
Big endian, in other word, would be:
000001: FF
000000: F4
Therefore, with different CPU / diffrent hashing algorithm, when converted from bytes to int, the result might be different. Here’s an example
Computer 1:
import sys
import hashlib
sys.byteorder # little
h = hashlib.md5(b"test")
dig = h.digest() # digest() return bytes sequence, in this case output is in little endian
print(int.from_bytes(dig, "little")) # 327925494462908176265137084817260384009
Computer 2:
import sys
import hashlib
sys.byteorder # big
h = hashlib.md5(b"test")
dig = h.digest() # digest() return bytes sequence, in this case output is in little endian
print(int.from_bytes(dig, "big")) # 12707736894140473154801792860916528374