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