Кодировщик основанный на ord / chr

zxc

Новичок
Кодировщик основанный на ord / chr

не могу понять в чем дело, написал простенький кодировщик, но экранированные символы \n \r \t и т.д. он отображает не корректно, как можно исправить ошибку?

PHP:
<?
function decoder($s) {
 $r=''; $k=substr($s,-1);
 for ($i=0; $i<strlen($s)-1; $i++) {
  $c=ord($s{$i})-$k;
  if ($c<32) {$c=127-(32-$c);}
  $r.=chr($c);
 }
 return $r;
}

function encoder($s) {
 $r=''; $k=rand(1,9);
 for ($i=0;$i<strlen($s);$i++) {
  $c=ord($s{$i})+$k;
  if ($c<32) {$c=127-(32-$c);}
  $r.=chr($c);
 }
 return $r.$k;
}

echo(decoder(encoder("test \r\n")));
?>
 

digs

Новичок
Либо я чего то не понял...
в encoder ты делаешь так, что у тебя символы меньше 32 кодируются > 95 (примерно так).
Тогда строчка
if ($c<32) {$c=127-(32-$c);}
в decoder вообще не ясна (она никогда не будет выполняться). К тому же после такой кодировки символы <32 будут совпадать с символами от 95 до 127... Вопщем идея изначатьно не правильная
 
Сверху