есть задание сделать прогу для розшифровки шифра частокола. Вот кое-что написал - но оно роботает только для анг. язика, а мне нада для руского (точнее для украинского). помогите если не трудно Код | <? echo ' <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';
echo "<form action='chustokol.php'> <input type='text' name='kod' size='20' >Код для дешифровки.<br><input type='text' name='kluch' size='10'>Ключ.<br><input type='submit' value='Розшифровать!!' size='20' > </form>";
class chustokol { public $kod; public $kluch; public $mas; private $len; private $slovo,$verh,$pc,$dc,$os,$lu,$gg,$co; function scklad($mas) { $napram=1; for($i=0, $j=$this->kluch-1,$l=0;$this->len>$l;$l++) { if($napram) { $pro=$mas[$j]; $this->slovo[$l]=$pro[0]; $pro=substr($pro,1,$this->kluch+1); $mas[$j]=$pro; $i++; $j--; if($i==$this->kluch-1) { $napram=0; } } else { $pro=$mas[$j]; $this->slovo[$l]=$pro[0]; $pro=substr($pro,1,10); $mas[$j]=$pro; $j++; $i--; if($i==0) { $napram=1; } } } for($i=0;$this->len>$i;$i++) { echo $this->slovo[$i]; } } function vuvid() { $this->len=strlen($this->kod); $this->dc=($this->kluch-2)+$this->kluch; $this->verh=($this->len+($this->kluch-2))/$this->dc; $this->verh=(int) $this->verh; $this->os=$this->len%$this->dc; $this->pc=$this->len/$this->dc; if ($this->pc > $this->verh) { // Забагато. $this->mas[0]=substr($this->kod,0,$this->verh); $this->lu=$this->kluch-$this->os; $this->mas[0]=substr($this->kod,0,$this->verh); //Довжина верхніх точок. $this->co=strlen($this->mas[0]); //Рахунок символів. for($i=1;$i<$this->kluch-1;$i++) { if($i==1) { $this->gg=strlen($this->mas[$i-1])*2; if($i==$this->lu ) { $this->gg++; $this->lu=0;} $this->mas[$i]=substr($this->kod,$this->co,$this->gg); $this->co=$this->co+strlen($this->mas[$i]); } if($i!=1) { $this->gg=strlen($this->mas[$i-1]); if($i==$this->lu ) { $this->gg++; $this->lu=0; } $this->mas[$i]=substr($this->kod,$this->co,$this->gg); $this->co=$this->co+strlen($this->mas[$i]); } } $this->mas[$this->kluch-1]=substr($this->kod,$this->co,strlen($this->kod)-strlen($this->co)); } else { // Не хватає і рівно . $this->lu=$this->dc-$this->os; // Лишнів символи $this->mas[0]=substr($this->kod,0,$this->verh); //Довжина верхніх точок. $this->co=strlen($this->mas[0]); //Рахунок символів. for($i=1;$i<$this->kluch-1;$i++) { if($i==1) { $this->gg=strlen($this->mas[$i-1])*2; if($this->lu>0 ) { $this->gg--; $this->lu--;} $this->mas[$i]=substr($this->kod,$this->co,$this->gg); $this->co=$this->co+strlen($this->mas[$i]); } if($i!=1) { $this->gg=strlen($this->mas[$i-1]); // if($this->lu>0 ) { $this->gg--; $this->lu--;} $this->mas[$i]=substr($this->kod,$this->co,$this->gg); $this->co=$this->co+strlen($this->mas[$i]); } } $this->mas[$this->kluch-1]=substr($this->kod,$this->co,strlen($this->kod)-strlen($this->co)); } return $this->mas; } }
$shufr=new chustokol(); $shufr->kod=$_GET['kod']; $shufr->kluch=$_GET['kluch'];
$shufr->scklad($shufr->vuvid());
?>
|
|