| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Для профи > Шифрование, формирование подписи |
| Автор: webmax 15.7.2013, 13:42 | ||||||||
| Я не имел дел с шифрованием, а тут для связи сайта с банком понадобилось сделать две с виду несложных вещи. Прошу помощи: 1. Сформировать переменную NONCE – от 8 до 32 случайным образом сформированных байтов в hex формате. 2. Есть строка:
и есть ключ:
Нужно из них сделать подпись с помощью шифрования алгоритмом HMAC_SHA1. Я сделал вот так:
Выдаёт: 857d471f3660de69a106ad6e214edec38bfc41a7 Но в примере сказано, что должно получиться: FACC882CA67E109E409E3974DDEDA8AAB13A5E48 Привожу выдержку из примера:
|
| Автор: webmax 15.7.2013, 17:53 | ||
| а-а-а-а, какая же у меня невнимательность... конечно, скопировал тупо из примера, а там лишние пробелы. Спасибо огромное! Пока искал ответ на свои вопросы, понял ещё, что перед вставкой $key в функцию шифрования эту переменную нужно предварительно пропустить через:
Второй вопрос полностью решен! По первому вопросу подсказать сможете? Как люди делают от 8 до 32 случайным образом сформированных байтов в hex формате? |
| Автор: Fortop 15.7.2013, 18:26 | ||
не в курсе. Можно просто генерить случайное число и конвертировать его А можно, например, вот этим воспользоваться http://www.php.net/manual/en/function.openssl-random-pseudo-bytes.php там есть и пример |
| Автор: webmax 16.7.2013, 18:23 | ||
Если сделать так:
это будет похоже на правду? |
| Автор: webmax 16.7.2013, 21:50 |
| Не, фигню написал я... Распугал ею всех форумчан, наверное |
| Автор: webmax 17.7.2013, 20:55 |
| Ребята, подскажите, пожалуйста, хотя бы ответ "да/нет" на следующее: хекс - это не просто любой набор из символов 0-9А-F, а особым образом упорядоченный? |
| Автор: Fortop 17.7.2013, 22:39 | ||
простой набор Добавлено через 39 секунд 111111123AAF FAEEABEAECD1 и т.д. Добавлено через 3 минуты и 8 секунд Лишь один нюанс 1 байт = от 00 до FF в 16тиричной системе (0-255 в 10тичной) |
| Автор: webmax 18.7.2013, 06:42 | ||||||||
Спасибо! Выходит, что число символов должно быть обязательно четным. В таком случае для моей задачи вполне подойдёт такой вариант:
Я прав? Я писал:
потому что позже понял, что вот это:
то же самое, что просто это:
Проблема в том, что я понятия особого не имею о глубинной сути хекс-формата. Поэтому и пытался использовать именно хексовую функцию bin2hex, надеясь, что если хекс - это не просто любой набор из 0-9А-F, а особым образом упорядоченный, то bin2hex сделает своё дело. Но, к счастью, как оказалось, никакой особой упорядоченности в символах хекса не должно быть |
| Автор: Fortop 18.7.2013, 11:28 | ||
Это просто 16тиричная система исчисления. где все числа должны быть представлены из цифр 0-9 и букв A-F никакой другой сути у нее нет.
запутано и непонятно. Но может подойти Что мешает просто взять 4 случайных числа в диапазоне от 0 до 2^16 сконвертировать их в 16тиричный вид и просто конкатенировать эти четыре строки предварительно выровняв нулями до 4х символов каждую? |