Tres días pasamos con mi compañero buscando el bug en la generación del hash.
La aplicación generaba 4c2768d1f6858e92d3d00e3f20da58eb que no coincidía con a45eb95c318b47d6e71f8713364ad82a. En ambos casos se encodeaba “José”.
¿Por qué? ¡Si el string es el mismo!
Sí era el mismo, semánticamente. Pero en 2 idiomas diferentes. Nosotros encodeabamos “José” en UTF-8 y ellos encondeaban “José” en ISO-Latin.
En UTF-8 se encodea a “Jos%C3%A9” y en ISO-Latin a “Jos%E9”. Origen distinto, hash distintos.
Lectura recomendada: http://www.joelonsoftware.com/articles/Unicode.html