Why md5 digest is 128 bit but returns an string of 32 chars?
TLDR: it's a HEX string, not ascii or UTF-8 string. Each hex char is 4 bit, not 8 bit
ChatGPT's answer:
"The MD5 hash function outputs a 128-bit hash value, but it is typically represented as a 32-character hexadecimal string. Each hexadecimal digit represents 4 bits, so the 32 characters represent a total of 128 bits. This representation makes it easier for humans to read and work with the hash values, but it does not change the underlying size of the hash value, which is still 128 bits."