У меня была эта проблема, и я не мог отследить ее.Оказывается, что если вы введете входную строку в одинарные кавычки, вы получите другие результаты, чем в двойных кавычках.
Также обратите внимание на различные проблемы кодирования
Пример
$str = "test=!$E0";
$enc = mb_detect_encoding($str, "UTF-8,ISO-8859-1");
echo strtoupper(sha1(iconv($enc, "UTF-8",$str)));
04CDF156D64CC4B51E1DC7E5A852F9177102EBE7
$str = 'test=!$E0';
$enc = mb_detect_encoding($str, "UTF-8,ISO-8859-1");
echo strtoupper(sha1(iconv($enc, "UTF-8",$str)));
44372F3C82A4AAD84748AE5ECB8F6C7313DA6C65
Очень раздражает