Php 如何生成用于在线票务服务的安全且唯一的令牌?
我需要一种方法来生成加密安全和唯一的令牌,以便在在线售票服务中使用。在PHP(Laravel)中,我应该考虑哪些问题和最好的实践? < P>试试这个:Php 如何生成用于在线票务服务的安全且唯一的令牌?,php,laravel,cryptography,Php,Laravel,Cryptography,我需要一种方法来生成加密安全和唯一的令牌,以便在在线售票服务中使用。在PHP(Laravel)中,我应该考虑哪些问题和最好的实践? < P>试试这个: bin2hex(random_bytes(64)); PHPbin2hex函数: PHPrandom bytes函数:如果您使用的是Laravel,则内置了一个随机字符串生成器 use Illuminate\Support\Str; $random = Str::random(40); 更多信息 我以前也用过类似的东西,这是一个额外的检查,
bin2hex(random_bytes(64));
PHP
bin2hex函数:
PHP
random bytes函数:如果您使用的是Laravel,则内置了一个随机字符串生成器
use Illuminate\Support\Str;
$random = Str::random(40);
更多信息
我以前也用过类似的东西,这是一个额外的检查,以确保令牌以前没有被使用过。可能性很低,几乎没有必要这样做
$findKey = function() {
$proposed = Str::random(40);
if (Thing::where('token', $proposed)->count() === 0) {
return $proposed;
}
$findKey();
};
$this->token = $findKey();
$this->save();
独一无二的代币?安装
- 在MySQL中,一个整数(11)无符号主键可以容纳大约40亿行。这等于32位
- 如果从加密安全的伪随机数生成器生成9个原始字节(可能值的72位),然后将结果base64,最终将得到一个12个字符的标识符
- 根据生日问题,72位可能值意味着在2**36条记录上发生碰撞的可能性为50%
注意:这只是为了回答问题,向下滚动查看更多方法
Laravel内置提供函数,为我们提供
uuid
,因此您可以使用该函数。
这里有一个例子
use Illuminate\Support\Str;
return (string) Str::uuid();
这里是JWT Auth令牌的参考
我认为这是我拥有的最安全、最独特的令牌生成器。每次登录系统时,它都会为一个人生成不同的令牌
JWT Auth token from您可以使用unix时间戳。您可以从@zahidhasanemon获得帮助您指的是每次迭代递增一次的unix时间戳。这是你能选择的最少的加密系统你说的“加密安全”是什么意思?您试图阻止攻击者做什么?
use Illuminate\Support\Str;
return (string) Str::uuid();