теоретически это правильно, если вы берете только видимые символы, но php также добавляет непереписываемые символы. Я подготовил для вас пример, начиная с вашего кода, который показывает подарок, в котором размещены невидимые символы. затем я восстановил последовательность с этими персонажами и играми пепла
<?php
class Foo {
private $a = TRUE;
private $b = 'rogthedog';
}
$c = new Foo;
echo(serialize($c));
# this shows all the characters
echo("\n\n");
$test = str_split(serialize($c));
foreach ($test as $char) {
echo $char."->".ord($char)." || ";
}
echo(hash('sha256', serialize($c)));
echo("\n\n");
$test2='O:3:"Foo":2:{s:6:"'.chr(0).'Foo'.chr(0).'a";b:1;s:6:"'.chr(0).'Foo'.chr(0).'b";s:9:"rogthedog";}';
echo (hash('sha256', $test2)); // YES !!!