Вам нужно убедиться, что данные, приходящие с формы авторизации, в старой кодировке Win-1251, тогда при проверке пароли должны совпадать, т.к. хэшироваться должны те же наборы байт, что раньше приходили на старой версии движка с формы в кодировке Win-1251. Кроме того, при проверке кодировка хэша так же должна совпадать с той, в которой будет результат md5(). Можно воспользоваться методом
mb_convert_encoding()
. Если надо удалить BOM, можно после конвертации в кодировку сделать примерно так:
$bom = pack("H*", "EFBBBF");
$string = preg_replace("/^$bom/", '', $string);
Надеюсь, мои заметки вам помогут решить проблему.