Guarda, ho provato il tuo codice...e non fa una piega
L'unica cosa che mi viene in mente è se per caso $caratteri/$sigle si son presi una codifica strana (oppure lato login).
Aggiungi questo dopo che ti stampi la password in chiaro:
E la stessa cosa lato login login con al posto di $str la password in chiaro. Controlla se i caratteri hanno lo stesso valoreCodice PHP:
echo "<p>La password per l'utente è:<br>". $str."</p><br><br><br>";
//questo:
for($i= 0; $i< strlen($str); $i++){
echo $str[$i]."->".ord($str[$i])."<br/>";
}
ps: dopo la modifica della password fai altro ?