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

Форум PHP

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

 

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

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

тема: XOR utf8
 
 автор: LotteB   (06.08.2012 в 13:47)   письмо автору
 
 

Здравствуйте, не понимаю как в php сделать xor мультибайтовых строк, в сети полно примеров, но все они не подойдут для русских букв.

Аналогичная задача во флэше (as3) решается без проблем и каких-то специальных решений.


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

function xorEncode($str, $key) {
    $strlen = mb_strlen($str);
    $keylen = mb_strlen($key);
    for ($i = 0; $i < $strlen; $i++) {
        $r = ordUTF8( $str{$i} ) ^ ordUTF8 $key{$i % $keylen} );
        $str{$i} = chr($r);
    }
    return $str;
}

  Ответить  
 
 автор: confirm   (06.08.2012 в 15:13)   письмо автору
 
   для: LotteB   (06.08.2012 в 13:47)
 

Офигеть, ей богу, особенно эта строка:
<?
ordUTF8
$str{$i} ) ^ ordUTF8 $key{$i $keylen} )

Если ordUTF8, это пользовательская функция, то почему так странно скобки по-раскиданы? И $str[$i] никак не катит?

  Ответить  
 
 автор: LotteB   (06.08.2012 в 16:20)   письмо автору
 
   для: confirm   (06.08.2012 в 15:13)
 

Действительно, это какая-то моя глупость при копировании, забыл скобку. Да, ordUTF8 пользовательская функция.

Разобравшись, могу уточнить вопрос: как в пхп получить следующее?


t - 116
e - 101
s - 115
t - 116
  - 32
т - 1090
е - 1077
с - 1089
т - 1090

  Ответить  
 
 автор: confirm   (06.08.2012 в 17:04)   письмо автору
 
   для: LotteB   (06.08.2012 в 16:20)
 

Для этого надо уяснить, что вообще такое utf. Посмотрите эту статью, думаю это как раз нужное.

  Ответить  
 
 автор: LotteB   (06.08.2012 в 17:19)   письмо автору
 
   для: confirm   (06.08.2012 в 17:04)
 

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

Вот написал, вроде работает

$str = "test тест";
 $strlen = mb_strlen($str,'UTF-8');

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

echo   mb_substr( $str, $i, 1, 'UTF-8');
echo   "&nbsp;  -  ";
echo   ordUTF8(mb_substr( $str, $i, 1, 'UTF-8'));

echo   "<br>";

};


   t  - 116
  e  - 101
  s  - 115
  t  - 116
    - 32
  т  - 1090
  е  - 1077
  с  - 1089
  т  - 1090

  Ответить  
Rambler's Top100
вверх

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