MD5 produce una salida de 16 bytes, es decir, 16 valores entre 0 y 255. Lo que ves es probablemente un hexadecimal representación de esos bytes: cada byte se codifica como dos caracteres tomados entre los dígitos ('0' a '9') y las primeras letras minúsculas ('a' a 'f'). Cada carácter debe interpretarse como que tiene un valor numérico entre 0 y 15 ('a' es 10, 'b' es 11, ... y 'f' es 15). En un par de caracteres correspondientes a un byte dado, el primer carácter tiene un valor de 16 veces. Por ejemplo, un byte de valor 92 se representa como '5c' porque 92 es igual a 5 * 16 + 12, y 'c' representa 12.