|
|
|
| Здравствуйте, не понимаю как в 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;
}
|
| |
|
|
|
|
|
|
|
для: LotteB
(06.08.2012 в 13:47)
| | Офигеть, ей богу, особенно эта строка:
<?
ordUTF8( $str{$i} ) ^ ordUTF8 $key{$i % $keylen} )
|
Если ordUTF8, это пользовательская функция, то почему так странно скобки по-раскиданы? И $str[$i] никак не катит? | |
|
|
|
|
|
|
|
для: confirm
(06.08.2012 в 15:13)
| | Действительно, это какая-то моя глупость при копировании, забыл скобку. Да, ordUTF8 пользовательская функция.
Разобравшись, могу уточнить вопрос: как в пхп получить следующее?
t - 116
e - 101
s - 115
t - 116
- 32
т - 1090
е - 1077
с - 1089
т - 1090
|
| |
|
|
|
|
|
|
|
для: LotteB
(06.08.2012 в 16:20)
| | Для этого надо уяснить, что вообще такое utf. Посмотрите эту статью, думаю это как раз нужное. | |
|
|
|
|
|
|
|
для: 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 " - ";
echo ordUTF8(mb_substr( $str, $i, 1, 'UTF-8'));
echo "<br>";
};
|
t - 116
e - 101
s - 115
t - 116
- 32
т - 1090
е - 1077
с - 1089
т - 1090
|
| |
|
|
|