![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Prontit |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 19.10.2011 Репутация: 1 Всего: 1 |
Здравствуйте!
GETом приходит строка запроса, необходимо ее проверить на подлинность строка, например, такая action=check&number=100001&amount=10.50&type=1&sign=5EB7E68A5140BC62FB1A50EAF1A589FD8B40B239B31B6AEE799C9DA1F396144F79DDC2D4332E655D3D0DE60E9BE3BF5EB62E026766554AAF7A0B7201E0BACA1A68E12FD12F32016CD48E452D76D3136078AB53BD878B23D88BCB705C5C9406184E0D6264D3D3709ECBDDA994EB5CAE8F81C2A64FC015C20572598B56DD58F689 нужно использовать rsa+sha1, делаю так:
Наверняка делаю какую-то глупость, первый раз с этим сталкиваюсь. Есть пример реализации на Perl
вот собственно и проблема. необходимо реализовать такую штуку на PHP. делал по примеру http://www.php.net/manual/en/function.openssl-sign.php, но почему то не выходит ничего. Далее нужно будет самому подписывать сообщение закрытым ключом..., но сейчас хотя бы с этим разобраться. Заранее благодарю за помощь! |
||||
|
|||||
Prontit |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 19.10.2011 Репутация: 1 Всего: 1 |
вопрос настолько сложный/легкий или я что-то совсем не так делаю?
![]() Это сообщение отредактировал(а) Prontit - 14.12.2011, 11:54 |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
не работал с opensll настолько.
Мне кажется, что public_key обязан быть бинарной строкой, а он текстовый. Вероятно, его для передачи упаковали base64. Нужно декодировать. В Перловом примере public key берется из сертификата специальной функцией. Так что перевод на другой язык произведен не совсем корректно -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
Prontit |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 19.10.2011 Репутация: 1 Всего: 1 |
попробовал base64_decode, получилась белеберда из ключа "@зAP9уСCр4mэ}Aи" даже не знаю в какую сторону копать ![]() |
|||
|
||||
bars80080 |
|
||||||||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
вообще, из документации
http://ru2.php.net/manual/ru/function.openssl-verify.php int openssl_verify ( string $data , string $signature , mixed $pub_key_id [, int $signature_alg = OPENSSL_ALGO_SHA1 ] ) по аналогии с функциями с private ключом, видно, что должен передаваться всё-таки некий id ниже пример:
судя по документации http://ru2.php.net/manual/ru/function.open...-get-public.php (синоним openssl_get_publickey) id можно получить тремя способами:
хотя в конце явно опечатка. стопудово там должен быть public key. впрочем проверить стоит оба однако, меня удручает один комментарий ниже:
так что мне будет интересно, какие результаты получит топикстартер Это сообщение отредактировал(а) bars80080 - 14.12.2011, 13:50 |
||||||||
|
|||||||||
Prontit |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 19.10.2011 Репутация: 1 Всего: 1 |
Что-то пока никаких движений...даже не знаю в какую сторону копать. Вообще нет материалов на эту тему...
|
|||
|
||||
Prontit |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 19.10.2011 Репутация: 1 Всего: 1 |
взял за основу вот этот пример
Вроде бы рабочий пример. Вставил туда свои ключи, и все работать перестало... Все тоже самое, только длина ключа отличная (1024), но я не вижу в этом проблемы, так как ни где не вижу привязки именно к длине... |
|||
|
||||
Prontit |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 19.10.2011 Репутация: 1 Всего: 1 |
все работает с моими ключами, косяк глупый был в коде.
мне кажется что проблема в сигнатуре. Они мне ее передают в виде
|
||||
|
|||||
Prontit |
|
||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 19.10.2011 Репутация: 1 Всего: 1 |
Не получается перекодировать строку из шестнадцатеричной в бинарную. Делаю так:
в ответ получаю
получается перекодировать только 16 символов.
ответ
что я делаю не так? |
||||||||
|
|||||||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
потому что это не число, а строка. сами подумайте, какая может быть разрядность у числа с таким числом знаков
|
|||
|
||||
Prontit |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 19.10.2011 Репутация: 1 Всего: 1 |
верно. а каким образом перекодировать строку? |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
а что вы хотите получить?
если набор байтов, то посмотрите функцию pack(), модификатор a* по-моему |
|||
|
||||
Prontit |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 19.10.2011 Репутация: 1 Всего: 1 |
Большое спасибо! Разобрался! Все работает! Если кому-то интересно, могу выложить код с подробными комментариями, может пригодится. Всем спасибо за помощь!!! Тему можно закрывать! |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
||||
|
||||
Prontit |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 19.10.2011 Репутация: 1 Всего: 1 |
В общем задача была такая: приходит GET запрос с различными параметрами, последний из которых sign, в нем передается сама подпись. Используется алгоритм RSA + SHA1. Необходимо вытащить строку и проверить ее открытым ключом.
Код совсем не сложный, но получилось далеко не с первой попытки. Надеюсь кому-нибудь пригодится. Еще раз спасибо за помощь! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |