Autor Zpráva
krystof
Profil *
zdravím,
potřebuju udělat šifru ( caesarova šifra )
zatím mám toto:
<?php
$cislo="396";
$str="Moje oblibena pisnicka";
$str= STRTOUPPER($str);
echo $str;
echo "<br>" ;
$delka=STRLEN($str) ;

echo "<br>" ;


echo "<div><br>" ;
for ($i = 0, $to = $delka; $i < $to; $i++)
{

echo chr(ord($str[$i]) + $cislo[i]);


}


?>



Potřebuju, aby se mi písmena posunuli nejdřív o 3, pak 9 a nakonec 3, což se
bude opakovat. První 3 písmena mi to posune, ale další již ne, předpokládám, že
řešení v cyklu bude jiné, proto bych se chtěl poradit s vámi.
Stano
Profil
$j = 0;
for ($i = 0, $i < $delka; $i++){
  echo chr(ord($str[$i]) + $cislo[$j++]);
  if($j == 2) $j = 0;
  }
Keeehi
Profil
krystof:
A že se Vám ze "Z" na první pozici stane "]" Vám nevadí?
$cislo = array(3,9,6);
$str = "Moje oblibena pisnicka.";
$str = strtoupper($str);
echo $str."<br>\n";

for ($i = 0, $ii = 0; $i < strlen($str); $i++) {
    if(ord($str[$i])>=65 and ord($str[$i])<=90)
        echo chr((ord($str[$i])-65+$cislo[$ii++%count($cislo)])%26+65);
    else
        echo $str[$i];
}
EDIT: Tento script převádí pouze písmena, kontroluje "přetečení" abecedy a při znacích které nepřekládá neposunuje index pro výběr z $cislo.
krystof
Profil *
Keeehi:
ano vadí, už jsem sprovoznil to kolovaní jak mi zde poslal pan Stano
Stano
Profil
krystof:
hehe Pán to sa mi páči.
$alphabet = array('a', 'b', 'c',  ..... 'x', 'y', 'z');

$j = 0;
for ($i = 0, $i < $delka; $i++){
  $position = array_search($str[$i], $alphabet) + $cislo[$j++];
  if($position > count($alphabet)-1) $position = $position - count($alphabet)-1;
  echo $alphabet[$position];
  if($j == strlen($cislo)-1) $j = 0;
  }



Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0