Создать авторизационный токен для Android с php - PullRequest
0 голосов
/ 05 июня 2019

Я хочу использовать токен аутентификации, после различных поисков я нашел токен JWT и другой метод генерации токена с md5.

По разным причинам я не хочу использовать токен JWT, и мне кажется, что md5имеют плохую репутацию.

Итак, я нашел метод, но мне хотелось бы узнать ваше мнение:

Генерация байтовой строки: https://www.php.net/manual/en/function.random-bytes.php

Затем я преобразую это в шестнадцатеричное.

Наконец, я объединяю это с идентификатором моего пользователя и солью.

Я отправляю это в свое приложение (Android или в Интернет), чем во время запроса к моей службе я декодирую полученный токен,и я увижу токен, содержащийся в идентификаторе, спрятанном в токене.Значит, найти маркер с помощью грубой силы сложнее?

Примечание 1: я хотел бы обновить токен в будущем, но на данный момент он должен быть выдан на неопределенный срок.

Примечание 2: я не хочу использовать библиотеку или фреймворк только в php.

Код:

$bytes = random_bytes(32);
$part=bin2hex($bytes));
$shortpart=substr($part,0,17);
$id = #userid
$salt=#customsalt
$token=shortpart.$id.$salt;

Пример:

$shortpart =f2e4d1f2a2dfedcf5
$id=1
$salt=4d2ze121
$token=f2e4d1f2a2dfedcf514d2ze121

Пользователь или хакер не знает, что id скрыт в токене.

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

После некоторого исследования я думаю, что лучший метод:

$token = bin2hex(openssl_random_pseudo_bytes(32));

И настроить эту строку.

0 голосов
/ 05 июня 2019

Добавьте один столбец в таблице базы данных для времени и рассчитайте authtoken как:

$time = time();

и сохранить его в базе данных.

Шифрование:

$encrypt = base64_encode($time.userid);

дешифрование:

Получить время из таблицы:

  $decrypt = base64_decode($encrypt);

Проверьте эту ссылку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...