Последовательное слияние хексографических представлений MD5 хэшей частей строки

12
anser06
На сайте с 11.03.2006
Offline
276
990

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

Вводные данные:

pass2 - Хэш строки, полученной слиянием дополнительного пароля1 и даты формирования запроса (параметр date).

В качестве хэша строки (параметр pass2) следует передавать строку, представляющую собой последовательное слияние хексографических представлений MD5 хэшей частей этой строки, разбитой по 16 байт (в кодировке utf-8).

Кто поможет понять логику требуемого действия?

Polkan
На сайте с 28.09.2005
Offline
102
#1
anser06:
Подключаю сайт к одному биллингу, саппорт ответит в лучшем случае через сутки, вдруг тут найдутся сообразительные и подскажут, как сделать.
Вводные данные:
pass2 - Хэш строки, полученной слиянием дополнительного пароля1 и даты формирования запроса (параметр date).
В качестве хэша строки (параметр pass2) следует передавать строку, представляющую собой последовательное слияние хексографических представлений MD5 хэшей частей этой строки, разбитой по 16 байт (в кодировке utf-8).

Кто поможет понять логику требуемого действия?

Я бы понял это так:

взять строку в utf-8 пароль+дата

разбить ее на куски по 16 байт

для каждого куска посчитать md5

слепить строку из полученных md5 хэшей

WordPress-плагин для Apishops (http://p-api-shop.ru/) P-API-Shop WooCommerce-плагин для Apishops (http://woo-apishops.ru/) Woo-Apishops
Оптимизайка
На сайте с 11.03.2012
Offline
396
#2

два варианта, либо

$hash = md5($pass1 + $date)

либо

$hash = md5($pass1) + md5($date)

ну а вообще конечно такого тех. писателя я б уволил :D

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
dkameleon
На сайте с 09.12.2005
Offline
386
#3
anser06:
В качестве хэша строки (параметр pass2) следует передавать строку, представляющую собой последовательное слияние хексографических представлений MD5 хэшей частей этой строки, разбитой по 16 байт (в кодировке utf-8).

мало того, что этот алгоритм ущербный, так ещё и "текст немного по-дебильному написан" :)

я понимаю это так:

1. берем строку pass1+date

2. разбиваем на блоки по 16 байт (а не символов)

3. считаем хэши каждого блока.

4. собираем хэши (в шестнадцатеричной форме) в строку, конкатенацией.

Дизайн интерьера (http://balabukha.com/)
L
На сайте с 10.02.2015
Offline
221
#4

То ли я не понимаю, чего хочет автор ТЗ, то ли автор ТЗ не умеет правильно выражать свои мысли.

LEOnidUKG
На сайте с 25.11.2006
Offline
1722
#5
2. разбиваем на блоки по 16 байт (а не символов)

А это как и зачем?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
anser06
На сайте с 11.03.2006
Offline
276
#6

Уточнение саппорта:

По нашим данным, затруднение связано с тем, что Вы передаете некорректный хэш строки, то есть Вы получаете MD5 хэш всей строки, а его необходимо делить на части, как описано в пункте 2.3.
Просим Вас придерживаться алгоритма, описанного в технической документации.

Также обращаем Ваше внимание, что хэш необходимо передавать в верхнем регистре, то есть заглавными буквами, а не строчными. При передаче pass также следует использовать верхний регистр.
L
На сайте с 10.02.2015
Offline
221
#7

Мля, скажи, пусть пришлют пример, если их не затруднит, а то это какой-то ребус.

Polkan
На сайте с 28.09.2005
Offline
102
#8

Наверное очень хороший биллинг, раз для подключения нужно пройти такой тест.

Возможно, это только первая его ступень... ))

dkameleon, ну хэши-то стандартно и есть в hex

LEOnidUKG, символы в utf8 м.б. от 1 до 6 байт, подозреваю, что они не задумываясь написали "байт" вместо "символ", иначе надо перевести все в binary (http://php.net/manual/en/function.utf8-encode.php) разбить по 16 байт, потом перевести обратно в utf-8 (при этом неизвестно что получится) и взять md5. Не верится, что они сделали такой адовый алгоритм.

anser06
На сайте с 11.03.2006
Offline
276
#9

Всем за помощь большое спасибо.

Итоговый правильный вариант такой:

$pass2 = 'парольдата'; // выходит 31 символ
// т.к. содержит латиницу, цифры и т.п. получается 1 байт = 1 символ
// разбиваем по 16 знаков:
$pass2_1 = md5(mb_substr($pass2, 0, 16, 'utf-8'));
$pass2_2 = md5(mb_substr($pass2, 16, 32, 'utf-8'));
// в верхний регистр также оказывается нужно переводить:
$pass2 = mb_strtoupper($pass2_1.$pass2_2);
LEOnidUKG
На сайте с 25.11.2006
Offline
1722
#10

anser06, прошу вас. Скажите, что за билинг такой. Для всех, чтобы никогда в жизни с ним не связываться.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий