
02.04.2009, 11:37
|
|
Постоянный
Регистрация: 07.03.2008
Сообщений: 479
С нами:
9567480
Репутация:
61
|
|
Сообщение от Pashkela
Чото сам не понимаю, даже так сделал:
PHP код:
<?php
$key =
array("q","w","e","r","t","y","u","i","o","p","a","s","d","f","g","h","j","k","l","z","x","c","v","b","n","m","1","2","3","4","5","6","7","8","9","0");
$dekey=
array("g","f","d","s","a","h","j","k","l","m","z","n","x","b","c","v","1","q","2","w","3","e","4","r","5","t","6","y","7","u","8","i","9","o","0","p");
$str = "qwe";
echo str_replace($key, $dekey, $str);
?>
чушь какая-то 
А как можно сделать?
Мне надо шифрование хотяб по 6 значному ключу...
|
|
|

02.04.2009, 11:38
|
|
Познающий
Регистрация: 06.12.2006
Сообщений: 57
С нами:
10225190
Репутация:
31
|
|
PHP код:
<?
function crupt($text){
$key = array('q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m','1','2','3','4','5','6','7','8','9','0');
$dekey=array('g','f','d','s','a','h','j','k','l','m','z','n','x','b','c','v','1','q','2','w','3','e','4','r','5','t','6','y','7','u','8','i','9','o','0','p');
$text = str_replace($key, $dekey, $text, $count);
echo $count;
return $text;
}
echo ' '.crupt('q');
?>
выводет
перезамен идёт по несколько раз
|
|
|

02.04.2009, 11:41
|
|
Участник форума
Регистрация: 11.12.2005
Сообщений: 160
С нами:
10743646
Репутация:
159
|
|
проблема в том что в алфавите нет каких то букв, поэтому происходит замена левым символом который заменялся перед ней, иначе символом w как я понял. если тебе нужен шифроалгоритм могу скинуть перестановку с путями гамильтона(тока я не доделал декодирование сего мяса)
|
|
|

02.04.2009, 11:41
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
С нами:
9649706
Репутация:
3338
|
|
а вот так работает:
PHP код:
<?php
function zam($text){
$key =
array("q","w","e","r","t","y","u");
$dekey=
array("g","f","d","s","a","h","j");
return str_replace($key, $dekey, $text);
}
$str = "qwe";
echo zam($str);
?>
т.е. прямая и явная связь с КОЛИЧЕСТВОМ элементов в массиве, т.е. есть ограничения какие-то, или не успевает вычислить, или хз
здесь
http://ru2.php.net/str_replace
ничего про такие ограничения не сказано, наверное мы обнаружили новый баг функции str_replace
Надо пулять сюда:
http://bugs.php.net/
Последний раз редактировалось Pashkela; 02.04.2009 в 11:52..
|
|
|

02.04.2009, 11:46
|
|
Познающий
Регистрация: 06.12.2006
Сообщений: 57
С нами:
10225190
Репутация:
31
|
|
работает на половину не верно,верные вариации есть только потому что нет заменённых символов дальше в массиве на которые бы можно было ещё заменить
|
|
|

02.04.2009, 11:53
|
|
Познающий
Регистрация: 06.12.2006
Сообщений: 57
С нами:
10225190
Репутация:
31
|
|
Pashkela.
да какой это баг, функция меняет все варианты котрые есть в массиве, и ей пофиг что они уже были когда то поменяны, перезамен идёт по несколько раз, так как заменив например на символ "e" на "d", она дальше в списке массива находит ещё символ "d" и меняет соответственно его на "x", поэтому и получается не верный результат
$key = array("q","w","e","r","t","y","u","i","o","p","a", "s","d");
$dekey= array("g","f","d","s","a","h","j","k","l","m","z", "n","x");
|
|
|

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

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

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

02.04.2009, 12:15
|
|
Познающий
Регистрация: 06.12.2006
Сообщений: 57
С нами:
10225190
Репутация:
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');
?>
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|