Как получить хеш пароля длиной более 31 символа?
Забейте на весь этот бред. В PHP есть отличные встроенные функции.
php.net/manual/en/function.password-hash.php
php.net/manual/en/function.password-verify.php
$s1 = "1234567890123456789012345678901";
$s2 = "$s1$s1$s1";

echo(hash('sha256', $s1).'<br>');
echo(hash('sha256', $s2).'<br>');
Что там обрезается? Не вижу.