Давайте используем Python, чтобы понять это.
>>> '123456çñ'
'123456\xc3\xa7\xc3\xb1'
>>> 'ç'
'\xc3\xa7'
>>> 'ñ'
'\xc3\xb1'
В приведенном выше выводе мы видим кодировку UTF-8 'ç' и 'ñ'.
>>> md5('123456çñ').digest().encode('hex')
'66f561bb6b68372213dd9768e55e1002'
Итак, когда мы вычисляем MD5-хэш данных в кодировке UTF-8, мы получаем первый результат.
>>> u'ç'
u'\xe7'
>>> u'ñ'
u'\xf1'
Здесь мы видим кодовые точки Unicode 'ç' и 'ñ'.
>>> md5('123456\xe7\xf1').digest().encode('hex')
'9e6c9a1eeb5e00fbf4a2cd6519e0cfcb'
Итак, когда мы вычисляем MD5-хэш данных, представленных с помощью кодовых точек Unicode каждого символа в строке (возможно, в кодировке ISO-8859-1), мы получаем второй результат.
Таким образом, первый веб-сайт вычисляет хэш данных в кодировке UTF-8, а второй - нет.