t3g1ng
@t3g1ng

Как тут выполняется хеширование в md5?

Появилась необходимость частично переписать API под python, с сайта etxt.ru:
https://www.etxt.ru/api/
Встряли с другом на моменте и не поймём как хешируется пароль. Весь код:
<?

$auxParamsArr = [
    'name'      => 'Folder Name',
    'id_parent' => 0
];

$json = makeRequest("folders.addFolder", $auxParamsArr);
print_r($json);


function makeRequest($method, $auxParamsArr) {

    $api_url = "https://www.etxt.ru/api/json/";
    $api_pass = "XXXXXXXXXXXXX";
    $token = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

    $baseParamsArr = [
        'token'  => $token,
        'method' => $method
    ];

    ksort($baseParamsArr);

    $params = "";
    foreach($baseParamsArr as $key => $val)
        $params .=  ($key . "=" . $val);

    $sign = md5($params.md5($api_pass.'api-pass'));

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $api_url."?token=".$token."&method=".$method."&sign=".$sign);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($auxParamsArr));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 15);
    $json = curl_exec($ch);
    curl_close($ch);

    return $json;
}


Момент на котором возникла заминка:
$baseParamsArr = [
        'token'  => $token,
        'methodу' => $method
    ];

    ksort($baseParamsArr);

    $params = "";
    foreach($baseParamsArr as $key => $val)
        $params .=  ($key . "=" . $val);

    $sign = md5($params.md5($api_pass.'api-pass'));

Не пойму как работает массив:
$baseParamsArr
И что делает token, т.к от сайта уже передаётся хешированный токен и сортировать его нет смысла:
ksort($baseParamsArr);
И зачем там нужен method, если значение method меняется в зависимости от требуемых задач API:
'methodу' => $method

Всех заранее благодарю за ответы :3
  • Вопрос задан
  • 168 просмотров
Пригласить эксперта
Ответы на вопрос 1
rpsv
@rpsv
делай либо хорошо, либо никак
Построчно:
1. инициализация массива $baseParamsArr
2. сортировка по ключам
3. конкатенация массива
4. хеширование подписи

Эта подпись контролирует валдиность запроса, поэтому в ней все содержимое запроса. Если подсунуть другие/лишние параметры - то подпись будет невалидной.

В чем вопрос-то?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы