ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

02.04.2009, 11:54
|
|
Постоянный
Регистрация: 07.03.2008
Сообщений: 479
Провел на форуме: 791766
Репутация:
61
|
|
Сообщение от vizard-06
Pashkela.
да какой это баг, функция меняет все варианты котрые есть в массиве, и ей пофиг что они уже были когда то поменяны, перезамен идёт по несколько раз, так как заменив например на символ "e" на "d", она дальше в списке массива находит ещё символ "d" и меняет соответственно его на "x", поэтому и получается не верный результат
И как сделать чтоб 1 раз меняла?
|
|
|

02.04.2009, 11:55
|
|
Познающий
Регистрация: 06.12.2006
Сообщений: 57
Провел на форуме: 418176
Репутация:
31
|
|
Byrger
меняй по отдельности буквы а не все сразу или реализовать через ASCII
Последний раз редактировалось vizard-06; 02.04.2009 в 12:00..
|
|
|

02.04.2009, 11:59
|
|
Постоянный
Регистрация: 07.03.2008
Сообщений: 479
Провел на форуме: 791766
Репутация:
61
|
|
Сообщение от vizard-06
Byrger
меняй по отдельности буквы а не все сразу
Отсюда вопрос как сторку разбить по букавм на массив и потом после прогона собрать?
|
|
|

02.04.2009, 12:15
|
|
Познающий
Регистрация: 06.12.2006
Сообщений: 57
Провел на форуме: 418176
Репутация:
31
|
|
можно попробовать вот так извратиться)))
PHP код:
<?
function crupt($text)
{
$key = array(ord('q'),ord('w'),ord('e'),ord('r'));
$dekey= array(ord('g'),ord('f'),ord('d'),ord('s'));
for($i = 0; $i < strlen($text); $i++)
{
$texte .= chr(str_replace($key, $dekey, ord($text{$i})));
}
return $texte;
}
echo crupt('qwer');
?>
|
|
|

02.04.2009, 12:32
|
|
Познающий
Регистрация: 06.12.2006
Сообщений: 57
Провел на форуме: 418176
Репутация:
31
|
|
а лучше всё-таки
PHP код:
<?
function crupt($text)
{
$key = array('q' => 'g', 'w' => 'f','e' => 'd', 'r' => 's');
for($i = 0; $i < strlen($text); $i++)
{
$rekey = empty($key[$text{$i}]) ? $text{$i} : $key[$text{$i}];
$texte .= $rekey;
}
return $texte;
}
echo crupt('bbbqwer');
?>
|
|
|

02.04.2009, 12:34
|
|
Постоянный
Регистрация: 07.03.2008
Сообщений: 479
Провел на форуме: 791766
Репутация:
61
|
|
Сообщение от vizard-06
можно попробовать вот так извратиться)))
PHP код:
<?
function crupt($text)
{
$key = array(ord('q'),ord('w'),ord('e'),ord('r'));
$dekey= array(ord('g'),ord('f'),ord('d'),ord('s'));
for($i = 0; $i < strlen($text); $i++)
{
$texte .= chr(str_replace($key, $dekey, ord($text{$i})));
}
return $texte;
}
echo crupt('qwer');
?>
Аналогичный результат...
Без шифровки: e10adc3949ba59abbe56e057f20f883e
после шифровки: d10adc3949ba59abbd56d057f20f883d
После расшифровки: e10aec3949ba59abbe56e057w20w883e
|
|
|

02.04.2009, 12:40
|
|
Познающий
Регистрация: 06.12.2006
Сообщений: 57
Провел на форуме: 418176
Репутация:
31
|
|
в массиве на замен не все символы, добаляй все, я ради приера показывал
|
|
|

02.04.2009, 12:48
|
|
Участник форума
Регистрация: 11.12.2005
Сообщений: 160
Провел на форуме: 745130
Репутация:
159
|
|
собственно вот вам реализация крипто-алгоритма методом перестановки с применением путей Гамильтона
Код:
function gamilton_enc($in,$key)
{
$out = "";
$routes = array(
1 => "45102376",
2 => "40231576",
3 => "46201573",
4 => "45762013",
5 => "40132675");
$tmp_key = $routes[array_rand($routes, 1)];
$block_size = strlen($tmp_key);
while (strlen($in) % $block_size != 0) {
$in .= "*";
}
$num_block = 0;
$blocks = array();
for ($i = 0; $i < strlen($in); ) {
$blocks[$num_block] = substr($in, $i, $block_size);
$num_block++;
$i += $block_size;
}
$key_routes = explode(",", $key);
foreach ($blocks as $key => $block) {
$curent_key = $key % count($key_routes);
for ($i = 0; $i < strlen($routes[$key_routes[$curent_key]]); $i++) {
$out .= $block[$routes[$key_routes[$curent_key]][$i]];
}
}
return $out;
}
function gamilton_dec($in,$key)
{
$out = "";
$fout="";
$routes = array(
1 => "45102376",
2 => "40231576",
3 => "46201573",
4 => "45762013",
5 => "40132675");
$tmp_key = $routes[array_rand($routes, 1)];
$block_size = strlen($tmp_key);
$num_block = 0;
$blocks = array();
for ($i = 0; $i < strlen($in); ) {
$blocks[$num_block] = substr($in, $i, $block_size);
$num_block++;
$i += $block_size;
}
$key_routes = explode(",", $key);
$block_num=0;
foreach ($blocks as $key => $block) {
$curent_key = $key % count($key_routes);
for ($i = 0; $i < strlen($routes[$key_routes[$curent_key]]); $i++) {
$out[$block_num][$routes[$key_routes[$curent_key]][$i]] = $block[$i];
}
ksort($out[$block_num]);
$fout.=implode('',$out[$block_num]);
$block_num++;
}
return $fout;
}
$in = "e10adc3949ba59abbe56e057f20f883e";
$key = "2,5,3";
var_dump( gamilton_enc($in,$key) );
помоему никто еще на пхп не реализовывал данный алгоритм=) хорошо шифрует строки кратные длине ключа, а если нет то выходит что на выходе будут технические символы. если кто то заинтересуется может доработать мой код
|
|
|

02.04.2009, 12:52
|
|
Постоянный
Регистрация: 07.03.2008
Сообщений: 479
Провел на форуме: 791766
Репутация:
61
|
|
Сообщение от NuR
собственно вот вам реализация крипто-алгоритма методом перестановки с применением путей Гамильтона
помоему никто еще на пхп не реализовывал данный алгоритм=) хорошо шифрует строки кратные длине ключа, а если нет то выходит что на выходе будут технические символы. если кто то заинтересуется может доработать мой код
Спасибо большое!
|
|
|

02.04.2009, 12:54
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме: 6462214
Репутация:
3171
|
|
В php и так уже все сделано за тебя =)
PHP код:
$str = "Hello";
echo $str[0]; // Выводит H, но работает только со строками,тоесть с " "
--or--
$str = "Hello";
$arr = str_split($str);
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|