![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
webmax |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 16.9.2010 Репутация: нет Всего: нет |
Я не имел дел с шифрованием, а тут для связи сайта с банком понадобилось сделать две с виду несложных вещи. Прошу помощи:
1. Сформировать переменную NONCE – от 8 до 32 случайным образом сформированных байтов в hex формате. 2. Есть строка:
и есть ключ:
Нужно из них сделать подпись с помощью шифрования алгоритмом HMAC_SHA1. Я сделал вот так:
Выдаёт: 857d471f3660de69a106ad6e214edec38bfc41a7 Но в примере сказано, что должно получиться: FACC882CA67E109E409E3974DDEDA8AAB13A5E48 Привожу выдержку из примера:
|
||||||||
|
|||||||||
Fortop |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 1 Всего: 42 |
Внимательнее относимся
А сколько длина этой строки в байтах? -------------------- Мир это Я. Живее всех живых. |
||||
|
|||||
webmax |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 16.9.2010 Репутация: нет Всего: нет |
а-а-а-а, какая же у меня невнимательность... конечно, скопировал тупо из примера, а там лишние пробелы. Спасибо огромное!
Пока искал ответ на свои вопросы, понял ещё, что перед вставкой $key в функцию шифрования эту переменную нужно предварительно пропустить через:
Второй вопрос полностью решен! По первому вопросу подсказать сможете? Как люди делают от 8 до 32 случайным образом сформированных байтов в hex формате? |
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 1 Всего: 42 |
не в курсе. Можно просто генерить случайное число и конвертировать его А можно, например, вот этим воспользоваться http://www.php.net/manual/en/function.open...seudo-bytes.php там есть и пример -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
webmax |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 16.9.2010 Репутация: нет Всего: нет |
Если сделать так:
это будет похоже на правду? ![]() |
|||
|
||||
webmax |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 16.9.2010 Репутация: нет Всего: нет |
Не, фигню написал я... Распугал ею всех форумчан, наверное
![]() ![]() |
|||
|
||||
webmax |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 16.9.2010 Репутация: нет Всего: нет |
Ребята, подскажите, пожалуйста, хотя бы ответ "да/нет" на следующее:
хекс - это не просто любой набор из символов 0-9А-F, а особым образом упорядоченный? |
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 1 Всего: 42 |
простой набор Добавлено через 39 секунд 111111123AAF FAEEABEAECD1 и т.д. Добавлено через 3 минуты и 8 секунд Лишь один нюанс 1 байт = от 00 до FF в 16тиричной системе (0-255 в 10тичной) -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
webmax |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 16.9.2010 Репутация: нет Всего: нет |
Спасибо! Выходит, что число символов должно быть обязательно четным. В таком случае для моей задачи вполне подойдёт такой вариант:
Я прав? Я писал:
потому что позже понял, что вот это:
то же самое, что просто это:
Проблема в том, что я понятия особого не имею о глубинной сути хекс-формата. Поэтому и пытался использовать именно хексовую функцию bin2hex, надеясь, что если хекс - это не просто любой набор из 0-9А-F, а особым образом упорядоченный, то bin2hex сделает своё дело. Но, к счастью, как оказалось, никакой особой упорядоченности в символах хекса не должно быть ![]() Это сообщение отредактировал(а) webmax - 18.7.2013, 06:42 |
||||||||
|
|||||||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 1 Всего: 42 |
Это просто 16тиричная система исчисления. где все числа должны быть представлены из цифр 0-9 и букв A-F никакой другой сути у нее нет.
запутано и непонятно. Но может подойти Что мешает просто взять 4 случайных числа в диапазоне от 0 до 2^16 сконвертировать их в 16тиричный вид и просто конкатенировать эти четыре строки предварительно выровняв нулями до 4х символов каждую? -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Для профи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |