Если в процедуре не используется случайное принятие решений (то есть, оно полностью детерминировано), и реализации используемых алгоритмов одинаковы (и они должны быть - SHA256 должен действовать везде одинаково, и то же самое относится и к строкам Base64), поэтому очень маловероятно, что сам алгоритм «не хэширует значение одинаково».
Если вы не можете воспроизвести ошибку (имеется в виду: найти какое-то значение, которое всегда создает один хеш при хешировании на сервере, а другой - при хешировании клиентом), вы должны убедиться, что значения переданы и получены правильно. Может быть, клиент получил взломанный пароль? Может быть, сервер получает поврежденные данные от клиента? может данные в самой базе данных сервера как-то изменились?
Убедитесь, что каждая транзакция подтверждена, то есть пользователь не может получить поврежденный пароль.