Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 11:18 28.05.24 
Клубове/ Компютри и Интернет / PHP Всички теми Следваща тема Пълен преглед*
Информация за клуба
Тема Разделяне на низ
Автор peio (one of my turns)
Публикувано06.05.03 18:29  



Здравейте,
имам следния проблем : поставил съм си за цел да разделя един низ (парола) между N човека , като условието е да са нужни само M от тях, за да се събере низа отново. Първото решение, което приложих е да раздавам всеки символ от низа на M различни човека, но по този начин трябва да дам по (N+1 - М) / N част от низа на всеки отделен човек, което означава, че празните позиции във всяка част от ключа могат лесно да бъдат запълнени чрез обхождане на всички възможности. Тъй като начина, който съм изложил по-долу, ми дава възможност да го приложа към произволно дълъг низ, то аз мога да използвам толкова дълъг низ за парола, че празните позиции във всяко парче да са достатъчно много за да обезмислят услията за запълване чрез обхождане то той според мен е приложим само ако паролата, която деля, е симетрична и дължината си я определям единствено аз. Проблемът идва ако низа, който деля е частния ключ от асиметрина двойка, който е с фиксирана максимална големина. Тогава вече опастността от опит за обхождане на всички възможности е реална.

Въпросът ми е какъв друг начин мога да използвам за да постигна същата цел ?

Ето сегашното решение на проблема, което не е особено блестящо, но се спрях до тук поради горните съображения :


<?php
function keysplit($Persons, $Parts){
global $str;// въпросната парола/ключ

$rPersons = ($Parts+1) - $Persons;

$nLoop = 0;

for($nSymbol=0 ; $nSymbol < strlen($str) ; $nSymbol++){

$startElement = $nSymbol - ($Parts*$nLoop);

for($i=0 ; $i < $rPersons ; $i++){

$resultElement = $startElement + $i;

if($resultElement > $Parts)
$resultElement = $resultElement % $Parts;
elseif($resultElement == 0)
$resultElement = $Parts;

$result[$resultElement] .= $str[$nSymbol];
}

for($j = 0; $j < ($Parts-$rPersons); $j++){
$emptyElement = $startElement+$rPersons+$j ;

if($emptyElement > $Parts)
$emptyElement = $emptyElement % $Parts;
elseif($startElement == 0)
$emptyElement = $rPersons+$j;

$result[$emptyElement] .= "_";

}

if( ($nSymbol % $Parts) == 0 and $nSymbol != 0)
$nLoop++;

}
return $result;

}
?>


# лудите, лудите... те да са живи!

Цялата тема
ТемаАвторПубликувано
* Разделяне на низ peio   06.05.03 18:29
. * въпрос offtopic Dakota   07.05.03 14:17
. * Re: въпрос offtopic peio   07.05.03 16:29
. * Re: въпрос offtopic Dakota   07.05.03 19:08
. * Re: въпрос offtopic peio   07.05.03 22:33
. * Re: въпрос offtopic Dakota   08.05.03 11:08
. * далеч по логично ми изглежда... Topбaлaн   07.05.03 14:42
. * Re: далеч по логично ми изглежда... peio   07.05.03 16:35
. * Re: Разделяне на низ ro6avia   08.05.03 00:28
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.