使用PHP为Android创建身份验证令牌

时间:2019-06-05 12:24:52

标签: php android token

我想使用身份验证令牌,经过各种搜索后,我发现了JWT令牌和另一种使用md5的令牌生成方法。

出于各种原因,我不想使用令牌JWT,在我看来md5的信誉不好。

所以我找到了一种方法,但是我想请您发表意见:

生成字节字符串:https://www.php.net/manual/en/function.random-bytes.php

然后我将其转换为十六进制。

最后,我将其与用户ID和Salting连接起来。

我将其发送到我的应用程序(Android或Web),而不是在对服务的请求期间对接收到的令牌进行解码,然后我将看到包含在ID中的令牌隐藏在令牌中。 因此,很难通过蛮力找到令牌吗?

注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 :(得分:0)

在数据库表中为时间添加一列,并将authtoken计算为:

$time = time();

并将其存储到数据库中。

加密:

$encrypt = base64_encode($time.userid);

解密:

从表中获取时间:

  $decrypt = base64_decode($encrypt);

检查this链接。

答案 1 :(得分:0)

经过研究,我认为更好的方法是:

$token = bin2hex(openssl_random_pseudo_bytes(32));

并自定义此字符串。