Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Алгоритм скремблерного шифрования на PHP
 
 автор: t3ma   (13.05.2007 в 07:49)   письмо автору
 
 

Здраствуйте уважаемые участники форума, вобщем в качаестве одной из лабораторных работ, мне было предложено написать алгоритм скремблерного шифрования, писать можно было в принципе на чем угодно, но поскольку последнее время я программировал исключительно на PHP, поэтому попытался сделать именно на нем, но в процессе написания столкнулся с несколькими проблемами, для начала код, того что у меня получилось:

<?
function scramblekey($text$key,$scramb){
  
$lent=strlen($text);
  
$lens=strlen($scramb);
  
$lenk=strlen($key);
  
$ki=0;$pos_scr=0;
  for (
$m=0;$m<$lent;$m++){
  echo 
$key[$lenk-1]^ $text[$m];

  for(
$i=0;$i<$lens;$i++)
  {
    if(
$scramb[$ki]==1)
       {
    
$res_scr[]=$key[$ki];
        }
     
$ki++;
  }
  
$new_bit=0;
  
$ki=0;
  for(
$g=0;$g<count($res_scr);$g++)
  {
  
$new_bit=$new_bit^$res_scr[$g];
  }
  
$g=0;unset($res_scr);
  
$key=str_pad($key$lenk+1$new_bitSTR_PAD_LEFT);
$key=substr($key0$lenk);
   }
}

$PHP_SELF=$_SERVER['PHP_SELF'];
echo
"
<style type='text/css'>
table.formtable
{border:2 px solid #0B75C4;
background: #C7D7E6;
border-collapse:collapse;
}

table.formtable td
{
border-width:1px;
border-color:#C7D7E6;
border-style:solid;
}

</style>


<table class='formtable' border=1 width='375'>
<form action=
$PHP_SELF method='POST'>
<tr><td width=273>
<b>Укажите файл:
<td><input type='file' name='myfile' size='20'></tr>
<tr><td width=273>
<b>Ключ   :
<td><input type='text' name='fkey' size='20' value='00000110'></tr>
<tr><td width=273>
<b>Скремблер   :
<td><input type='text' name='scr' size='20' value='00000101'></tr>
<tr><td colspan='2'>
<p align='center'><br>
<input type='submit' value='Шифровать/Дешифровать' name='crypt'></p>
</p>
</form>
</table>
"
;
if(!empty(
$_POST['crypt'])){
$fkey=$_POST['fkey'];$scr=$_POST['scr'];
$len_key=strlen($fkey); $len_scr=strlen($scr);
if(
$len_key!=$len_scr){echo "ВНИМАНИЕ, Длина <b>ключа</b> должна совпадать с длиной <b>скремблера</b><br><br>";}}
  if (!empty(
$_POST['myfile']))
{
$file fopen($_POST['myfile'],"rb");
if(!
$file){echo("Ошибка открытия файла");}
else{
scramblekey(fread($file,filesize($_POST['myfile'])),$fkey,$_POST['scr']);
fclose($file);

}

}


Но данный алгоритм как видно из строчки

echo $key[$lenk-1]^ $text[$m];


производит логическую операцию XOR не со каждым из битов кодируемого символа, а со всем байтом (символом), то есть если преобразовать данный символ в ASCII код, а затем десятичное число ASCII кода в бинарный формат, ксорятся не все биты, а лишь последний...

может кто нибудь подскажет, как переписать данный алгоритм что бы ксорились именно все биты кодируемого символа.. я пытался сделать, мысль была правильной..но уже запутался ))
заранее спасибо

(c) Al3x

   
 
 автор: t3ma   (15.05.2007 в 10:47)   письмо автору
 
   для: t3ma   (13.05.2007 в 07:49)
 

никто непоможет ?

   
 
 автор: Trianon   (15.05.2007 в 11:10)   письмо автору
 
   для: t3ma   (13.05.2007 в 07:49)
 

Тестовый пример приведите. Какие данные на вход поступают, какие на выходе образоваться должны. И алгоритм поподробнее, а то у Вас биты, байты, символы - всё в куче. Еще и значения десятичные откуда-то взялись.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования