Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Формирование данных для отправки по протоколу TCP 
V
    Опции темы
Loony
Дата 16.5.2008, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 6.12.2007

Репутация: нет
Всего: нет



Добрый день. Необходимо реализовать передачу по протоколу TCP бинарных данных. Данные даны в таком формате:
| Блок 1 (2 байта)| Блок 2 | Блок 3 |
Блок 1 - размер сообщения, Блок 2 - данные, зашифрованные по алгоритму RSA, Блок 3 - цифровая подпись данных, вычисляется по алгоритму RSA

Как подобное реализовать!? С php дело почти не имел, как вообще в нем работать с бинарными данными? Я могу например прочитать файл и передать по сети, а как вручную ввести ключи, которые даны в виде строк, но имеют шестнадцатиричное представление? Есть ли в php готовые реализации RSA для шифрования и цифровой подписи? Буду благодарен за любую помощь!
PM MAIL   Вверх
Fortop
Дата 16.5.2008, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 1
Всего: 42





--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Loony
Дата 16.5.2008, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 6.12.2007

Репутация: нет
Всего: нет



Fortop, спасибо за линк, это я видел. Забыл упомянуть, что у меня имеются ключи в таком виде, для наглядности приведу кусочек кода:

Код

 function read_private_key($filename)
    {
        $xml = simplexml_load_file($filename);
        $key_values['Modulus'] = base64_decode($xml->Modulus);
        $key_values['Exponent'] = base64_decode($xml->Exponent);
        $key_values['P'] = base64_decode($xml->P);
        $key_values['Q'] = base64_decode($xml->Q);
        $key_values['DP'] = base64_decode($xml->DP);
        $key_values['DQ'] = base64_decode($xml->DQ);
        $key_values['InverseQ'] = base64_decode($xml->InverseQ);
        $key_values['D'] = base64_decode($xml->D);
        return $key_values;
    }


То есть, у меня нет в наличии .pem файла с ключем. Для цифровой подписи нужна реализация по формуле: signature = m ^ D mod Modulus. Как видно, даны превычесленные значения алгоритма, которые позволяют использовать так называемую "китайскую теорему об остатке", при этом увеличивается быстродействие. Еще остается открытым вопрос о формировании сообщения, есть подозрение, что нужно использовать "сырые" сокеты, но я не уверен. Люди добрые, откликнитесь, возможно кто-то сталкивался с подобными проблемами. Уже голова кругом!

Это сообщение отредактировал(а) Loony - 16.5.2008, 15:29
PM MAIL   Вверх
Fortop
Дата 19.5.2008, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 1
Всего: 42



Loony
пробуй именно raw sockets больше в PHP с бинарными потоками почти ничего и не работает.

Т.е. открываешь сокет на нужный порт и отсылаешь свои ключи. хочешь побайтово, хочешь одним куском - тебе виднее по требованиям.

Добавлено @ 22:25
Цитата(Loony @  16.5.2008,  13:44 Найти цитируемый пост)
 как вручную ввести ключи, которые даны в виде строк, но имеют шестнадцатиричное представление


Берешь каждые 2ва шестандцатиричных символа, конвертируешь их в десятичные и конвертируешь в байт-символ.

Код

$byte = chr(hexdec('FF')); // FF только для примера, тут у тебя должны подставляться твои два символа.
$stringTosend .= $byte // добавили очередной байт к строке отправки.


Это сообщение отредактировал(а) Fortop - 19.5.2008, 22:25


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Feldmarschall
Дата 19.5.2008, 22:29 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Сеть | Следующая тема »


 




[ Время генерации скрипта: 0.1132 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.