Потому что md5($row['sha2'].'1') и md5($sha2).'1' разные вещи.
Хеш-функция от разных строк даст разные хеш-суммы (ну кроме коллизий, но мы же не их ищем :)). В твоем случае последний md5 считается от разных строк. Почему? Ответ выше :)
Замени $hash = md5(md5($whirlpool).md5($sha2).'1');
на $hash = md5(md5($whirlpool).md5($sha2.'1')); и будет равенство.